Variable auf Existenz prüfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variable auf Existenz prüfen

    Hallo!

    Habe lange Zeit nicht mehr programmiert und bin etwas raus.
    Ich komme an einer Stelle nicht weiter.
    Ich will, dass das Skript überprüft, ob eine Variable in der Datenbank vorhanden ist, wenn ja, dann soll der dazugehörige Datensatz ausgelesen werden, wenn nicht, dann soll ein Text ausgegeben werden: Keine Daten vorhanden.

    PHP-Code:
    <?
    $sql="SELECT * FROM tracking WHERE vsnummer='$vsnummer'";
    $link = mysql_connect("localhost","name","kennwort");
    mysql_select_db("opc", $link);
    $result = mysql_query($sql, $link);

    for($i=0;$i<mysql_num_rows($result);$i++)
    {
    $ergebnis[$i]=mysql_fetch_array($result);
    }

    for($i=0;$i<count($ergebnis);$i++)
    {
     if (isset($ergebnis[$i][vsnummr])) {
    echo '<TABLE BORDER=0 CELLSPACING=3 CELLPADDING=1>
    <TR><TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Versandscheinnummer:</b><br>'.$ergebnis[$i][vsnummer].'<BR></FONT></TD>
    <TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Versanddatum:<BR></B>'.$ergebnis[$i][versand].'</FONT></TD></TR>
    <TR><TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Zustelldatum:<BR></B>'.$ergebnis[$i][liefer].'</TD>
    <TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Zustellzeit:<BR></B>'.$ergebnis[$i][uhrzeit].'</TD></TR>
    <TR><TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Unterschrift<BR></B>'.$ergebnis[$i][unterschrift].'</TD></tr></table>';
    }
    else {echo 'Keine Daten Vorhanden';}
    }

    mysql_close($link);
    ?>
    Was ist denn da falsch?
    Wenn die Variable in der Datenbank vorhanden ist, dann bekomme ich die Daten ausgelesen und angezeigt. Also alles im Butter.
    Aber wenn kein Datensatz vorhanden ist, dann sollte mit dem Befehl
    PHP-Code:
    else {echo 'Keine Daten Vorhanden';} 
    Keine Daten vorhanden ausgegeben werden, oder nicht?
    Bekomme aber eine leere Seite ohne alles.

  • #2
    Keine Daten vorhanden ausgegeben werden, oder nicht?
    Works as designed Wieso sollte der Code wenn nichts im Resultat vorhanden ist in die for-Schleife reinkommen, damit deine else-Bedingung zutreffen würde?
    Quick and Dirty
    PHP-Code:
    if(empty($ergebnis)){
      die(
    'Sorry aber es sind keine Daten vorhanden');
    }
    for(
    $i=0;$i<count($ergebnis);$i++)
    {
      if (isset(
    $ergebnis[$i]['vsnummr'])) {

      }

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Wenn du deine Code anständig einrücken würdest, dann hättest du wahrscheinlich gesehen, dass die entsprechende Meldung innerhalb der Schleife steht, in die du in dem Fall gar nie rein kommst. Ausserdem noch:
      • SELECT * FROM vermeiden
      • Schlüssel zu assoziativen Arrays sind Strings und gehören in Anführungszeichen
      • dasselbe gilt für Attributwerte in HTML-Tags

      EDIT:
      Einfach mal als Beispiel, wie so etwas lesbar formatiert werden kann:
      PHP-Code:
      <?
      $link = mysql_connect("localhost","name","kennwort") || die("Keine DB-Verbindung <br />" . mysql-error());
      mysql_select_db("opc", $link) || die(mysql-error());

      $sql = "
      SELECT 
          vsnummer,
          versand,
          liefer,
          uhrzeit,
          unterschrift
       FROM 
           tracking 
       WHERE 
           vsnummer = '$vsnummer'";
      $result = mysql_query($sql) || die(mysql-error());

      if(mysql_num_rows($result) == 0){
          echo 'Keine Daten Vorhanden';
      }
      else{
          echo "<table border='0' cellspacing='3' cellpadding='1'>\n";
          while($ergebins = mysql_fetch_array($result)){
              echo "<tr><td>Versandscheinnummer:</td><td>' . $ergebnis['vsnummer'] . '</td></tr>
                    <tr><td>Versanddatum:</td><td>' . $ergebnis['versand'] . '</td></tr>
                    <tr><td>Zustelldatum:</td><td>' . $ergebnis['liefer'] . '</td></tr>
                    <tr><td>Zustellzeit:</td><td>' . $ergebnis['uhrzeit'] . '</td></tr>
                    <tr><td>Unterschrift</td><td>' . $ergebnis['unterschrift'] . '</td></tr>\n";
          }
          echo "</table>\n";
      }
      mysql_close();
      ?>

      Zuletzt geändert von H2O; 30.11.2007, 15:40.
      Gruss
      H2O

      Kommentar


      • #4
        Super, Danke!

        Mußte aber noch etwas ändern und zwar die if (isset.......
        Ich bekam die Antwort, wenn kein Datensatz vorhanden war, aber wenn er den richtigen Datensatz auslesen sollte, kam wieder eine leere Seite.
        Wenn es jemanden interessiert, hier der Code, der läuft.
        PHP-Code:
        <?
        $sql="SELECT * FROM tracking WHERE vsnummer='$vsnummer'";
        $link = mysql_connect("localhost","name","kennwort");
        mysql_select_db("opc", $link);
        $result = mysql_query($sql, $link);

        for($i=0;$i<mysql_num_rows($result);$i++)
        {
        $ergebnis[$i]=mysql_fetch_array($result);
        }
        if(empty($ergebnis)){
          die('Sorry aber es sind keine Daten vorhanden');
        }
        for($i=0;$i<count($ergebnis);$i++)
        {
        echo '<TABLE BORDER=0 CELLSPACING=3 CELLPADDING=1>
        <TR><TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Versandscheinnummer:</b><br>'.$ergebnis[$i][vsnummer].'<BR></FONT></TD>
        <TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Versanddatum:<BR></B>'.$ergebnis[$i][versand].'</FONT></TD></TR>
        <TR><TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Zustelldatum:<BR></B>'.$ergebnis[$i][liefer].'</TD>
        <TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Zustellzeit:<BR></B>'.$ergebnis[$i][uhrzeit].'</TD></TR>
        <TR><TD WIDTH=200><FONT SIZE="-1" FACE=Arial><B>Unterschrift<BR></B>'.$ergebnis[$i][unterschrift].'</TD></tr></table>';

        }

        mysql_close($link);
        ?>

        Kommentar

        Lädt...
        X