14. oktober 2005 - 17:09Der er
37 kommentarer og 1 løsning
Andre hovedside i photoalbum bygget i PHP/MySQL (radio og submit)
Er ny her samt ud i PHP/MySQL. Har med hjaelp faaet opbygget et online fotoalbum hvor besoegende paa hovedsiden under hver kategorie kan vaelge et underomraade. I den nuvaerende udgave benyttes 'submit' og 'radio' buttons - det er det jeg om muligt gerne vil ha aendret til rene tekst links (i stil med det normale <a href="">bla bla</a>)
Nogen der kan hjaelpe mig?
Her er den kode jeg benytter:
Koden til main.php <?php include("functions_main.inc"); $n_per_page = 1;
Koden er rettet og lagt op. Nu er der links - det var foerste skridt! Hvis du kigger paa siden og proever de links saa sker der ikke det store - nogen ideer til naeste skridt?
har rettet alle $_POST[interest]til: $_GET["site"]
kommer saa frem med foelgende fejlbeskrivelse:
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/arrevad/arrevad.com/main.php on line 34
i filen main.php er det linien: sub='$_GET["site"]' ORDER BY name";
Ret linien: "SELECT * FROM photos WHERE sub='$_POST[interest]' ORDER BY name"; til: "SELECT * FROM photos WHERE sub='".$_GET["site"]."' ORDER BY name";
Er ny ud i PHP/MySQL og koden er oprettet med stor hjaelp fra et eksempel.
Min database har bl.a. disse kategorier: - id (1,2,3,.....,n) - name (tilfaeldigt navn) - added_date (dato) - country (ex. fiji, australien..... - sub (underomraader af landene ex naviti, kakadu....) - pix (photo navn ex 1.jpg)
saa bruger country til at bestemme hvilket land brugeren oensker at se billeder fra (som du ser paa siden skriver scriptet foerst navnet paa landene og lister efter hver enkelt de respektive underomraader (sub) som findes i databasen for de enkelte lande)
fandt forresten ud af i gaar at serveren ikke understoetter mysqli saa har rettet i din nye kode saaledes at den lyder (slettet i'et og byttet om paa raekkefoelgen i $result = mysql_query($query_photos,$connect) ......)
det kan godt vaere jeg ikke kan gn.skue din kode men mangler du ikke hele delen med
.... $query = "SELECT DISTINCT country,sub FROM photos ORDER BY country,sub"; .... include("fields_index_page.inc"); include("catalog_index_page.inc"); ...
det er jo hovedsiden hvor undersiderne er listet som links og hvor brugeren saa traeffer valget om hva man oensker at se. Denne side skal vel komme frem saafremt man endnu ikke har truffet et valg?
Jeg har forsoegt at forklare hva der sker i den oprindelige kode (det foerste indlaeg - main.php) Haaber det kan hjaelpe - ellers skriv igen og jeg maa se om jeg kan forklare bedre! :)
<?php include("functions_main.inc"); /*kontakt tl MySQL databasen*/ $n_per_page = 1; /* antal af fotos paa hver side*/
if(isset($_POST['Country'])) /*en if statement der udfoeres hvis brugeren klikker paa submit knappen kaldet Country*/ { if(!isset($_POST['interest'])) /*en if statement der udfoeres hvis brugeren IKKE vaelger en 'sub' hovedsiden vises igen*/ { header("location: main.php"); exit(); } else /*en else statement der udfoeres hvis brugeren valgte en 'sub'*/ { if(isset($_POST['n_end'])) /*en if statement der udfoeres hvis dette IKKE er den foerste side vist - tjekker hvilken knap (radio button) der er valgt...*/ { /*...hvis 'Previous' (submit knap) var trykket paa, $n_start er sat tilbage til begyndelsen af den forrige side..."/ if($_POST['Country'] == "Previous") /*....Hvis 'Next' (submit knap) er trykket paa, $n_start er sat til fotoet efter det sidste foto vidst paa den seneste side*/ { $n_start = $_POST['n_end']-($n_per_page); } else { $n_start = $_POST['n_end'] + 1; } } else /*begynder en else block der udfoeres hvis det er foerste gang foto siden vises - saetter n_start til vaerdien 1*/ { $n_start = 1; }
$n_end = $n_start + $n_per_page -1; /*saetter $n_end til $n_start plus antallet af billeder der skal vises paa siden minus 1*/
$connect = connect_to_db("Vars.inc"); /*naeste tre linier opbygger og udfoere en query der faar information om fotos tilbage... */ $query_photos = "SELECT * FROM photos WHERE /*....for alle fotos i en valgte sub*/ sub='$_POST[interest]' ORDER BY name";
$result = mysqli_query($connect,$query_photos) /**/ or die ("query_photos: ".mysqli_error($connect));
$n=1; /*de efterfoelgende linier bygger en array kaldet country der indeholde alle de valgte foto info*/ while($row = mysqli_fetch_assoc($result)) { foreach($row as $field => $value) { $country[$n][$field]=$value; } $n++; } $n_country = sizeof($country); /*saetter $n_country til antallet af billeder i kategorien*/ if($n_end > $n_country) /*begynder en if statement der sikre at $n_end er hoejere end antallet af billeder...*/ { /*....hvis $n_end er hoejere end det totale nummer af billeder - $n_end er sat til det sidste billede*/ $n_end = $n_country; } include("fields_products_page.inc"); /*foelgende to linier inkludere products siden (hvor fotos vises)*/ include("catalog_product_page.inc"); } }
else /*starter en else block der udfoeres hvis sub knappen ikke var klikket paa. Enten ingen knap eller hvis 'to main page'.. '*/ { /*var klikket paa (fra fotovisningssiden). Blocken viser hovedsiden hvor sub vaelges fra.*/ $cxn = connect_to_db("Vars.inc"); /*de efterfoelgende linier udfoerer en query der faar information om alle 'sub' i databasen*/ $query = "SELECT DISTINCT country,sub FROM photos ORDER BY country,sub"; $result = mysqli_query($cxn,$query) or die ("Couldn't execute query. ".mysqli_error($cxn)); while($row = mysqli_fetch_array($result)) /*de naeste linier skaber en array af sub kategorier*/ { $photo_categories[$row['country']][]=$row['sub']; } include("fields_index_page.inc"); /*hovedsiden vises*/ include("catalog_index_page.inc"); } ?>
Jeg tror måske vi skal bygge det op helt forfra! F.eks. kunne du starte med koden som laver links. Måske der skal tilføjes: echo "<a href=\"".$_SERVER["PHP_SELF"]."?country=".$key."&interest=".$type."\"><b>" . $type . "</b></a>\n";
Og prøv så at ret: if(isset($_POST['Country'])) til: if(isset($_GET['country']))
Ligeledes kan du se jeg har rettet $_GET['site'] tilbage til dit oprindelige navn: $_GET['interest']
Nu sker der noget - ikke at det virker helt men fremskridt! :)
som du kan se paa siden (main.php) er der nu links og de virker problemmet er nu at siden kommer frem men der er ingen billeder, inegn frem og tilbage knap, ingen beskrivelse, dato ect....
samt at optaellingen af billeder i kategorien ikke funger men paa alle siderne staar til 1.
Stort set alle steder hvor du nu har: $_POST skal vi have rettet til $_GET Og vi skal så have rettet så vi sender de korrekte info videre...
F.eks. dette: if($n_end > $n_per_page) { echo "<input type='submit' name='Country' value='Previous'>"; } echo "</td>"; echo "<td width=25%>"; if($n_end < $n_country) { echo "<input type='submit' name='Country' value='Next'>"; } Det fjerner vi jo ved at begynde og bruge links og $_GET
Har rettet alle $_POST til $_GET - var der nogen der ikke skulle rettes (du skrev: Stort set alle steder hvor du nu har: $_POST skal vi have rettet til $_GET)?
hvilken kode skal der staa i stedet for:
{$country[$i]['country']}|
$n_country
{$country[$i]['pix']}
{$country[$i]['description']}
{$country[$i]['added_date']}
og hvorledes faar vi en navigationsmetode ind til at bladre til naeste / forrige billede?
vil det goere det mindre kompliceret hvis jeg beholder 'submit' knapperne paa selve fotosiden saa det kun er paa hovedsiden de skal vaek? Det kan jeg sagtens leve med.
$connect = connect_to_db("Vars.inc"); $sub = mysql_escape_string($_GET["interest"]); $query_photos = "SELECT * FROM photos WHERE sub='".$sub."' ORDER BY name";
$result = mysqli_query($connect,$query_photos) or die ("query_photos: ".mysqli_error($connect));
er det her problemmet ligger? at info fra hovedsidens 'radio' og 'submit' knapper ikke laengere overfoeres til billedesiden hvor det valgte nu ligger i:
<?php echo "<form action='$_SERVER[PHP_SELF]' method='POST'>\n"; foreach($photo_categories as $key => $subarray) { echo "|$key|"; foreach($subarray as $type) { echo "<input type='radio' name='interest' value='$type' style='display:none'><a href=\"#\" onclick=\"chkImg('interest')\">$type</a>\n"; } } echo "<input type='submit' name='Country' value='view' style='display:none'>\n</form>\n"; ?> ------------------------------------------------------------------------------- altsaa skjule 'radio' kanpperne og bruge et javascript istedet for 'submit'.
Kan ikke lige faa d t at funge - i statusbaren kommer medl. 'error on page' naar det klikkes paa de fremskabte links (se evt. www.arrevad.com/main.php)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.