2016-05-14 6 views
0

Im Folowing Code, den ich von einer Form in eine MySQL-Tabelle ein Insert täteINSERT von Kontrollkästchen, um MySQL - foreach-Anweisung

Die Formularfelder aus einer MySQL-Datenbank gefüllt werden, die korrekt funktionieren.

Das Problem besteht darin, Daten aus den mehreren Kontrollkästchen zu extrahieren und jeden Wert als neue Zeile in die 'selection' Spalten userid und videoid der Tabelle einzufügen.

Das Benutzer-ID-Feld ist korrekt eingefügt, aber die Video-ID gibt keine Daten aus.

 <?php 
    $con=mysqli_connect("$host", "$username",   "$password","$db_name")or die("cannot connect");//connection string 
    $user=$_POST['userid']; 
    $checkbox1=$_POST['videoid']; 
    $chk=""; 

    foreach($checkbox1 as $chk1) 
     { 
      $chk .= $chk1.","; 
     } 
    $in_ch=mysqli_query($con,"INSERT INTO tbl_selection (userid, videoid) VALUES ('$user', '$chk');"); 
    if($in_ch==1) 
     { 
      echo'<script>alert("Inserted Successfully")</script>'; 
     } 
    else 
     { 
      echo'<script>alert("Failed To Insert")</script>'; 
     } 
    } 
    ?> 
    </body> 
    </html> 

Dies ist die HTML-Formular, das aus einer mysql Tabelle aufgefüllt wird:

<?php 
    connect to database 
    ?> 
    <div class="control-group"> 
    <?php 
    $query = "SELECT * FROM video"; 
    $result2 = mysql_query($query); 
    while ($line = mysql_fetch_array($result2, MYSQL_ASSOC)) { 
    ?> 
    <div class="controls"> 
     <label class="checkbox"> 
      <input type="checkbox" name="videoid" value="<?php echo $line[id]?>"><?php echo $line[title]?> 
     </label> 
     </div> 
     <?php } ?> 
+1

Bitte Gebrauch nicht [die 'mysql_' Datenbankerweiterung] (http://stackoverflow.com/questions/12859942/why -shouldnt-ich-benutze-mysql-functions-in-php), es ist veraltet (für immer in PHP7 gegangen) Speziell, wenn Sie gerade PHP lernen, verbringen Sie Ihre Energie zu lernen, die 'PDO' Datenbank-Erweiterungen. [Hier starten] (http://php.net/manual/en/book.pdo.php) – RiggsFolly

+0

Sie müssen nur per Skript eine Verbindung zur Datenbank ONCE herstellen. Das ist ein zeitraubender Prozess – RiggsFolly

+0

... oder mysqli_, wenn Sie alt sein müssen skool – Strawberry

Antwort

0

1) Ändern

<input type="checkbox" name="videoid" value="<?php echo $line[id]?>"><?php echo $line['title']?> 

Um

<input type="checkbox" name="videoid[]" value="<?php echo $line[id]?>"><?php echo $line['title']?> 

Mittlere s, für mehrere Kontrollkästchen. Verwenden Sie name als array Typ. Wie videoid[].

2) Verwenden for oder foreach Schleife für mehrere Ankreuzfeld Wert in eine Tabelle eingefügt wird. Erkundigen Sie sich zunächst nach dem aktivierten Kontrollkästchen unter sizeof. Verwenden Sie dann entsprechend.

Aktualisiert-Code

<?php 
$con=mysqli_connect("$host", "$username","$password","$db_name")or die("cannot connect"); 
$user=$_POST['userid']; 
$videoCheckBox=$_POST['videoid']; 

$checkedVideo = sizeof($videoCheckBox); 

for($i=0;$i<$checkedVideo;$i++) { 
    $videoId = $videoCheckBox[$i]; 
    $queryVideo = mysqli_query($con,"INSERT INTO `tbl_selection` (`userid`, `videoid`) VALUES ('$user', '$videoId');"); 
} 

if($checkedVideo == 0) { 
    echo'<script>alert("Failed To Insert")</script>'; 
} elseif($queryVideo) { 
    echo'<script>alert("Inserted Successfully")</script>'; 
} 

?> 
</body> 
</html> 


<div class="control-group"> 
    <?php 
    $query = "SELECT * FROM video"; 
    $result2 = mysql_query($query); 
    while ($line = mysql_fetch_array($result2, MYSQL_ASSOC)) { 
    ?> 
    <div class="controls"> 
     <label class="checkbox"> 
      <input type="checkbox" name="videoid[]" value="<?php echo $line['id']?>"><?php echo $line['title']?> 
     </label> 
    </div> 
    <?php } ?> 

Für weitere Informationen, klicken Sie bitte Inserting data into mySQL table from mutlidimensional input form