Problem mit IF-Abfrage.

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

  • Problem mit IF-Abfrage.

    Hallo,

    ich habe nun eine Art "Suche" für meine Db geschrieben.
    In dem einfach nur eine ID in ein Feld eingetragen wird,
    ich dann "Anfrage abschicken" (button) drücke und
    er mir dann das Ergebniss zeigt.

    Nun möchte ich aber das wenn zu der eingegebenen
    ID kein Datensatz existiert, dass er eine Fehlermeldung
    ala "Datensatz nicht gefunden" ausgibt.

    Dazu müsst ich ihm ja sagen

    IF ID in DB = Anzeigen
    else = Fehlermeldung.

    Ich weiß aber nicht so recht wie ich das umsetzen kann bis jetzt habe ich einfach

    if($gesendet)
    {
    $query = "select * from test_manuel2 WHERE ID = '$_POST[ID]' ";

    u.s.w.
    Das $gesendet bekommt er sobald der "Anfrage abschicken" Button gedrückt wurde. Nun zeigt er mir natürlich wenn er keine passende ID in der DB findet einfach nur die Feldnamen an sprich:

    Anrede
    Vorname
    Nachname

    u.s.w

    Ich möchte aber das halt die oben gennante Fehlermeldung kommt.
    Kann mir einer sagen wie ich ihm klar mache das
    If ID in DB bla
    else bla

    passiert `?

    Danke

  • #2
    Re: Problem mit IF-Abfrage.

    mysql_num_rows()
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      PHP-Code:
      if($gesendet){
          
      $query "select * from test_manuel2 WHERE ID = ".$_POST['ID'];
          
      $ret mysql_query($query);
      }
      if(
      $ret === false){
          die(
      'Kein passender Datensatz gefunden');
      }else{
         
      /*$ret ist also eine mysql_ressource und 
         sollte dementsprechend verarbeitet werden*/

      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


      • #4
        @jahlives: Die Antwort sollte dir jetzt aber reichlich peinlich sein.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Nochmals im Manual gelesen und *kopfindensandsteck*
          Diesen Teil habe ich zuerst glatt überlesen
          Es ist durchaus möglich, dass eine Anfrage erfolgreich war, ohne einen einzigen Datensatz zur verändern oder zu liefern.
          Danke + Gruss + sorry@topicstarter

          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


          • #6
            Hallo,

            danke euch ich konnte nun alles soweit umsetzen wie ich es wollte.
            Mit einer kleinen Ausnahme, wo ich gerade ziemlich auf dem Schlauch steh (vlt. auch zuviel gefeiert gestern :P) Aber wenn von euch vlt mal jmd drüber schauen könnte.

            Problem ist wenn ich mir denn Datensatz ausgeben lasse zeigt er nur den letzten Wert an.

            Sprich von den 9 Feldern wird nurnoch das 9 ausgegeben, vermutlich überschreibt er die anderen immer wieder, so das nur das letzte Feld ausgeben wird.

            HEELP *g*

            <?php
            include ("db_connect.php");

            $f = array('Anrede'=>'anrede','Vorname'=>'vorname','Nachname'=>'nachname','Adresse'=>'adresse','Geburtsda tum'=>'geburtsdatum','PLZ'=>'plz','Ort'=>'ort','E-mail'=>'e_mail','Tel'=>'tel','Fax'=>'fax');

            if($gesendet)
            {
            $query = "select * from test WHERE ID = '$_POST[ID]' ";
            $res = mysql_query($query);
            $num = mysql_num_rows($res);
            echo mysql_error();

            }
            //Ausgabe des Datensatzes
            if($gesendet && $num=="1")
            {
            $zeile = mysql_fetch_array($res);
            foreach($f as $g => $feld);
            $wert= "$zeile[$feld]";
            $ta="<textarea cols='15' rows='15' readonly>";
            $tr.= "$g:$wert";
            $ta2="</textarea>";

            }
            if($gesendet && $num=="0")
            {
            echo"ID konnte nicht gefunden werden.";
            }

            ?>


            <html>
            <head>
            <title>Bestellformular</title>

            <script language="JavaScript">

            <!-- Formularcheck

            function pruefen()

            {
            if (document.forms[0].elements[0].value == "") {
            alert("Sie haben keinen Code eingegeben!");
            document.forms[0].elements[0].focus();
            return false;
            }
            }
            -->
            </script>


            </head>
            <body>




            <form action="bformular2.php" method="post" onSubmit="return pruefen()">

            <table border="0">
            <tr><td>Code Eingabe:</td><td><input type="text" size="30" name="ID"></td></tr>
            <tr><td><input type="submit" name="gesendet">
            </table>
            <?php

            if($gesendet)
            {
            echo "$ta";
            echo "$tr";
            echo "$ta2";
            }

            ;?>

            </table>
            </body>
            </html>
            Danke schonmal

            Kommentar


            • #7
              ich hab jetzt mal fix am morgen drübergelesen ^^...die foreach schleife, die du angegeben hast erfordert - ebenso wie alle anderen schleifen - {} Tags, sprich ein Anfang und ein ende. Also wenn überhaupt, dann:
              PHP-Code:
              $ta='<textarea cols="15" rows="15" readonly>';

              foreach(
              $f as $g => $feld) {
               
              $wert"$zeile[$feld]";
               
              $tr.= "$g:$wert";
              }

              $ta2="</textarea>"
              Allerdings ist dein Skript absolut optimierungsbedürftig, dieses Array am Anfang...naja...etc.

              Du kannst auch mit mysql_fetch_array testen, ob ein Datensatz gefunden wurde:
              PHP-Code:
              if (myql_fetch_array($res)) {
               
              //...

              Damit sparst du dir die zusätzliche Abfrage mit mysql_num_rows.

              Ich bin mir jetzt nicht sicher, ob deine Fehler damit behoben werden, aber probiers am besten erstmal aus ;-)
              Zuletzt geändert von ZombieChe; 15.09.2006, 09:38.

              Kommentar


              • #8
                Danke, aber das Problem besteht
                weiterhin.

                Ich hab jetzt noch die while schleife eingefügt,
                aber hat auch nichts geholfen.

                Jemmand noch eine Idee ?

                Kommentar


                • #9
                  Schau dir das Beispiel zu mysql_fecth_array im Manual an - so schwer kann's doch nicht sein, eine While-Schleife zu benutzen ...?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar

                  Lädt...
                  X