tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
311
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Zimtgruen
    Zimtgruen Zimtgruen ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    155
    ich habe hier folgenden Code:
    PHP-Code:
    <?php   
    $anzeigen
    =1//Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen
    if($_GET['vor']){$start=$_GET['start']+$anzeigen;}
    elseif(
    $_GET['back']){$start=$_GET['start']-$anzeigen;}
    else{
    $start=0;}
    //Auslesen der Einträge
    $tabellenname="gmensch";
    $sql="SELECT ID, Bild, titel FROM $tabellenname LIMIT $start , $anzeigen"
                                                    
    // nur bestimmte Einträge anzeigen
    // Verbindung zur Datenbank 
    $link mysql_connect("localhost""benutzername""passwort");
    mysql_select_db("datenbank"$link);
    $result mysql_query($sql$link);
    for(
    $i=0;$i<mysql_num_rows($result);$i++)
    {
    $row=mysql_fetch_array($result);
    echo 
    "<b>".$row['titel']." </b><br><br><img src=\"".$row['Bild']."\"><p><br>";
    }              
    //Ermitteln, wie viele Einträge vorliegen
    $sql1="SELECT COUNT(*) FROM $tabellenname ";
    $result1 mysql_query($sql1$link);
    $maxmysql_result($result1,0,0);
    //Ausgeben der Links vor und zurück     
    ?><table border="0"><tr><td align="left"><?php
    if($start>=$anzeigen)
     echo 
    "<a href=\"".$_SERVER['PHP_SELF']."?start=".$start."&back=1\">Zurück</a>";
    echo 
    "</td><td align=\"right\">";
    if(
    $start<$max)
     echo 
    "<a href=\"".$SERVER['PHP_SELF']."?start=".$start."&vor=1\">Weiter</a>";
    ?> </tr></table>
    Den wollte ich jetzt so umstellen, dass die beiden Links "Zurück" und "Weiter" links und rechts vom Titel des Bildes erscheinen, das sieht im Code jetzt so aus:
    PHP-Code:
    <?php   
    $anzeigen
    =1//Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen
    if($_GET['vor']){$start=$_GET['start']+$anzeigen;}
    elseif(
    $_GET['back']){$start=$_GET['start']-$anzeigen;}
    else{
    $start=0;}
    //Auslesen der Einträge
    $tabellenname="gholland";
    $sql="SELECT ID, Bild, titel FROM $tabellenname LIMIT $start , $anzeigen"
                                                    
    // nur bestimmte Einträge anzeigen
    // Verbindung zur Datenbank 
    $link mysql_connect("localhost""benutzername""passwort");
    mysql_select_db("datenbank"$link);
    $result mysql_query($sql$link);
    for(
    $i=0;$i<mysql_num_rows($result);$i++)
    //Ermitteln, wie viele Einträge vorliegen
    $sql1="SELECT COUNT(*) FROM $tabellenname ";
    $result1 mysql_query($sql1$link);
    $maxmysql_result($result1,0,0);
    //Ausgeben der Links vor und zurück     
    ?><table border="0"><tr><td align="left"><?php
    if($start>=$anzeigen)
     echo 
    "<a href=\"".$_SERVER['PHP_SELF']."?start=".$start."&back=1\">Zurück</a>";
    echo 
    "</td><td align=\"center\">";
    {
    $row=mysql_fetch_array($result);
    echo 
    "<b>".$row['titel']." </b></td><td align=\"right\">";

    if(
    $start<$max)
     echo 
    "<a href=\"".$SERVER['PHP_SELF']."?start=".$start."&vor=1\">Weiter</a></td></tr></table>";
    {
    $row=mysql_fetch_array($result);
    echo 
    "<br><br><img src=\"".$row['Bild']."\"><p><br>"
    }            
    ?>
    Jetzt wird das Bild aber nicht mehr angezeigt, kann mir jemand evtl. sagen warum?
    Danke schonmal
     
    Übung macht den Meister, oder etwa nicht?!

  2. #2
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    ich würde sagen, da ist ein $row=mysql_fetch_array($result); zu viel. Du liest den Datensatz doch schon für den Titel aus.

    LG
     

  3. #3
    Avatar von Zimtgruen
    Zimtgruen Zimtgruen ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    155
    Vielen Dank, allerdings erscheint jetzt folgende Warnung, wenn man beim letzten Bild auf Weiter klickt: Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /var/www/web87/html/gsonst.php on line 36

    betreffende Zeile ist folgende:
    PHP-Code:
    $maxmysql_result($result1,0,0); 
    kann man das nicht irgendwie so machen, dass beim letzten Bild gar kein weiter mehr erscheint, so wie es beim ersten Bild auch kein Zurück gibt?
     
    Übung macht den Meister, oder etwa nicht?!

  4. #4
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    das liegt daran, dass Du den Code durch das Umstellen ziemlich verstümmelt hast. Du musst da mal etwas genauer hinschauen, was Du da machst, bzw. mal ein wenig PHP-Grundlagen lernen.
    Du hast offensichtlich einfach den Rumpf der for-Schleife mitsamt der Klammern ausgeschnipselt und woanders hingeklatscht (und zwar da, wo die Klammern schonmal keinen Sinn mehr machen, aber egal). Den Schleifenkopf hast Du einfach stehenlassen, obwohl Du, da Du ja immer nur einen Datensatz liest, gar keine Schleife brauchst. Fehlt die Klammerung, heisst das, der Schleifenrumpf besteht genau aus der nächsten Anweisung, also der Zuweisung an $sql1, die vorher überhaupt nicht in der Schleife stand und da auch nichts verloren hatte. Weil es aber gar kein Bild mehr gibt, wird der Schleifenrumpf gar nicht ausgeführt, heisst: Du schickst einen leeren String an den MySQL-Server. Klar gibt das keine gültige Resource.
    Den "Weiter"-Link kannst Du unterdrücken, indem Du die Bedingung anpasst. Da das LIMIT-Offset bei z.B. 15 Datensätzen von 0-14 geht, SELECT COUNT(*) aber 15 liefert, muss das natürlich so aussehen:

    PHP-Code:
    if($start $max 1
    Es wäre wirklich besser, wenn Du erstmal so weit die Grundlagen lernst, dass Du so ein kleines Script alleine schreiben kannst, bevor Du Dir andere Scripte ziehst und versuchst anzupassen.

    LG
     

  5. #5
    Avatar von Wessy
    Wessy Wessy ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Ort
    Münster
    Beiträge
    137
    Das löst jetzt vielleicht nicht gerade ein Problem, du solltest dir jedoch unbedingt das PHP-Manuel v5 als CHM-Datei besorgen. Da kannst du dir dann ein paar simple Beispiele anschauen wie man es "richtiger" macht.

    z.B. sollte man, wenn man eine Datenbank abgefragt hat, optimalerweise mit
    PHP-Code:
    while ($row mysql_fetch_array($result$link)) {
        echo 
    "Spalte 1:".$row["ueberschrift"]."<br>\n";  

    die Ergebnisse wiedergeben. Und zwar aus folgendem Grund: Sollte der Pointer (also der Fokus auf ein Element) deiner Abfrage in $result nicht mehr auf dem ersten Element liegen, wirst du am Ende deiner zählergesteuerten Schleife Fehlermeldungen bekommen. While ist eine kopfgesteuerte Schleife welche bei jedem Durchlauf dein Resultat prüft ob noch Elemente vorhanden sind.

    Und dann solltest du die Anzahl von Einträgen in einer Datenbank (bzw. einer Abfrage) mit
    PHP-Code:
    echo "Alzahl der Datensätze ".mysql_num_rows($result)."!<br>\n"
    abfragen. Dies ist keine weitere Datenbankabfrage sondern bezieht sich auf dein Resultat!
    Geändert von Wessy (29.12.07 um 12:08 Uhr)
     
    Die Kunst Steuern einzunehmen besteht darin, die Gans zu rupfen ohne dass sie schreit.
    Maximilen de Béthune, französischer Finanzminister (1560 - 1641)

Ähnliche Themen

  1. <select> im IE nicht richtig dargestellt
    Von skippy3 im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 02.07.08, 16:17
  2. GridBagLayout - Anordnung funktioniert nicht richtig?!
    Von chaosteam im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 03.01.07, 13:25
  3. height wird nicht richtig dargestellt
    Von Pherseus im Forum CSS
    Antworten: 2
    Letzter Beitrag: 28.01.06, 08:57
  4. Antworten: 0
    Letzter Beitrag: 25.05.05, 22:29
  5. PNG wird nicht richtig dargestellt
    Von tobiastt im Forum PHP
    Antworten: 5
    Letzter Beitrag: 13.04.05, 11:45