2017-04-27 5 views
-2

Dies ist mein erstes Mal eine Frage auf Stackoverflow Frage und diese Frage hat mich ratlos. Ich bin auch ein Anfänger bei PHP und HTML.Wie Checkboxen in mysql Tabelle abgerufen werden?

<body> 
<div class="topnav" id="navbar"> 
<a href ="user_main_page.php"><img style="max-width:32px; margin-top:-3px;" 
src="/image/logo.jpg"></a1> 
<a href="user_main_page.php">Home</a> 
<a class="active" href="user_ordernow.php">Order Now</a> 
<a href='user_menu.php'>Our Menu</a> 
<a href="user_about.php">Who are we?</a> 
<a href="user_contact.php">Contact Us</a> 
<a style = "float:right" href="../login_page.php">Log Out</a> 
</div> 

<div class="tab"> 
<button class="tablinks" onclick="openTab(event, 'Breakfast')" 
id="defaultOpen">Breakfast Menu</button> 
<button class="tablinks" onclick="openTab(event, 'Snacks')">Snacks</button> 
<button class="tablinks" onclick="openTab(event, 'Drinks')">Drinks</button> 
<button class="tablinks" onclick="openTab(event, 'Main')">Main 
Button</button> 
<button class="tablinks" onclick="openTab(event, 
'Checkout')">Checkout</button> 
</div> 

<div id="Breakfast" class="tabcontent"> 
<?php 
    /*declare parameters for $conn*/ 
    $username="root"; 
    $password=""; 
    $database="login"; 

    $con = mysql_connect("localhost", $username, $password); 
    $selectdb = mysql_select_db("login",$con); 

    $result = mysql_query("SELECT * FROM menu where category='1'") 
    or die(mysql_error()); 

    echo "<table border='0' cellpadding='10'>"; 
    echo "<tr> <th>Order</th> <th>ID</th> <th>Product</th> <th>Price ($)</th></tr>"; 
     // loop through results of database query, displaying them in the table 

     while($row = mysql_fetch_array($result)) { 
     echo "<tr>"; // echo out the contents of each row into a table 
     echo '<td><input type="checkbox" value="" name="id[]" />' . '</td>'; />' . '</td>'; 
     echo '<td>' . $row['id'] . '</td>'; 
     echo '<td>' . $row['name'] . '</td>'; 
     echo '<td>' . $row['price'] . '</td>'; 
     echo "</tr>"; 
     } 

echo "</table>"; 
?> 
</div> 
<div id="Snacks" class="tabcontent"> 
    <h3>snacks</h3> 
    <p></p> 
</div> 
<div id="Drinks" class="tabcontent"> 
    <h3>Drinks</h3> 
    <p></p> 
</div> 
<div id="Main" class="tabcontent"> 
    <h3>Main</h3> 
    <p></p> 
</div> 
<div id="Checkout" class="tabcontent"> 
    <h3>Checkout</h3> 
    <p></p> 
</div> 

Es ist mit einer Mysql-Datenbank Login-und Tabellenmenü verbunden. Im PHP-Abschnitt des Codes greife ich auf die Datenbank zu und zeige die Datenbank in einer Tabelle an. Das Problem, das ich habe, ist das Abrufen der angekreuzten Kontrollkästchen, nachdem ich am Ende einen Absenden-Button gedrückt habe. Wie kann ich, nachdem ich eine Submit-Schaltfläche gedrückt habe, abrufen, welche Checkboxen aktiviert sind, und diese Informationen in einer anderen MySQL-Datenbank speichern? Das aktuelle Layout ist so.

webpage design - picture

Danke im Voraus !!

+0

Checkboxen sind UI-Artefakte. Sie müssen sie in eine Eins-zu-Viele-Beziehung in Ihrer Datenbank übersetzen und die Tabellen entsprechend aktualisieren. – duffymo

+3

@duffymo nutzlose Antwort für einen Anfänger ... – VikingCode

+0

Sie müssen die Seite über JS aktualisieren - realistisch müssen Sie Ihre abrufen und speichern (CRUD) PHP-Code von Ihrem HTML (Ansicht) zu entkoppeln. JS sollte einen asynchronen Aufruf an das/die Skript (e) machen, die mit der Datenbank kommunizieren, und diese Ergebnisse verwenden, um Felder zu aktualisieren. Allerdings ist das momentan wahrscheinlich nicht möglich - also fügen Sie einfach eine Auswertung in Ihre 'while' Schleife ein und nachdem jemand das Formular übermittelt hat, zeichnen Sie die Seite neu, die Idee ist, dass Ihre aktualisierten Daten vorhanden sein sollten, und Wenn die Auswertung in der while-Schleife erfolgt, gibt Ihr HTML den aktuellen Zustand der Daten wieder. –

Antwort

3

alle Ihre Felder sind benannt Angenommen, HTML sendet alle Textfelder an den Server, aber nur ausgewählt Schaltflächen. Für normale Schaltflächen und Optionsfelder ist das intuitiv, für Kontrollkästchen jedoch erfordert dies zusätzliche Arbeit.

