constantin: fast identische if-Abfrage verhält sich unterschiedlich

Hallo,

ich habe mir einen Code zusammengestückelt, der eigentlich ein paar Daten aus der DB auslesen soll und dann feststellen soll, ob ein Bild mit einem bestimmten, zu der Nummer des ausgelesenen Datensatz passenden Namen existiert. Wenn es existiert soll es angezeigt werden, wenn nicht, dann soll ein Alternativbild angezeigt werden. Das ganze kann man sich live unter http://www.divercons.de/?page_id=941 angucken.
Der problematische Teil ist, daß der Codeschnipsel fast identisch zu der rechten Seite ist und ein entsprechendes Bild existiert, jedoch in diesem Codeschnipsel nur immer das "no_profile" Bild angezeigt wird. Der einzige Unterschied zu em anderen Code ist, daß dort alle Datensätze ausgelesen werden, während ich in diesem nur den letzten auslese.
Auch wenn es wahrscheinlich irrelevant ist. Die ID stimmt nicht immer mit der Nummer überein.

Könnt ihr mir helfen? Danke schonmal vorneweg.

VG
Constantin

  
  
<?php  
  
echo '<link rel="stylesheet" type="text/css" href="../Log/css2.css">';  
  
$host = "constantinw.co.funpicsql.de";  
$user = "username";  
$pass = "passwort";  
$dbase = "consta_771274";  
$db = mysql_connect($host, $user, $pass) or die ("verbindung fehlgeschlagen");  
      mysql_select_db($dbase, $db) or die ("verbindung zur datenbank fehlgeschlagen");  
$select = "SELECT * from DL_Logbook ORDER BY Number DESC LIMIT 1";  
$result = mysql_query($select,$db);  
if($result){  
 echo '<div align="center"><table class="slogbook">';  
 while($row = mysql_fetch_array($result)){  
  
   echo '<tr><td class="sdop" colspan="2"><b>Letzter Tauchgang</b></td></tr>';  
   echo '<tr><td class="sdip" colspan="2">'.$row['Divedate'].'</td></tr>';  
   echo '<tr><td class="sdip" colspan="2">'.$row['Place'].'</td></tr>';  
   echo '<tr><td class="sdap">'.$row['Divetime'].'min</td><td class="sdap">'.$row['Depth'].'m</td></tr>';  
   echo '<td class="sdprofile" colspan="2">';  
   if(file_exists("../Log/Profile/Thumbs/TG".$row['Number']."thumbs.jpg"))  
   {  
                 echo'<a href="http://www.divercons.de/?page_id=941"><img src="../Log/Profile/Thumbs/TG'.$row['Number'].'thumbs.jpg" width="100" height="75" border="0"></a>';  
   } else {  
                 echo'<a href="http://www.divercons.de/?page_id=941"><img src="../Log/Profile/Thumbs/no_profile.jpg" width="100" height="75" border="0"></a>';  
                 }  
   echo'</td></tr>';  
 }  
 echo '</table></div>';  
}  
  
