Variabele wird nicht übergeben
Martin Linden
- php
0 skyposter0 Martin Linden0 Martin Linden0 Danny
0 Martin Linden
0 Paul0 MudGuard
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
"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?
Hallo,
der Variabelen wird Ihr wert durch eine SQL Datenbank abfrage zugewiesen.
Gruß
martin
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
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
- 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??
- 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??
- 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
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
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
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.
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
Oder muss ich die Variabele eines Textfeldes anders aufrufen als über:
$HTTP_POST_VARS["antwort"]
?? Gruß
Martin
Hallo,
Oder muss ich die Variabele eines Textfeldes anders aufrufen als über:
$HTTP_POST_VARS["antwort"]
??
Probier's mal mit $_POST["antwort"]
Gruß
Arx
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
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.
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
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