2016-06-25 10 views
0

Ich habe eine PHP-Seite, die ein Formular mit einigen verschiedenen Eingabefeldern enthält, e. G. Tag, Monat, Jahr etc .. Die Form-Methode ist POST, nur ein nicht bearbeitbares Feld (die Benutzer-ID) wird über GET gesendet. Natürlich gibt es einen "Submit" -Button, der das Formular Action (PHP Script auf Server) auslöst.
Die Formular-Tags enthalten auch eine Tabelle mit leeren Zellen. Jetzt kommt meine Frage:Senden "Button" -ID auf Senden

Wenn der Benutzer in eine der Tabellenzellen klickt, sollte das Formular gesendet werden, aber zusätzlich zu den regulären Formulardaten sollte auch die ID der Tabellenzelle übertragen werden (Wenn via POST oder GET doesn Das ist mir egal. Wie kann ich das machen?

// Edit 2:

... 
<form method="post" action="<?= DOMAIN?>/.../addUserTimetable.php?uid=<?= $user->getUserID() ?>"> 
    <select id="day" name="day"> 
    ... 
    </select> 
    ... 
    <input name="yearend" id="yearend" ...> 
    <button type="submit">...</button> 
    <table class="bordered"> 
    <tr> 
     <th>Std.</th> 
     <th>Montag</th> 
     <th>Dienstag</th> 
     <th>Mittwoch</th> 
     <th>Donnerstag</th> 
     <th>Freitag</th> 
    </tr> 
    <?php 
     for($i=1; $i<13;$i++) { 
     echo "<tr>"; 
     echo "<th>".$i. "</th>"; 
     for($j=1;$j<6;$j++) { 
      echo "<td id='h".$i. "d".$j. "' onclick='???'></td>"; 
     } 
     echo "</tr>"; 
     } 
    ?> 
    </table> 
</form> 
... 

Der Server seitige Prozession ist in Ordnung, aber ich habe keine Ideen bekommt - auch nach zwei Stunden Google - wie ich zusätzlich die Zellen-ID übertragen könnte.

+1

Können Sie bitte etwas genauer sein? – Akshay

+0

@Akshay Ich habe versucht;) Editiert. –

+1

können Sie uns Ihren Code zeigen? – Christoffer

Antwort

1

Das sollte nicht zu schwer sein. Werfen Sie einen Blick auf das folgende Beispiel:

<form> 
    <input type="text" name="something"> 

    <table> 
     <tr> 
      <td><input type="submit" name="cel1"> 
     </tr> 
     <tr> 
      <td><input type="submit" name="cel2"> 
     </tr> 
     <tr> 
      <td><input type="submit" name="cel13"> 
     </tr> 
    </table> 

    <input type="submit" value="save"> 
</form> 

Indem die Senden-Schaltflächen in den Tabellenzellen ein Namensattribut, wird dieser Name auch vorhanden sein als Schlüssel auf dem $_REQUEST. Gehen Sie voran und var_dump die $ _REQUEST und Sie werden sehen, Sie können im Backend herausfinden, welche Taste gedrückt wurde, indem Sie überprüfen, welcher Schlüssel existiert.

Beachten Sie, dass POST/GET hier völlig irrelevant ist, beide funktionieren genauso. Und natürlich könnten Sie etwas CSS auf diese Schaltflächen anwenden, um sie transparent zu machen und sie auf die Tabellenzellen zu legen, so dass sie nicht wie Schaltflächen aussehen, sondern nur den Klick des Benutzers "erfassen".

Eine letzte Randnotiz, sind Sie sicher, dass Sie die Benutzer-ID als GET-Parameter senden möchten? Das wäre für jemanden mit schlechten Absichten sehr leicht zu manipulieren. Ziehen Sie in Betracht, die ID nicht zu senden, sondern in der Sitzung auf dem Server zu belassen.

+0

Danke für Ihre Antwort. Ja, das Senden der Benutzer-ID als get scheint unsicher, ist es aber nicht. In der Formularaktion werden die Berechtigungen für eingeloggte Benutzer überprüft. Einige Benutzer können die Zeitpläne anderer Benutzer ändern. –

+0

Vergessen zu sagen: Die UID ist NICHT die ID des Bearbeiters, sondern die ID des Benutzers, dem der Stundenplan hinzugefügt wurde. –

+1

Ja, ich habe das schon von deinem Update bekommen. Sie sind wahrscheinlich dann sicher (ich nehme an, dass dies nur für authentifizierte Benutzer zugänglich ist). Ich wollte nur eine kleine Warnung da draußen machen. Die Dinge, die Sie im Internet sehen ... – Pevara