?>
  1. Hi,

    Der problematische Teil ist, daß der Codeschnipsel fast identisch zu der rechten Seite ist

    Rechte Seite von was?

    $select = "SELECT * from DL_Logbook ORDER BY Number DESC LIMIT 1";

    $result = mysql_query($select,$db);
    if($result){
    echo '<div align="center"><table class="slogbook">';
    while($row = mysql_fetch_array($result)){

      
    Warum verarbeitest du das Ergebnis in einer Schleife, wenn es maximal einen Eintrag enthalten kann?  
      
    
    > ~~~php
    
       if(file_exists("../Log/Profile/Thumbs/TG".$row['Number']."thumbs.jpg"))  
    
    >    {  
    >                  echo'<a href="http://www.divercons.de/?page_id=941"><img src="../Log/Profile/Thumbs/TG'.$row['Number'].'thumbs.jpg" width="100" height="75" border="0"></a>';
    
    

    file_exists lügt normalerweise nicht.
    Dass du hingegen bei der relativen Pfadangabe nicht die Wahrheit gesagt hast, erscheint mir wahrscheinlicher.

    Was sagt denn
    var_dump(realpath('../Log/Profile/Thumbs/'));
    in genau diesem Script aufgerufen?
    Wenn das false ergibt, dann hast du most definitely den relativen Pfad *nicht* korrekt angegeben.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hallo,

      auf der Homepage kann man rechts das Bild auch sehen genauso wie in der Sidebar. Wird hoffentlich deutlich wenn man die Page anguckt.

      VG
      Constantin

      1. Hi,

        auf der Homepage kann man rechts das Bild auch sehen genauso wie in der Sidebar. Wird hoffentlich deutlich wenn man die Page anguckt.

        Und welche Erkenntnis sollen wir daraus gewinnen?

        Und magst du auf den Rest meiner Hinweise vielleicht auch noch eingehen?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Habs, klappt dank Deiner Hilfe!
          Danke!

    2. Oh, da war ja noch mehr zwischen dem Code versteckt. Sorry, das habe ich nicht gesehen.

      Also, ich habe ganz ans Ende des PHP Codes jetzt var_dump(realpath('../Log/Profile/Thumbs/')); geschrieben und bekomme auf der Seite bool(false) gesagt. Das verwirrt mich schon sehr. Ich habe grade nochmal geguckt. Das Bild liegt vom Hauptordner aus gesehen in Log/Profile/Thumbs/ . Da gibt es keinen Zweifel...

      Der Grund für die Schleife ist, daß wenn Datensätze hinzugefüt werden immer der jeweils letzte ausgelesen wird und da ist nicht sicher, ob jeweils ein Bild dazu vorhanden ist.

      Das mit der Pfadangabe ist schonmal hilfreich. Verwunderlich ist allerdings, daß er ja scheinbar im restlichen Code mit exakt der gleichen Pfadangabe das Bild (no Profile) findet. Das liegt im gleichen Ordner. Woran kann das liegen?

      VG
      Constantin

      1. Hi,

        Also, ich habe ganz ans Ende des PHP Codes jetzt var_dump(realpath('../Log/Profile/Thumbs/')); geschrieben und bekomme auf der Seite bool(false) gesagt. Das verwirrt mich schon sehr. Ich habe grade nochmal geguckt. Das Bild liegt vom Hauptordner aus gesehen in Log/Profile/Thumbs/ .

        Was ist denn für dich der „Hauptordner“?

        Da gibt es keinen Zweifel...

        Aber daran, ob du dir über den Unterschied zwischen einer Pfadangabe beim Zugriff per HTTP und einer im lokalen Dateisystem im Klaren bist, einige.

        Wie lautet der Dateisystem-Pfad zum Script, und wie der zum Bild?

        Der Grund für die Schleife ist, daß wenn Datensätze hinzugefüt werden immer der jeweils letzte ausgelesen wird und da ist nicht sicher, ob jeweils ein Bild dazu vorhanden ist.

        Das mit der Pfadangabe ist schonmal hilfreich. Verwunderlich ist allerdings, daß er ja scheinbar im restlichen Code mit exakt der gleichen Pfadangabe das Bild (no Profile) findet. Das liegt im gleichen Ordner. Woran kann das liegen?

        Daran, das meine gerade geäußerten Zweifel mehr als berechtigt sind :-)
        Und daran, dass dieser „er“ in diesem Falle der über HTTP zugreifende Client ist, aber kein PHP-Script, dass mit file_exists die Existenz des no profile-Bildes zuvor im Dateisystem zu überprüfen versucht.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      2. Das mit der Pfadangabe ist schonmal hilfreich. Verwunderlich ist allerdings, daß er ja scheinbar im restlichen Code mit exakt der gleichen Pfadangabe das Bild (no Profile) findet. Das liegt im gleichen Ordner. Woran kann das liegen?

        Beim Hochladen mit FTP habe ich auch schon versehentlich ganze Pfade woandershin kopiert, das no Profile könnte doppelt vorhanden sein. Benenne es testweise mal um im fraglichen Pfad.

        Ausserdem gib Pfad und Bildnamen des fehlenden Bildes mal mit als title='' zum no Profile. Wer weiss, ob das die 64 ist

        LG Gast

  2. ... und ein entsprechendes Bild existiert, jedoch in diesem Codeschnipsel nur immer das "no_profile" Bild angezeigt wird.

    Die Bilder 59 - 64 sind da, während bei Bild 58 auf eine Webseite umgeleitet wird. Der Grund ist deinem Code nicht zu entnehmen.

    http://www.divercons.de/Log/Profile/Thumbs/TG58thumbs.jpg

    LG Gast

    1. Das liegt daran, daß es erst Bilder ab No59 gibt. In der Sidebar soll jedoch immer das neueste Bild geladen werden. Das wäre 64 und das gibt es ja. Das wird wie gesagt rechts auch aiufgerufen. In der Sidebar jedoch nicht.

      Weshalb nicht?

      1. Hi,

        Weshalb nicht?

        Ich habe dir bereits Hinweise gegeben, wie du das Problem untersuchen kannst - also mache es bitte auch!

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Nicht so aggro :-)
          Ich habe grade auf Deinen Post geantwortet. Hat sich nur aus Versehen an meinen Post geheftet. Sorry.