Was ist falsch?

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

  • Was ist falsch?

    Hallo,

    ich hab Probleme mit dem Übergeben der Daten per "Post". Wie empfange ich die Daten vom Server, um sie in der Variablen zu speichern.
    Gibts für PHP eigentlich einen Debugger wie in der Art von dem bei VisualBasic?

    Danke

    PHP-Code:
    <?php
    //Datenbank verbinden
    include("./open.inc.php");
    //Hinzufügen von Einträgen - Formular
    switch ($_GET['cmd']) {
        case 
    add:
            echo <<<GUESTFORM
                <p>Bitte teilen Sie uns hier Ihre Meinung mit:</p>
                <p></p>
                <form name="guestbook" action="
    $PHP_SELF?cmd=send" method="post">
                <input type="Hidden" name="cmd" value="send"/>
                <table border="0">
                <tr><td>Ihr Name</td>
                    <td><input type="text" name="name"/></td></tr>
                <tr><td>Ihre E-Mail Adresse</td>
                    <td><input type="text" name="email"/></td></tr>
                <tr><td>Ihre Homepage</td>
                    <td><input type="text" name="url"/></td></tr>
                <tr><td>Ihr Job</td>
                    <td><input type="text" name="job"/></td></tr>
                <tr><td>Ihr Wohnort</td>
                    <td><input type="text" name="location"/></td></tr>
                <tr><td>Kommentare</td>
                    <td><textarea name="comments" cols="60" rows"6">
                        </textarea></td>
                </tr>
                <tr>
                    <td></td>
                    <td>
                        <input type="submit" value="Absenden"/>
                        <input type="reset" value="Löschen"/>
                    </td>
                </tr>
                </table>
                </form>
    GUESTFORM;
            
    //Anzeige nach dem eigenen Eintrag
            
    break;
            
        case 
    view:
            echo 
    '<h2>Anzeige der Eintr&auml;ge</h2>';
            
    //Datenbank abfragen
            
    $result mysql_query("SELECT * FROM guestbook");
            
    //Datensätze holen
            
    while ($row mysql_fetch_row($result)) {
                echo <<<ENTRY
                <HR>
                <b>Name:</b> 
    $row[0]
                <br /><b>E-Mail:</b><a href="mailto:
    $row[1]">$row[1]</a>
                <br /><b>Homepage:</b><a href="
    $row[2]">$row[2]</a>
                <br /><b>Jobs:</b> 
    $row[3]
                <br /><b>Jobs:</b> 
    $row[4]
                <br /><b>Kommentar:</b>
                <br /><b> 
    $row[5]
    ENTRY;
        }
        break;
        
        case 
    send:
        
    //$name = !isset($_POST['name']) ? $_POST['name'] :0;
            //$comments = addslashes("$comments");
            
    $strQuery "INSERT into guestbook (name, email, url, job, location, comments) ";
            
    $strQuery .= "VALUES ('$name', '$email', '$url', '$job', '$location, '$comments')";
            
    $result = @mysql_query($strQuery);
            if (
    $result) echo "<p>Danke! Wir werden Ihren Beitrag ber&uuml;cksichtigen</p>";
        
        break;
        
        default;
            
    //Zuletzt wird die Anzahl der Datensätze ermittelt
            //und zur Hauptseite zurückverwiesen
            
    $result mysql_query("SELECT COUNT(*) FROM guestbook");
            
    $row mysql_fetch_row($result);
            
    $num $row[0];
            if (
    $num == "") {
                
    $entry "Es sind zur Zeit keine Beitr&auml;ge";
            } else if (
    $num == "1") {
                
    $entry "Es ist zur Zeit ein Beitrag";
            } else {
                
    $entry "Es sind zur Zeit $num Beitr&auml;ge";
            }
    echo <<<LINKS
        <p>Willkommen in unserem G&auml;stebuch.<br />
            
    $entry im G&auml;stebuch.<p/>
            <a href="
    $PHP_SELF?cmd=add">Einen Eintrag hinzuf&uuml;gen</a><br />
            <a href="
    $PHP_SELF?cmd=view">Beitr&auml;ge ansehen</a><br />
    LINKS;
        break;
    /*end switch */
    echo <<<ACCEPTED
        <p>
        <a href="
    $PHP_SELF">
        Zur&uuml;ck zur Startseite des G&auml;stebuches</a>
        </p>
    ACCEPTED;
    ?>

  • #2
    switch ($_GET['cmd']) {
    case add:// case 'add':
    versuch bitte deine Problem durch print_r($_POST) zu lösen
    Slava
    bituniverse.com

    Kommentar


    • #3
      Na schreib doch mal

      PHP-Code:
      <?php
      echo "<pre>";
      print_r($_POST);
      echo 
      "</pre>";

      //Datenbank verbinden
      include("./open.inc.php");
      //Hinzufügen von Einträgen - Formular

      // usw...

      Wenn du das Formular bei $_GET['cmd'] = 'add' abschickst müsstest du die übergebenen Variablen sehen
      gruss Chris

      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

      Kommentar


      • #4
        Du erhälst sie über das super globale Array $_POST. Die Schlüssel entsprechen der in dem Formular vergebebenen [FONT=courier new]id[/FONT]-Attribut-Werte.
        Wenn du quasi
        Code:
        <input type="text" id="name" value="Herr Meier" />
        in einem Formular notierst, bekommst du in PHP den Wert [FONT=courier new]Herr Meier[/FONT] über
        PHP-Code:
        <?= $_POST['name'?>
        Du hast aber nur [FONT=courier new]name[/FONT]-Attribute vergeben, keine [FONT=courier new]id[/FONT]s.
        Zuletzt geändert von \²³/; 08.07.2006, 13:26.
        Mein Audio-Player · Mein Computer

        Kommentar


        • #5
          Original geschrieben von \²³/
          Die Schlüssel entsprechen der in dem Formular vergebebenen [FONT=courier new]id[/FONT]-Attribut-Werte.
          Seit wann ?

          Dann teste das mal

          PHP-Code:
          <pre>
          <?php print_r($_POST); ?>
          </pre>

          <form method="POST">
          <input type="text" id="test">
          <input type="submit" value="Test">
          </form>
          Zuletzt geändert von hhcm; 08.07.2006, 13:21.
          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Kommentar


          • #6
            Original geschrieben von hhcm
            Seit wann ?
            Soweit ich weiß nach W3C'schem Standard schon immer in XHTML. Wenn Browser die Sachen auch nicht stanardgemäß übergeben, ist das zwar schön und gut aber keine Garantie für Funktunalität.
            Zuletzt geändert von \²³/; 08.07.2006, 13:24.
            Mein Audio-Player · Mein Computer

            Kommentar


            • #7
              Original geschrieben von \²³/
              Die Schlüssel entsprechen der in dem Formular vergebebenen [FONT=courier new]id[/FONT]-Attribut-Werte.
              Nein, tun sie nicht.

              Du hast aber nur [FONT=courier new]name[/FONT]-Attribute vergeben, keine [FONT=courier new]id[/FONT]s.
              Ja, vollkommen korrekt so.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Original geschrieben von wahsaga
                Nein, tun sie nicht.
                Dann habe ich mich wohl getäuscht. Ich habe immer gedacht, es sei so. Aber ich habe nicht gemerkt, dass es falsch ist, weil ich immer name und id mit dem gleichen Wert besetzte vor dem Hintergrund der Kompatiblität zu uralten Browsern.
                Mein Audio-Player · Mein Computer

                Kommentar


                • #9
                  Das hört sich schon mal gut an. Aber es wird einfach kein Eintrag in die Datenbank geschrieben. Hier muss das ja erfolgen:
                  PHP-Code:
                      case send:
                      
                  $name $_POST['name'];
                      echo 
                  "<pre>";
                          
                  print_r($name);
                      echo 
                  "</pre>";
                          
                  //$comments = addslashes("$comments");
                          
                  $strQuery "INSERT into guestbook (name, email, url, job, location, comments) ";
                          
                  $strQuery .= "VALUES ('$name', '$email', '$url', '$job', '$location, '$comments')";
                          
                  $result = @mysql_query($strQuery);
                          if (
                  $result) echo "<p>Danke! Wir werden Ihren Beitrag ber&uuml;cksichtigen</p>";
                      
                      break; 
                  Die Variable $name wird auch testweise angezeigt. Das geht...
                  Nur die Variable muss ja durch die $strQuery .= "VALUES ('$name',.... in die Datenbank eingetragen werden. Liegt hier ein Fehler vor?
                  Als Test habe ich hier nur $_POST['name'];....
                  Das würde ich, bei Erfolg, für die anderen erweitern.

                  Kommentar


                  • #10
                    Original geschrieben von \²³/
                    Aber ich habe nicht gemerkt, dass es falsch ist, weil ich immer name und id mit dem gleichen Wert besetzte vor dem Hintergrund der Kompatiblität zu uralten Browsern.
                    Wenn du Formularwerte verschicken willst, ist das ein Thema der Kompabilität mit aktuellen Browsern - mir ist keiner bekannt, der eine Feld-ID zum verschicken nutzen würde, die nutzen alle name.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      mysql_error()! Lass Dir mal die Query ausgeben.
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        Also die ID habe ich zum Beispiel auch noch mal mit aufgenommen. Aber daran kann das nicht liegen, da meine Variablen ja gefüllt werden. Die Übergabe an die Datenbank ist das Problem....

                        Z.B.:
                        PHP-Code:
                        <td><input type="text" name="email" id="email"/></td></tr

                        Kommentar


                        • #13
                          '$name', '$email', '$url', '$job', '$location, '$comments'

                          Dann schau dir mal $location an.. Meinst du nicht das da was fehlt?

                          EDIT:

                          Und gewöhnt dir am besten mal dein @ vorm query ab

                          gruss Chris

                          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                          Kommentar


                          • #14
                            Oh ha...
                            Wie schnell man was übersehen kann...
                            Meldung war: 1064: You have an error in your SQL syntax near '', '')' at line 1

                            Bin ja noch Anfänger. Habe aber dank euch eine Menge dazugelernt.
                            Danke euch! Weiter so!
                            Schade das es keinen Debugger gibt wie bei VB.
                            Normal bin ich eher nen VB´ler... Umstellung ist schwer zu diesem Code.

                            Kommentar


                            • #15
                              Es gibt Debugger..

                              z.B Zend Studio im zusammenhang mit Zend Server (teuer)

                              Dann wäre da noch

                              DBG
                              Gubed

                              Für solche Kleinigkeiten brauchst du aber keinen Debugger..

                              @ <-- Weglassen und deine Querys mit einem mysql_error() behaften.

                              print_r bzw echo´s vor deine Fehler, dann findest du soetwas ziemlich schnell.
                              gruss Chris

                              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                              Kommentar

                              Lädt...
                              X