2017-05-14 4 views
-1

Ich habe überall gesucht und kann immer noch nicht die Antwort finden. Kann jemand helfen?Werte aus mehreren Tabellen in Auswahltabelle hinzufügen

Ich habe eine PHP-Form, die aus einer Textbox (mit Daten, die in Spalte name_id gehen) besteht und eine Checkbox, die die Möglichkeit zu 5 verschiedenen MySQL-Tabellen zu gehen:

'table A' 
'table B' 
'table C' 
'table D' 
'table E' 

Menschen können wählen, welche Tabelle sie wollen, und die name_id wird zu den ausgewählten Tabellen gehen.

Wie kann ich das tun?

+0

Warum gibt es 5 Tabellen statt 1? – Strawberry

Antwort

1

mein answere in verschieden von @ RandD-SexyBoy-. meine SQL-Abfrage unterscheidet sich von @ RandD-SexyBoy- er $sql = "INSERT INTO $tables[$i](nameID_column); mit aus VALUES (:nameID_column) wurden, wird verwendet haben $sql->prepare("INSERT INTO ".$v." (name_id) VALUES (?)"

der Benutzer

Fall reagiert Hier sind drei Fälle verwendet wurde zuerst: Benutzer eine einzelne Tabelle auswählen kann

Fall zweitens: Benutzer kann mehrere Tabellen auswählen. Hier müssen wir foreach() Schleife und dynamische SQL-Abfragen verwenden.

Fall drittens: Benutzer in diesem Fall jede Tabelle nicht auswählen können wir Benutzer eine Nachricht table not selected

HTML-Formular geben muss:

`

<html> 
    <head> 

    </head> 
    <body> 
     <form action="" method="post"> 
      <input type="text" name="name_id" required> 

      <p>select your table to add data</p> 
      <input type="checkbox" name="tables[]" value="tblA">Table A<br> 
      <input type="checkbox" name="tables[]" value="tblB">Table B<br> 
      <input type="checkbox" name="tables[]" value="tblC">Table C<br> 
      <input type="checkbox" name="tables[]" value="tblD">Table D<br> 
      <input type="checkbox" name="tables[]" value="tblE">Table E<br> 

      <input type="submit" name="submit"> 
     </form> 
    </body> 
</html> 

`

PHP-Datei:

<?php 
    $con = new mysqli('localhost','root','admin','demo'); 

    if(!$con){ 
     die("Connection ".$con->connect_error); 
    } 

    if(isset($_POST['submit'])){ 
     $name_id = $_POST['name_id']; 

     $tables = $_POST['tables']; 

     if(!empty($tables)){ 
      foreach($tables as $key=>$v){ 
       $sql = $con->stmt_init(); 
       if($sql->prepare("INSERT INTO ".$v." (name_id) VALUES (?)")){ 
        $sql->bind_param($name_id); 
        $sql->execute(); 

        echo "DATA INSERTED"; 
       } 
       else 
       { 
        echo "Error".$con->error; 
       } 
      } 
     } 
     else 
     { 
      echo "You have not selected tables"; 
     } 
    } 
?> 
+0

Danke Jungs ... Sie sind fantastisch –

+0

Ich habe diese Nachricht erhalten Warnung: Falsche Parameter Anzahl für mysqli_stmt :: bind_param() in ................. on line 350 DATA INSERTED –

+0

ok, dann ändere dieses '$ sql-> bind_param ($ name_id);' in dieses '$ sql-> bind_param ('i', $ name_id);'. Bei einem Fehler erhalten Sie den Code immer noch hier im Kommentarfeld.Und wenn Sie mehr über Bind param wissen möchten, klicken Sie auf [diesen Link] (http://php.net/manual/en/mysqli-stmt.bind-param.php). –

0

So ein naiver Ansatz könnte sein, wenn der Benutzer das Formular abschickt, auf Ihrer PHP-Seite, überprüfen Sie die Kontrollkästchen sind markiert und Ihr Zustand so etwas wie diese

if(checkbox_for_table_A) {// insert query} 

if(checkbox_for_table_B) {// insert query} 

if(checkbox_for_table_C) {// insert query} 

if(checkbox_for_table_D) {// insert query} 

if(checkbox_for_table_E) {// insert query} 

diese Weise sein könnte, wenn ein Kontrollkästchen ist Wenn diese Option ausgewählt ist, wird in dieser Tabelle gespeichert. Wenn mehr als eine Tabelle ausgewählt ist, wird sie in diese Tabelle übernommen.

Hoffe, das hilft! Frag jeden Zweifel, den du in den Kommentarbereich bekommst.

0

aus Quellen Anpassung: post checkbox value und Tutorial http://www.mustbebuilt.co.uk/php/insert-update-and-delete-with-pdo/, können Sie diesen Ansatz verwenden:

HTML Form:

<form action="checkbox-form.php" method="post"> 

    <input type="text" name="name_id" /><br /> 

    Select your database: <br/> 
    <input type="checkbox" name="formTables[]" value="A" />Table A<br /> 
    <input type="checkbox" name="formTables[]" value="B" />Table B<br /> 
    <input type="checkbox" name="formTables[]" value="C" />Table C<br /> 
    <input type="checkbox" name="formTables[]" value="D" />Table D<br /> 
    <input type="checkbox" name="formTables[]" value="E" />Table E<br /> 

    <input type="submit" name="formSubmit" value="Submit" /> 

</form> 

nun der PHP-Skript:

<?php 
    $pdo_connection = new PDO('mysql:host=localhost;dbname=test', 'demouser', 'demopass'); 
    $tables = $_POST['formTables']; 
    if(empty($tables)) 
    { 
    echo("You didn't select any tables."); 
    } 
    else 
    { 
    $N = count($tables); 

    echo("You selected $N table(s): "); 

    for($i=0; $i < $N; $i++) 
    { 
     $sql = "INSERT INTO $tables[$i](nameID_column); 
     $stmt = $pdo_connection->prepare($sql); 
     $stmt->bindParam(':nameID_column', $_POST['name_id'], PDO::PARAM_STR); 
     $stmt->execute(); 
     echo("Your ID Name was inserted into table $tables[$i] ! <br /> "); 
    } 
    } 
?>