2016-04-08 11 views
0

Ich habe eine searchresult.php-Datei, wo ich alle Menüs Namen aus meiner Datenbank ziehen und drucken sie mit einer Schaltfläche in der Nähe von ihnen, wo die Schaltfläche hat einen Eingabetyp versteckt, wo ich zugeordnet Name des Menüs über die Variable $ nameofmenu. So etwas wie

Menu1 -> Button (siehe Menü)

Menu2 -> Button (siehe Menü)

Menu3 -> Button (siehe Menü)

<?PHP 
while($myrow = pg_fetch_assoc($result)) { 
    $nameofmenu = $myrow[name]; 
    echo $nameofmenu; //It prints correctly the name of the menu 
    echo '<form name"formname" method="post" action="resultsmenu.php">'; 
echo "<input type='hidden' name='menuname' value=' $nameofmenu ' />"; 
echo "<input type='submit' name='submit' value='See Menu' />"; 
} 
?> 

Dann habe ich habe meine resultmenu.php Datei, die geöffnet wird, wenn ich auf einen der Knöpfe klicke.

<?php 
    $nameofmenu = $_POST['menuname']; 
    $db = pg_connect('host=localhost dbname=test user=myuser password=mypass'); 

    $query = "SELECT * FROM menu where name='$nameofmenu'"; 
    $result = pg_query($query); 
    if (!$result) { 
     echo "Problem with query " . $query . "<br/>"; 
     echo pg_last_error(); 
     exit(); 
    } 
    $myrow = pg_fetch_assoc($result); 
    $description = $myrow[description]; 
?> 

Ich habe 2 Probleme:

  1. Erste Ausgabe: im searchresult.php, auch druckt es aus richtig die verschiedenen Menünamen, wenn ich auf eine der Schaltflächen klicken, werden alle Tasten gebe das gleiche Menü zurück (Das letzte im Beispiel: Menü 3 im $ nameofmenu = $ _POST ['menuname']; der Datei resultsmenu.php.

  2. Zweites Problem: Dieses Problem ist im Ergebnismenü aufgetreten .php Datei selbst. Für Menü 3 scheint es, dass der Wert in der Variablen erkannt wurde Ich bekomme kein Ergebnis oder Wert von der Abfrage zurück: $ query = "SELECT * FROM menu wo name = '$ nameofmenu'"; Allerdings, wenn ich den Wert Manuell wie $ nameofmenu = "Menu3" einrichten; dann klappt es. Ich probierte sogar diesen Code, um zu sehen, ob es irgendeinen Unterschied in dem von $ _POST ['menuname'] übergebenen Wert und dem manuell eingegebenen Wert gibt, und es scheint der gleiche Wert zu sein, da er "Beide Variablen sind gleich" ausgibt.

    $nameofmenu2 = "Menu3"; 
    $nameofmenu = $_POST['menuname']; //where the value in menuname is Menu3 
    if ($nameofmenu2 = $nameofmenu){echo "Both variables are the same";} 
    

Vielen Dank

+1

Gleichheitsvergleich ist mit '==', nicht '='. Eine Zuweisungsoperation wird immer zu "wahr" ausgewertet. – David

+1

Sie scheinen Ihr Formular für den Anfang nicht zu schließen. – Marcus

+0

Ich denke, das Problem ist mit HTML, alle von Ihnen eingegeben haben gleiche Namen Eigenschaft, die möglicherweise Probleme verursachen, wenn es Daten zurück an PHP –

Antwort

0

überschreiben Sie die gleiche Eingabefeld (= Name) immer und immer wieder, so dass nur das "letzte" über~~POS=TRUNC zurückgegeben/verfügbar. Um dies zu vermeiden, setzen Sie die Daten als POST-ARRAYs wie folgt aus (auch Ihre Angebote wechseln):

echo '<input type="hidden" name="menuname[]" value="'.$nameofmenu.'" />'; 

Nach dem Absenden Sie jetzt sehen, dass $_POST['menuname'] ist ein array! z.B.

var_dump($_POST['menuname']); 
0

Wie von David erwähnt, weisen Sie nameofmenu2 dem Namen des Menüs zu. Aber außerdem, wenn Sie echoed:

echo "<input type='hidden' name='menuname' value=' $nameofmenu ' />"; 

Sie Leerzeichen auf beiden Seiten von $ nameofmenu enthalten. Dies kann zu Problemen führen, wenn Sie Ihre Abfrage durchführen. Verwenden Sie:

var_dump($_POST['menuname']); 

, um Ihre erwarteten Postdaten zu überprüfen.