2011-01-11 5 views
1

Ich habe eine einfache PHP-Form, die Eingänge mit Werten aus einer MySQL-DB zeigt und sendet die Formularergebnisse auf eine andere Seite, die eine DB-Tabelle aktualisiert, basierend auf den GET Ergebnisse:

echo "<table>"; 
echo "<tr>"; 
echo "  <th>Project No</th> 
    <th>Customer Name</th> 
    <th>Description</th> 
    </tr>"; 

    while($row = mysql_fetch_array($result)) 
    {  
    echo "<tr>"; 
    echo "<td><input value=" . $row['project_no'] . "></input></td>"; 
    echo "<td><input value='" . $row['cust_name'] . "'></input></td>"; 
    echo "<td><input value='" . $row['description'] . "'></input></td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 
echo "<input type='submit' value='Update' />"; 
echo "</form>"; 

In updateprojects.php, wenn ich tun:

echo $_GET['project_no'].$_GET['cust_name'].$_GET['description']; 

ich sehe keine Werte. Warum ist das?

+0

Was bringt print_r ($ _ REQUEST)? – Tobias

+0

Vielleicht möchten Sie mit HEREDOCS (http://php.net/heredoc) statt Echos, wie Sie sind, untersuchen. Sie machen das Leben viel einfacher, da Sie nicht vor Anführungszeichen und dergleichen flüchten müssen. –

+0

Da Sie Formulareingaben mit einer Schleife erstellen, die dies (siehe meine Antwort) für Sie arbeiten sollte, nehmen Sie einfach eine ID der Zeile/Datensatz aus der Datenbank. – Diablo

Antwort

4

Im Eingabefeld Sie den Parameternamen mit dem Attribut „name“ angeben müssen.

echo "<tr>"; 
echo "<td><input name=\"project_no\" value=" . $row['project_no'] . "></input></td>"; 
echo "<td><input name=\"cust_name\" value='" . $row['cust_name'] . "'></input></td>"; 
echo "<td><input name=\"description\" value='" . $row['description'] . "'></input></td>"; 
echo "</tr>"; 
+0

Er ist Ergebnisse Schleife. Was ist, wenn es 2 oder mehr Zeilen gibt, dann wären 2 oder mehr Felder mit demselben Namen. Überprüfen Sie meine Antwort :) – Diablo

+0

Ja, Sie haben Recht name = "project_no []" sollte den Trick tun. – Aston

3

Sie vergessen die Eingangs Namen:

<td><input name='project_no' value=" . $row['project_no'] . "></input></td> 

Wenn Sie diese php nicht tun nicht wissen, was Sie von ‚project_no‘ bedeuten. Jede Eingabe benötigt einen Namen.

1

Ihre Eingaben haben keine name Attribut

+0

was für ein div. Danke vielmals! – benhowdle89

+0

Bitte als Antwort markieren;) – Tobias

+0

in 8 Minuten werde ich :) – benhowdle89

0

Sie müssen die name="" Attribut auf Ihre Eingaben hinzuzufügen.

3

Es ist, weil Sie keine Namen zu den Eingangs-Tags zuweisen:

echo "<td><input name=\"project_no\" value=\"" . $row['project_no'] . \"></input></td> 

Die oben sollte funktionieren.

0

Etwas, das mir in der Vergangenheit geholfen hat, ist die Registerkarte Net in Firebug zu verwenden und die Persist Option zu aktivieren, um zu sehen, was der Browser tatsächlich zurücksendet. In einem Fall enthielt das Formular doppelte Einträge für einige Felder, aber der zweite Eintrag sendete nicht die richtigen Werte.

0

Bitte informieren Sie die Art der Übermittlung oder versteckter Text. Und/oder vergewissern Sie sich, dass Sie Daten aus der SQL-Abfrage zurückgeben.

0

Es scheint mir, dass Sie in Ihrer HTML-Eingabe einen Namen = "project_no" haben müssen.

1

Da Sie erstellen Formulareingaben mit einer Schleife sollte dies für Sie arbeiten (Sie können nicht 2 haben Eingabefelder mit dem gleichen Namen), nur zu einem Reihen-ID/Datensatz aus der Datenbank holen:

echo "<form method='get' action='updateprojects.php'>"; 
       echo "<table>"; 
       echo "<tr>"; 
       echo "  <th>Project No</th> 
         <th>Customer Name</th> 
         <th>Description</th> 
        </tr>"; 

       while($row = mysql_fetch_array($result)) 
        {  
         echo "<tr>"; 
         echo '<td><input value="' . $row['project_no'] .'" name="form['.$row['id'].']['project_no']"/></td>'; 
         echo '<td><input value="' . $row['cust_name'] .'" name="form['.$row['id'].']['cust_name']"/></td>'; 
         echo '<td><input value="' . $row['description'] .'" name="form['.$row['id'].']['description']"/></td>'; 
         echo "</tr>"; 
        } 
       echo "</table>"; 
       echo '<input type="submit" name="submit" value="Update" />'; 
       echo "</form>"; 

if(isset($_GET['submit'])){ 
    foreach($_GET['form'] as $id=>$column){ 

     //update your database where id=$id. This is just testing 
     echo 'Row '.$id .' =>'. $column['project_no'].'-'.$column['cust_name'].'-'.$column['description']; 

    } 
} 
Verwandte Themen