Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

PHP/msyql vraag mbt fotoalbum

Anoniem
rolla
4 antwoorden
  • [code:1:7307cb8369]
    <?php

    $gallery = $_GET['gallery'];

    include ('config.php');

    mysql_pconnect("$host","$user","$password");

    mysql_select_db("$db");

    //De titel van een fotoserie uit de database ophalen
    $result3 = mysql_query("select omschrijving from gallery where galerij=$gallery")or die(mysql_error());

    while($r=mysql_fetch_array($result3)) {

    $titel = $r["omschrijving"];

    }

    ?>

    <table width="600" border="0" cellpadding="0" cellspacing="0">
    <!–DWLayoutTable–>
    <tr>
    <td width="600" height="67" valign="top"><p align="center"><br>
    <?php echo htmlspecialchars($titel); ?> <br>
    <img src="layout/oranjebalk.gif" width="600" height="1"></p></td>
    </tr>
    <tr>
    <td height="409" valign="top">

    <?php


    //Vraag het aantal items op
    $result = mysql_query("select count(id) from fotos")or die(mysql_error());

    //Het totaal aantal items
    $items_totaal = mysql_result($result, 0);

    //Geef het resultaat vrij
    mysql_free_result($result);

    //Het aantal items dat per pagina wordt weergegeven
    $items_per_pagina = 10;

    //Het aantal benodigde pagina's berekenen. Ceil rond het getal naar boven af.
    $aantal_paginas = ceil($items_totaal / $items_per_pagina);

    //De huidige pagina opvragen
    $huidige_pagina = 0; //De huidige pagina standaard op 0 zetten
    if(isset($_GET['sub']) && is_numeric($_GET['sub']) && $_GET['sub'] > 0 && $_GET['sub'] < $aantal_paginas) {
    $huidige_pagina = $_GET['sub'];
    }

    //Items van de huidige pagina ophalen
    $offset = $huidige_pagina * $items_per_pagina;


    //De variabelen voor de tabel
    $aantal_kolommen = 5; //Om 5 foto's weer te geven op een rij
    $kolom_breedte = 75; // in pixels
    $huidige_kolom = 0;

    echo "<table width=$aantal_kolommen * $kolom_breedte border=0>";

    $result2 = mysql_query("SELECT fotos.id, fotos.galerij, fotos.filenaam, fotos.omschrijving, gallery.dir
    FROM fotos, gallery WHERE fotos.galerij=gallery.galerij AND gallery.galerij='$gallery' ORDER BY id ASC LIMIT ".$offset.","
    .$items_per_pagina) or die(mysql_error());

    while($r=mysql_fetch_array($result2)) {

    $id = $r["id"];

    $galerij = $r["galerij"];

    $omschrijving = $r["omschrijving"];

    $filenaam = $r["filenaam"];

    $omschrijving = $r ["omschrijving"];

    $dir = $r ["dir"];

    $foto = $dir.$filenaam;


    if ($huidige_kolom == 0) {

    echo "<tr>";

    }
    echo "<td width=\"$kolom_breedte\"><a href=javascript:popup(\"toonfoto.php?&waarde=$foto\")><img src=\"$foto\" width=100 height=75></a></td>";

    //Verhoog $huidige_kolom
    $huidige_kolom++;

    if ($huidige_kolom == $aantal_kolommen) {

    echo "</tr>";
    $huidige_kolom = 0;
    }
    }
    echo "</table>";

    mysql_free_result($result2);

    echo "<center>";
    //Maak hier de navigatielinks
    for($i = 0; $i < $aantal_paginas; $i++) {
    if($huidige_pagina == $i) {
    // huidige pagina is niet klikbaar
    echo "<b>".($i+1)."</b>";
    } else {
    // een andere pagina dan de huidige is wel klikbaar
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=thumbs&sub=".$i."\">".($i+1)."</a>";
    }
    // deel-streepje tussen alle items
    if($i < $aantal_paginas - 1) {
    echo " - ";


    }
    }
    echo "</center>";

    ?>


    &nbsp;</td>
    </tr>
    </table>

    [/code:1:7307cb8369]

    Als ik de code lokaal verwerk (op eigen pc) krijg ik ondrstaande foutmelding:

    [i:7307cb8369]Notice: Undefined index: gallery in C:\Xitami\webpages\rds\site\thumbs.php on line 3
    You have an error in your SQL syntax near '' at line 1[/i:7307cb8369]

    Als ik de code verwerk op mijn site. Dan krijg ik de volgende foutmelding:

    [i:7307cb8369]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1[/i:7307cb8369]

    Ik zal in het kort even uitleggen wat de bedoeling is.

    Ik heb een fotopagina met daar op verschilllende links naar diverse fotoseries. De pagina wordt uit de database gehaald. Als een gebruiker een serie aan klikt gaat dat via de volgende link:
    [code:1:7307cb8369]
    <a href=?page=thumbs&gallery=$gallery>
    [/code:1:7307cb8369]

    Er wordt dus een pagina thumbs geladen die alle foto's die bij de betreffende serie hoort gaat laden. Hij weet welke hij moet laden door de variabele gallery. Deze wordt op de thumbs pagina opgehaald d.m.v.

    [code:1:7307cb8369]
    $gallery = $_GET['gallery'];
    [/code:1:7307cb8369]

    De php versies:
    Mijn PC => PHP Version 4.3.10
    Internet => ?????
    MySQL PC => volgens mij 3.23.51
    MySQL internet => MySQL 4.1.15

    Ik hoop dat iemand het probleem ziet.
  • Er kan zoveel mis zijn:
    $gallery kan leeg zijn. Dan staat er achter het =-teken niets en dat mag niet.
    Afgezien daarvan ligt dit wel erg open voor SQL-injection (google daar maar s op). En zet t in ieder geval tussen enkele qoutes ( ' ).

    Ook zou het pas in een later SQL-statement mis kunnen gaan.
    Volgens mij kan ORDER BY id ASC LIMIT ".$offset."," .$items_per_pagina
    niet kloppen.

    Output ook eens wat meer debug-informatie. Zet in je die() ook je $sql (door m eerst apart te definieren) en plaats __LINE__ daarin. Dan kan je zien op welke regel in het script het mis gaat.
    Nu is het maar gokken voor ons.
  • Volgens mij heb ik het probleem opgelost

    Deze regel heb ik aangepast:

    [i:58e1c0b4a2]echo "<a href=\"".$_SERVER['PHP_SELF']."?page=thumbs&gallery=$gallery&sub=".$i."\">".($i+1)."</a>";[/i:58e1c0b4a2]

    Er stond eerst [i:58e1c0b4a2]?page=thumbs&sub=[/i:58e1c0b4a2]

    Dat SQL-injection ga ik nog even naar kijken.

    Bedankt voor het meedenken.

    EDIT: toch gaat er nog iets fout. Als ik 150 foto's heb en ik wil 30 per pagina weer geven dan zal ik 5 pagina's moeten krijgen.

    Ik heb er nu 10 pagina's staan waarvan er 5 leeg zijn.

    Zie www.racingteamdesikken.nl/site/index.php?page=thumbs&gallery=5
  • Dat komt omdat je query waarmee je ophaalt hoeveel fotos er zijn (ids) niet klopt. Deze moet met dezelfde WHERE-clause als de latere query.

    Het is overigens handiger om al deze querys in een te zetten. Dat scheelt iets tijd (maar heel weinig overigens) maar vind ik wel mooier.
    \\edit: Na het schrijven van een heel verhaal ik zie nu dat dit bij jou niet van toepassing is; je zou teveel moeten veranderen.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.