SELECT in Variable speichern geht nicht mit FORM

blumshuett

Mitglied
hallo,

habe folgendes Problem:
Seite 1. test_post_main.php
Code:
<?
$sql = "select * from yxz where status != 'geliefert'";
echo "<form action='test_post_info'>";
echo "<input type='submit'>";
echo "<input type='hidden' name='sqlyx' value='$sql'>";
echo "</form>";
?>
Seite 2. test_post_info.php
Code:
<?
echo $sqlyx."<br>";
?>

Auf der Seite 2 erscheint nicht
select * from xyz where != 'geliefert'
sondern nur
select * from yxz where status !=

Woran liegt das ?
Wenn ch auf der Seite 1 ein echo $sqlxy mache, dann erscheint
select * from xyz where != 'geliefert'
Irgewas geht bei dem Übermitteln verloren, aber wie kann ich das verhindern ?

1000 Dank
blumshuett
 
PHP-FAQ
... dort dürfte die Fragestellung
Ich kann nach Abschicken des Formulars nicht auf meine Variablen zugreifen, was tun? von gesteigertem Interesse für dich sein.
 
hallo,

REGISTER_GLOBALS ist auf on gestellt.
Das Problem ist ja, das nur einen Teil der Variable abgeschnitten wird...
der 'geliefert' Teil...

Gruss
blumshuett
 
Da zeigt sich mal wieder wie tolerant die Browser sind:
HTML:
<input type='hidden' name='sqlyx' value='select * from yxz where status != 'geliefert''>
                                                                           ^
                                                hier wird das value-Attribut geschlossen
So sollte es funktionieren:
PHP:
<?
$sql = "select * from yxz where status != 'geliefert'";
echo "<form action='test_post_info'>";
echo "<input type='submit'>";
echo "<input type='hidden' name='sqlyx' value=\"$sql\">";
echo "</form>";
?>
 
Hallo,
wenn ich
Code:
echo "<input type=\"hidden\" name=\"sqlxy\" value=\"$sql\">";
oder
Code:
echo "<input type='hidden' name='sqlxy' value=\"$sql\">";
verwende, dann bekomme ich immer als Wert in der Seite 2
select * from xyz where status != \'geliefert\'
Das läuft dann natürlich in einen Fehler bei der SQL Abfrage.

...

danke
blumshuett
 
Also, ich kann dir erstmal sagen, woran es liegt...
Code:
$sql = "select * from yxz where status != 'geliefert'";
[...]
echo "<input type='hidden' name='sqlyx' value='$sql'>";

Durch die 2 verschiedenen Apostrophs (einmal an der "Umklammerung" von $sql und einmal bei 'geliefert' kommt PHP etwas durcheinander...
Hier mal 2 verschiedene Lösungen für dich...

Meine:
Code:
<?php
$sql = "select * from xyz where status != 'geliefert'";
?>
<form action="test2.php" method="post">
<input type="submit">
<input type="hidden" name="sqlyx" value="<?php echo $sql; ?>">
</form>

Oder hier dein Quellcode einfach etwas abgeändert:
Code:
<?
$sql = "select * from yxz where status != 'geliefert'";
echo "<form action='test2.php' method='post'>";
echo "<input type='submit'>";
echo "<input type='hidden' name='sqlyx' value=\"".$sql."\">";
echo "</form>";
?>

Das sollte die Lösung für dich sein...

Grüße,
Flex
 
danke ersteinmal an alle...

test_post_main.php
Code:
<?
$sql = "select * from orderings where status != 'geliefert'";
echo $sql."<br>";
?>

<form action="test_post_info.php" method="post">
<input type="submit" value="<? echo $sql; ?>">
<input type="hidden" name="sqlxy" value="<? echo $sql; ?>">
</form>
hier wird $sql noch sauber ausgegeben

test_post_info.php
Code:
<?
include("../functions.php");

echo $sqlxy."<br>";
echo "----------------------------<br>";

connect();
$res = sqlquery("sbapproval", $sqlxy);
$num = mysql_num_rows($res);
echo $num."<br>";
 for ($i=0; $i<$num; $i++)
  {
   echo $i." ".mysql_result($res, $i, "number")."<br>";
  }
?>
hier wird $sqlxy so ausgegeben:
select * from orderings where status != \'geliefert\'

wo kommen die \ her ?

gruss
blumshuett
 
Mal abgesehen davon, dass man kein Query mit einem Formular übergeben sollte, hilft Dir [phpf]stripslashes[/phpf] bei Deinem letzten Problem. Wo Deine Slashes herkommen, findest Du im Handbuch unter Variablen außerhalb von PHP.
Stell Dir mal vor, jemand speichert die Seite, ändert den Code wie folgt und sendet das Formular an Deinen Server.
HTML:
<form action="test_post_info.php" method="post">
<input type="submit" value="DELETE * FROM orderings">
<input type="hidden" name="sqlxy" value="DELETE * FROM orderings">
</form>

Gruß hpvw
 

Neue Beiträge

Zurück