Martin Linden: Variabele wird nicht übergeben

Hallo,
Ich hab mal eine frage:
und zwar werden folgende Variabelen nicht an die nächste Seite übergeben.
Das Eingabefeld wird Teilweise durch eine While Schleife ausgefüllt.

<form name="".$row->id.""  method="post" action="http://www.pro-atomkraft.de/fragen/martin.php?id=".$row->id."" onSubmit="return chkFormular()">
  <textarea name="antwort" cols="80" rows="5"  value=""></textarea>
  <br>
  <input type="submit" value="Absenden"><input type="reset" value="Abbrechen">

Vielleicht hat jemand eine Ahnung, was da falsche in könnte.
Die ganzen \ sind wegen dem php

Gruß
Martin

  1. "http://www.pro-atomkraft.de/fragen/martin.php?id="

    Wenn das die komplette URL ist, die übergeben wird, solltest du dir mal "$row->id" anschauen. Wie wird der Variable ihr Inhalt zugewiesen?

    1. Hallo,
      der Variabelen wird Ihr wert durch eine SQL Datenbank abfrage zugewiesen.
      Gruß
      martin

      1. Ich habe immer noch, dass die Variabele antwort (Textarea)
        nicht übergeben wird:

        <form name="Formular"  method="post" action="http://www.pro-atomkraft.de/fragen/martin.php" onSubmit="return chkFormular()">

        <input type="hidden" name="idgiv" value="".$row->id."">

        <textarea name="antwort" cols="80" rows="5"  value=""></textarea>
          <br>
          <input type="submit" value="Absenden"><input type="reset" value="Abbrechen">

        Und ich weiß einfach nicht wieso??

        Gruß
        Martin

        1. Hi,

          1. vereinfache die Ausgabe, so dass Du nicht ständig mit \ escapen mußt, dann werden evtl. Fehler leichter zu erkennen. Verwende innerhalb von echo, bzw. print ' statt ".

          2. Verwende $_POST['varname'] statt der veralteten $HTTP-Variante.

          3. Teste die Var mit if (isset(_$POST['antwort'])) oder !empty, dann weißt Du genau, ob die Var wirklich nicht übertragen wird oder einfach nur keinen Wert, bzw. einen Leerstring enthält.

          MfG
          Danny

            1. vereinfache die Ausgabe, so dass Du nicht ständig mit \ escapen mußt, dann werden evtl. Fehler leichter zu erkennen. Verwende innerhalb von echo, bzw. print ' statt ".

            die 's benutze ich, weil das ganze in einer While Schleife läuft, also auch im echo eines PHP bereiches.
            und, dieso soll ich ' anstelle von " benutzen??
            mit " hab ich bisher immer in echo's gearbeite, und damit gab es noch nie Probleme??

            1. Verwende $_POST['varname'] statt der veralteten $HTTP-Variante.

            ich kann gern auch $_POST verwenden, aber auch die HTTP-variabte hat bei mir einwandfrei Funktioniert.

            Das Kurriose ist ja, dass die variabele idgiv Übergeben wird, an die nächste Seite, aber eben die Variabele Antwort nicht.
            Dass ist ja das, was ich nicht verstehe??

            1. Teste die Var mit if (isset(_$POST['antwort'])) oder !empty, dann weißt Du genau, ob die Var wirklich nicht übertragen wird oder einfach nur keinen Wert, bzw. einen Leerstring enthält.

            Und gesetzt ist die Variabele, dass lasse ich schon die ganze zeit überprüfen (auch mit echo...))

            Gruß
            Martin

            1. Was ich jetzt noch herausgefunden habe ich folgendes ( sorry, vielleicht nicht leicht verständlich)

              Das ganze soll später so aussehen, dass man Fragen in eine Datenbank schreiben kann Wo dann erst ein mal die Authorisierung auf NEIN gesetzt wird.

              Dann kann ich mir die Fragen angucken, und ggf eine Antwort darauf schreiben.
              wenn ich das getan habe wird die Authorisierung auf Ja gesetzt,
              und alle können die Frage-Antwort lesen.

              Wenn jetzt mehrere Fragen unbeantwortet sind, dann wird ( wenn ich eine Antwort geschrieben habe) die Antwort nicht auf die Seite Übergeben, wo die Antwort in die datenbank geschrieben wird. Allerdings wird das Ja in eine komplett andere Zeite eineschrieben.
              Das verstehe ich nicht???
              Gruß
              Martin

              1. Ich stell hier einfach mal den kompletten Quelltext hin:

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                <html>
                <head>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                <title>Martin's Antworten</title>
                </head>

                <body>
                <?

                include("PASSWORTDATEI.php");

                $tabelle = "fragendb";

                if( isset( $HTTP_POST_VARS["idgiv"] ) )  // wenn die variabele gesetzt ist, dann sollen die gesetzten Variabelen in die Datenbank eingeschrieben werden
                {
                $id = $HTTP_POST_VARS["idgiv"]; // wird unten im Formular gesetzt. Das Formular linkt wieder auf diese Seite.
                $antwort = $HTTP_POST_VARS["antwort"];
                echo $HTTP_POST_VARS["antwort"];
                echo $antwort;
                echo $HTTP_POST_VARS["idgiv"];
                echo "hallo";
                echo $id;

                $sql = mysql_connect($dbhosst, $dbuser, $dbpswd)
                  or die("<br>Konnte nicht auf die Datenbank Verbinden");
                mysql_select_db($dbname)
                  or die("<br>Konnte nicht zur Datenbank verbinden!");

                $aendern = "UPDATE $tabelle Set antwort = '$antwort', freigabe = 'ja' WHERE id = '$id'";  // hier wird die Antwort eingeschrieben und auch die Freigabe auf JA gesetzt

                $update = mysql_query($aendern);

                mysql_close($sql);

                }

                $sql = mysql_connect($dbhost, $dbuser, $dbpswd)
                  or die("<br>Konnte nicht auf die Datenbank Verbinden");

                mysql_select_db($dbname)
                  or die("<br>Konnte nicht zur Datenbank verbinden!");
                  $abfrage = "SELECT * FROM fragendb WHERE freigabe LIKE 'nein' ORDER BY id";
                  $ergebnis = mysql_query($abfrage);

                while($row = mysql_fetch_object($ergebnis))  // ab Hier werden die Unbeantworteten Fragen angezeigt, also alle, wo die Freigabe auf NEIN steht

                {
                echo (
                "<br><table width="800" border="1" cellpadding="0" cellspacing="0">
                  <tr>
                    <td>

                <table width="800" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="112">Gestellt von:</td>
                 <td width="122">" . $row->name .   " </td>
                 <td width="325"><a href="mailto:" . $row->mail . "">" . $row->mail . "</a></td>
                    <td width="31">am: </td>
                    <td width="210">" . $row->totaldate . " Uhr </td>
                  </tr>
                </table>

                <table width="800" border="1" cellspacing="0" cellpadding="0">
                  <tr>
                    <td align="left" valign="top" >Frage: " . $row->frage . " </td>
                  </tr>
                  <tr>
                    <td><table width="800" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td width="60" align="left" valign="top" >Antwort:</td>
                        <td width="740">

                <form name="Formular"  method="post" action="http://www.pro-atomkraft.de/fragen/martin.php" onSubmit="return chkFormular()">
                  <input type="hidden" name="idgiv" value="".$row->id."">
                  <textarea name="antwort" cols="80" rows="5"  value=""></textarea>  // Und diese variabele wird nicht übergeben??
                  <br>
                  <input type="submit" value="Absenden"><input type="reset" value="Abbrechen">

                </td>

                </tr>
                    </table></td>
                  </tr>
                </table>

                </td>
                  </tr>
                </table>"

                );
                }

                mysql_close($sql);
                ?>

                </body>
                </html>

                Und ich hab keine Ahnung, wieso das nicht geht,
                vorallem wieso das nur geht, wenn nur eine Unbeantwortete Frage in der Datenbank steht???

                Gruß
                Martin

                1. Hi Martin,

                  if( isset( $HTTP_POST_VARS["idgiv"] ) )

                  Danny hat dir doch gesagt, du sollte antwort prüfen - das hier bringt nichts. Mache:

                  if(isset($_POST['antwort'])) echo "Antwort existiert";
                  else echo "Antwort existiert <b>nicht</b>.";

                  Und dann sag uns, was PHP dir dahin schreibt! ;-)

                  $antwort = $HTTP_POST_VARS["antwort"];
                  echo $HTTP_POST_VARS["antwort"];
                  echo $antwort;

                  Was erhoffst du dir von dieser komischen Konstruktion? Schreib einfach direkt:

                  echo $_POST['antwort'];

                  mysql_close($sql);

                  Dürftest du weglassen können, siehe http://de.php.net/manual/de/function.mysql-close.php

                  MfG, Dennis.

                  --
                  Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
                  Zufällige Hinweise:
                  ------------------------
                  Den Selfcode kann man sich brigends hier decoden lassen:
                  http://www.peter.in-berlin.de/projekte/selfcode/
                  1. Hello,

                    if( isset( $HTTP_POST_VARS["idgiv"] ) )

                    Danny hat dir doch gesagt, du sollte antwort prüfen - das hier bringt nichts. Mache:

                    if(isset($_POST['antwort'])) echo "Antwort existiert";
                    else echo "Antwort existiert <b>nicht</b>.";

                    Und dann sag uns, was PHP dir dahin schreibt! ;-)

                    oder stell Deine Formular-Action zum Test mal um auf

                    selfhtml.bitworks.de/debug/kontrolle.php

                    So ein Script gehört in jeden Haushalt *gg*
                    Schreib Dir mal eins.

                    Harzliche Grüße aus http://www.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
      2. Oder muss ich die Variabele eines Textfeldes anders aufrufen als über:
        $HTTP_POST_VARS["antwort"]
        ?? Gruß
        Martin

        1. Hallo,

          Oder muss ich die Variabele eines Textfeldes anders aufrufen als über:
          $HTTP_POST_VARS["antwort"]
          ??

          Probier's mal mit $_POST["antwort"]

          Gruß
          Arx

          --
          Do it yourSELF 'cause SELFmade is bestmade.
          Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
          Selfcode entschlüsseln: http://peter.in-berlin.de/projekte/selfcode/
          Selfcode-Info: http://emmanuel.dammerer.at/selfcode.html
          Für alle Forum-Neulinge:
          1.http://de.selfhtml.org/
          2.http://suche.de.selfhtml.org/ -> http://forum.de.selfhtml.org/archiv/
          3.http://forum.de.selfhtml.org/faq/ -> http://forum.de.selfhtml.org/cgi-bin/fo_post
          1. Nee,
            daran kann es nicht liegen, denn die $idgiv wird ja auch übergeben,
            mit eben die Antwort nicht. Dass ist ja das, was ich nicht verstehe.
            ((ich hab es im übrigen trotzdem gerade mal mit $_POST probiert, aber es geht trotzdem nicht))

            Gruß
            Martin

        2. Hi Martin,

          Oder muss ich die Variabele eines Textfeldes anders aufrufen als über:
          $HTTP_POST_VARS["antwort"]

          Kommt auf deine PHP Version an, siehe http://de.php.net/manual/de/reserved.variables.php unter $_POST. Probier es mal mit:

          $_POST['antwort'];

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
          Zufällige Hinweise:
          ------------------------
          Sinnvolles Zitieren: Man zitiert nur Teilsaetze des Vorposters
          auf die man sich bezieht! Nicht einfach alles.
  2. Hallo,
    übergib deine $row->id in einem hiddenfeld.
    Z.B:<input type='hidden' name='id' value='$row->id'>
    dann kannst du den id-wert ganz normal aus dem form-feld: id auslesen.

    Gruss
    Paul

  3. Hi,

    <form name="".$row->id.""  method="post" action="http://www.pro-atomkraft.de/fragen/martin.php?id=".$row->id."" onSubmit="return chkFormular()">
      <textarea name="antwort" cols="80" rows="5"  value=""></textarea>
      <br>
      <input type="submit" value="Absenden"><input type="reset" value="Abbrechen">

    Wie sieht das HTML für das Formular aus, das tatsächlich beim Browser ankommt?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.