In Ihrem Fall haben die Checkboxen den Namen id[]. PHP werden sehen, dass als Array von Daten:

$_POST['id'][] 

(?. Oder ist es $_GET ich nicht die Form Methode sehen)

Das Problem ist, dass Sie nicht wissen, welche Eins wird überprüft, weil die Array-Schlüssel nur die ausgewählten Boxen widerspiegeln.

Es ist besser, wenn Sie die folgende verwenden:

'<td><input type="checkbox" value="" name="id[' . $row['id'] . ']" … 

Das heißt, stellen die id in der Array-Schlüssel des Namens. Sie werden eine Reihe von Namen haben wie:

name=id[3] 
name=id[4] 
name=id[7] 

oder was auch immer Ihre IDs sind.

Dann in PHP, könnten Sie führen die folgenden Schritte aus:

if(isset($_POST['id'])) {    // any checked? 
    $ids=array_keys($_POST['id']); // get selected keys 
    foreach($ids as $id) { 
     // process each selected id 
    } 
} 

Der Trick ist:

  • put setzen ID als Schlüssel in jedem Checkbox Name: name="id[…]"
  • in PHP-Extrakt Diese Tasten
+0

Vielen Dank für Ihre Antwort. Es hat mein Problem endlich gelöst! –

0

Sie müssen die Seite über JS aktualisieren - realistisch müssen Sie Ihre abrufen und speichern (CRUD) PHP-Code von Ihrem HTML (Ansicht) zu entkoppeln. JS sollte einen asynchronen Aufruf an das/die Skript (e) machen, die mit der Datenbank kommunizieren, und diese Ergebnisse verwenden, um Felder zu aktualisieren.

Das ist jedoch wahrscheinlich außerhalb des Umfangs Ihrer Fähigkeit jetzt - also stattdessen - fügen Sie einfach eine Auswertung in Ihrer While-Schleife und nachdem jemand das Formular, neuraw die Seite, die Idee, dass Ihre aktualisierten Daten vorhanden sein sollte und wenn die Auswertung in der while-Schleife nimmt, Ihre HTML spiegelt den aktuellen Zustand ist der Daten - so etwas wie dieses (im Js ganz hier zu ignorieren):

<body> 
<div class="topnav" id="navbar"> 
<a href ="user_main_page.php"><img style="max-width:32px; margin-top:-3px;" 
src="/image/logo.jpg"></a1> 
<a href="user_main_page.php">Home</a> 
<a class="active" href="user_ordernow.php">Order Now</a> 
<a href='user_menu.php'>Our Menu</a> 
<a href="user_about.php">Who are we?</a> 
<a href="user_contact.php">Contact Us</a> 
<a style = "float:right" href="../login_page.php">Log Out</a> 
</div> 

<div class="tab"> 
<button class="tablinks" onclick="openTab(event, 'Breakfast')" 
id="defaultOpen">Breakfast Menu</button> 
<button class="tablinks" onclick="openTab(event, 'Snacks')">Snacks</button> 
<button class="tablinks" onclick="openTab(event, 'Drinks')">Drinks</button> 
<button class="tablinks" onclick="openTab(event, 'Main')">Main 
Button</button> 
<button class="tablinks" onclick="openTab(event, 
'Checkout')">Checkout</button> 
</div> 

<div id="Breakfast" class="tabcontent"> 
<?php 
    /*declare parameters for $conn*/ 
    $username="root"; 
    $password=""; 
    $database="login"; 

    $con = mysql_connect("localhost", $username, $password); 
    $selectdb = mysql_select_db("login",$con); 

    $result = mysql_query("SELECT * FROM menu where category='1'") 
    or die(mysql_error()); 

    echo "<table border='0' cellpadding='10'>"; 
    echo "<tr> <th>Order</th> <th>ID</th> <th>Product</th> <th>Price ($)</th></tr>"; 
     // loop through results of database query, displaying them in the table 

     while($row = mysql_fetch_array($result)) { 
     echo "<tr>"; // echo out the contents of each row into a table 
     echo '<td><input type="checkbox" value="" name="id[]" '. ($row['selected'] ? .' checked=true '. : .''.).' />' . '</td>'; />' . '</td>'; 
     echo '<td>' . $row['id'] . '</td>'; 
     echo '<td>' . $row['name'] . '</td>'; 
     echo '<td>' . $row['price'] . '</td>'; 
     echo "</tr>"; 
     } 

echo "</table>"; 
?> 
</div> 
<div id="Snacks" class="tabcontent"> 
    <h3>snacks</h3> 
    <p></p> 
</div> 
<div id="Drinks" class="tabcontent"> 
    <h3>Drinks</h3> 
    <p></p> 
</div> 
<div id="Main" class="tabcontent"> 
    <h3>Main</h3> 
    <p></p> 
</div> 
<div id="Checkout" class="tabcontent"> 
    <h3>Checkout</h3> 
    <p></p> 
</div> 
Verwandte Themen