Ausgabe funktioniert nicht

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

  • Ausgabe funktioniert nicht

    Hallo,

    ich versuche in folgendem Abschnitt eine Ausgabe einzubauen wie z.B. der letzte Satz "id nicht vorhanden", nur leider wird nichts ausgegeben, auch kein Fehler.
    Könntet ihr mir bitte sagen, wo der Fehler steckt?

    Ich übergebe per Formular eine Zahl (die id) und ich hätte gern eine Ausgabe, wenn das Formular leer gesendet wurde und wenn die id nicht in der Datenbank ist.
    Letzteres habe ich durch eine weitere if-Schleife versucht, klappte leider aber auch nicht.

    PHP-Code:
    <?php    
    if ($_GET['id'] == 21) {
    if (!empty(
    $_POST['submit'])){  
    $id $_POST['id']; 
    $sql "SELECT * FROM namen WHERE id = '$id' ";
    $result mysql_query($sql);
    while (
    $row mysql_fetch_assoc($result)) { ?>  
    <table border="1"> 
    <form action="namen.php?id=22" name="eintrag" method="post"> 
    <td  width="20"><input name="id" type="text" value="<?php echo $row['id']; ?>"></td> 
    <td width="100"><input name="vorname" type="text" value="<?php echo $row['vorname']; ?>"></td> 
    <td width="100"><input name="nachname" type="text" value="<?php echo $row['nachname']; ?>"></td> 
    <td><input type="submit" name="submit" value="Ändern"></td>  
    <table> 
    <?php }}
    else {echo 
    '<p>id nicht vorhanden</p>';}
    ?>
    Vielen Dank für eure Tipps!

  • #2
    Re: Ausgabe funktioniert nicht

    PHP-Code:
    <?php    
    if ($_GET['id'] == 21) {
        
    // dein ganzer Code

    ?>
    Wunderts dich wirklich, dass keine Ausgabe kommt, wenn keine Id übergeben wurde?

    Kommentar


    • #3
      Mist, dass meinte ich jetzt nicht!
      Es geht erst ab hier los:

      PHP-Code:
      if (!empty($_POST['submit'])){ 
      Die <form action> ruft den Teil mit der id 21 auf.

      Kommentar


      • #4
        Re: Ausgabe funktioniert nicht

        Weil heute nicht dein Geburtstag ist, bist du Einzelkind.

        Ja, das mag falsch sein, aber es folgt der selben Logik wie
        PHP-Code:
        if (!empty($_POST['submit'])) {
           
        // ... dein unsicherer Code (Stichwort SQL-Injection)
        } else {
            echo 
        '<p>id nicht vorhanden</p>';

        nämlich keiner.

        Kommentar


        • #5
          und 2 mal id in der Url und beim Formular zu verwenden ist sehr unsicher...

          Kommentar


          • #6
            Re: Re: Ausgabe funktioniert nicht

            Original geschrieben von onemorenerd
            Weil heute nicht dein Geburtstag ist, bist du Einzelkind.
            Fast richtig!

            Es wäre nett, wenn du mir eine Alternative zeigen könntest!

            Original geschrieben von jmc
            und 2 mal id in der Url und beim Formular zu verwenden ist sehr unsicher...
            Was würde es bei der url für eine Alternative geben?

            Kommentar


            • #7
              Ich bin anderer Ansicht als jmc - wer seine Werte schön mit $_GET und $_POST in Empfang nimmt, wie es sich gehört, der kann sie auch gleich benennen.

              Zum Code: Mensch überleg doch mal! Du prüfst ob $_POST['submit'] leer ist. Aber das interessiert dich doch gar nicht. Du willst doch mit der Id was anfangen. Als vergiss submit, prüfe die id!

              Kommentar


              • #8
                Doch, mich interessiert auch, ob das $_POST['submit'] leer ist bzw. wenn nichts eingegeben wurde und dann auf den Button gedrückt wurde.

                Ich dachte eigentlich, dass ich die id hier $sql = "SELECT * FROM namen WHERE id = '$id' "; Prüfe, wenn die $sql Variable keinen Wert bekommt, wenn die id nicht in der Datenbank steht.

                Kommentar


                • #9
                  Original geschrieben von tayke
                  Ich dachte eigentlich, dass ich die id hier $sql = "SELECT * FROM namen WHERE id = '$id' "; Prüfe, wenn die $sql Variable keinen Wert bekommt, wenn die id nicht in der Datenbank steht.
                  Du schaust dir die Id niemals an. Darum kannst du auch nicht sagen, warum die Query kein Ergebnis liefert. Könnte sein, dass die Id fehlt, könnte aber auch sein, dass sie einfach nicht in der Datenbank ist.

                  Außerdem reagierst du gar nicht auf ein leeres Resultset. Die While-Schleife wird nicht durchlaufen, mehr passiert nicht.

                  Bevor das hier zum Eiertanz wird, hier mal ein kleiner Schlag auf den Hinterkopf:
                  PHP-Code:
                  if (empty($_POST['submit'])) {
                      echo 
                  'Button nicht geklickt';
                  } elseif (empty(
                  $_POST['id']) || !is_numeric($_POST['id'])) {
                      echo 
                  'keine Id';
                  } else {
                      echo 
                  'alles klar';

                  Kommentar


                  • #10
                    Schreib doch mal (das ist der Hauptfehler)

                    PHP-Code:
                    if ($_GET['id'] == 22) { 
                    und rufe deine Seite mit
                    Code:
                    meinedomain.com/namen.php?id=22
                    auf.

                    Kommentar


                    • #11
                      @mai: Das muß kein Fehler sein. Wahrscheinlich ist es ein mehrseitiges Formular und der Aufruf dieser Seite erfolgt aus der Form zuvor mit der Id 21. Die nächste Seite wird mit Id 22 aufgerufen, dann 23 usw.

                      Kommentar


                      • #12
                        Das habe ich auch in Betracht gezogen und muss eigentlich mein statement zurücknehmen. Er könnte mit mysql_num_rows($result) abfragen und darauf die Fehlermeldung 'keine id' ausgeben. (wie von Dir festgestellt). Die Logik ist verkorkst.

                        Als weitere Möglichkeit ist die id im Schritt mit Formular?id=21 falsch ins Formular eingetragen und gelangt deshalb nicht in den Programmteil
                        Zuletzt geändert von mai; 12.06.2006, 22:07.

                        Kommentar


                        • #13
                          Also etwa so:
                          PHP-Code:
                          ...
                            
                          $result mysql_query($sql);
                            if (
                          mysql_num_rows($result)==0) {echo '<p>id nicht vorhanden</p>';}
                            else
                            while (
                          ganze "if-Schleife" wie gehabt)
                            ... 

                          Kommentar


                          • #14
                            Vielen Dank für eure Tipps!
                            So klappt das wunderbar!!

                            Ich habs damit
                            PHP-Code:
                            (empty($_POST['id']) || !is_numeric($_POST['id'])) 
                            und damit
                            PHP-Code:
                            (mysql_num_rows($result)==0
                            gelöst.

                            Die letzte Bedingung wollte ich auch so, nur hab ich immer nur die Variable "result" verglichen.

                            Kommentar

                            Lädt...
                            X