tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
1093
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    blumshuett blumshuett ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    29
    hallo,

    habe folgendes Problem:
    Seite 1. test_post_main.php
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    <?
    $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 :
    1
    2
    3
    
    <?
    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
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    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.
     

  3. #3
    blumshuett blumshuett ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    29
    hallo,

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

    Gruss
    blumshuett
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    gehts so?
    Code :
    1
    
    echo "<input type=\"hidden\" name=\"sqlyx\" value=\"$sql\">";
     

  5. #5
    German German ist offline Mitglied Brokat
    Registriert seit
    Jul 2004
    Ort
    (Bayern)
    Beiträge
    464
    Da zeigt sich mal wieder wie tolerant die Browser sind:
    HTML-Code:
    <input type='hidden' name='sqlyx' value='select * from yxz where status != 'geliefert''>
                                                                               ^
                                                    hier wird das value-Attribut geschlossen
    So sollte es funktionieren:
    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>";
    ?>
     
    Gruß German

  6. #6
    blumshuett blumshuett ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    29
    Hallo,
    wenn ich
    Code :
    1
    
    echo "<input type=\"hidden\" name=\"sqlxy\" value=\"$sql\">";
    oder
    Code :
    1
    
    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
     

  7. #7
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Also, ich kann dir erstmal sagen, woran es liegt...
    Code :
    1
    2
    3
    
    $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 :
    1
    2
    3
    4
    5
    6
    7
    
    <?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 :
    1
    2
    3
    4
    5
    6
    7
    
    <?
    $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
     

  8. #8
    blumshuett blumshuett ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    29
    danke ersteinmal an alle...

    test_post_main.php
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <?
    $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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?
    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
     

  9. #9
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    Mal abgesehen davon, dass man kein Query mit einem Formular übergeben sollte, hilft Dir stripslashes() 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-Code:
    <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
     

  10. #10
    blumshuett blumshuett ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    29
    @all,

    habe es nun über eine function gelößt...

    danke
    blumshuett
     

Ähnliche Themen

  1. Mootools Form geht nicht
    Von sufijen im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 22.03.10, 11:01
  2. Antworten: 4
    Letzter Beitrag: 15.12.06, 22:43
  3. oracle; plsql; select in variable speichern
    Von binfgi im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 29.08.06, 18:58
  4. Antworten: 3
    Letzter Beitrag: 26.07.05, 13:26
  5. Select Form OHNE mysql wert, geht das?
    Von Subwoover im Forum PHP
    Antworten: 1
    Letzter Beitrag: 29.03.02, 19:04