Hallo,
Ik ben bezig met een overhoringsprogramma. ik ben al best ver, maar ik loop tegen een probleem aan.
Ik probeer meer dan 1 rij een een keer in mijn tabel te inserten, maar alleen de laatste rij wordt ge'insert.
Ik heb al dingen geprobeerd en het lukte een paar keer, maar opeens lukte het niet..
weet iemand hoe ik meerdere rijen kan inserten?
dit is het stukje code

<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST') {

$woord1 = mysqli_real_escape_string($con, $_POST['woord1']);
$woord2 = mysqli_real_escape_string($con, $_POST['woord2']);



if($sql = "
INSERT INTO overhoring (userid, woord1, woord2, kennis)
VALUES ('".$_SESSION['userid']."', '".$woord1."', '".$woord2."', 'nee')
") {
$result = mysqli_query($con, $sql);
$gelukt = '<br />gelukt';
echo $gelukt;
}
else {
	echo 'mislukt';
}
}
?>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#btn1").click(function(){
	$("p").append('<br /><div class="form-group col-md-3"> <input class="form-control" name="woord1" required></div><div class="form-group col-md-3"><input class="form-control" name="woord2" required></div><br /><br />');
    });    
	
	$("#btn2").click(function(){
	$("p").append('<br /><div class="form-group col-md-3"> <input class="form-control" name="woord1" required></div><div class="form-group col-md-3"><input class="form-control" name="woord2" required></div><br /><br />');
    });

});
</script>

</head>
<body>
<div class="header"></div>
<div class="container">


<button id="btn1" class="btn btn-default">woorden toevoegen</button>

<form method="post">

<br /><br />
<div class="form-group col-md-3"> <input class="form-control" name="woord1" required> </div> <div class="form-group col-md-3"><input class="form-control" name="woord2" required></div>
<br /><br />
<p>	</p>
<input type="submit" class="btn btn-default" value="klaar"/>

</form>


groetjes fabian http://web-stars.nl/
Je moet wel kijken of je $result gelukt is, niet je string met je SQL-query.
Verder moet je de blokhaken [] achter woord1 en woord2gebruiken in je HTML-code. Dan wordt alles uit dezelfde groep door PHP als een array behandeld.

Deze kan je dan doorlopen met foreach()
bedankt! :) Hoe werkt dat met een foreach
Of je bouwt je SQL-string op en INSERT dan ook echt in 1x (meerdere kolommen):

INSERT INTO table (col_x, col_y, col_z)
VALUES
(x_1, y_1, z_1),
...
(x_n, y_n, z_n);
Fabian webstars op 21/08/2015 16:31:09

bedankt! :) Hoe werkt dat met een foreach

In dat geval kan je je $_POST['woord1']-array gewoon uitlezen, en alle waarden opslaan:

<?php
foreach($_POST['woord1'] as $woord1) {
echo $woord1."<br />";
}
?>
@thomas, sorry maar ik snap niet wat je daar mee bedoeld ((x_1, y_1, z_1),
...
(x_n, y_n, z_n); )

ik werk nog te veel met basis om die dingen te begrijpen :(

@aar ik zal het proberen en mn code aanpassen.
Ik bedoelde daarmee te zeggen dat je meerder VALUES-blokken in één keer kunt inserten.

Als je de volgende invoervelden hebt (zoals Aar aangeeft, met array-haken):

<input type="text" name="woord1[]" /><input type="text" name="woord2[]" />
<input type="text" name="woord1[]" /><input type="text" name="woord2[]" />
<input type="text" name="woord1[]" /><input type="text" name="woord2[]" />


Dan heb je dus effectief drie woord1-woord2 paren.

Je kunt dan twee dingen doen:
1. Voor elke rij een INSERT-query bouwen, dit is waarschijnlijk wat Aar bedoelde

dus zoiets:
<?php
// er vanuit gaande dat er evenveel woord1[] als woord2[] velden zijn
foreach ($_POST['woord1'] as $nummer => $woord1) {
    $woord2 = $_POST['woord2'][$nummer];
    // je INSERT query voor de huidige rij
}
?>



of
2. Je bouwt je INSERT statement op, en voert 1 query uit:
<?php
$sql = 'INSERT INTO (x,y,z) VALUES ';
$values = array();
foreach ($_POST['woord1'] as $nummer => $woord1) {
    $woord2 = $_POST['woord2'][$nummer];
    // $woord1, $woord2, en wat je verder nog in een rij wil stoppen
    $values[] =  "(...,'".$woord1."','".$woord2."',...)";
}
$sql .= implode(',', $values);
// en hier voer je in 1x je query uit
?>


Maar misschien is het beter in jouw geval om de simpele aanpak te kiezen.

Vergeet ook niet je DATA in je query te ontdoen van een mogelijk speciale betekenis in SQL met behulp van een escape-functie.
Mogelijk sprake van luiheid of andere verwachtte kennis die de topicstarter wel zou hebben, en een placeholder gebruikt. Aan jouw om het af te maken.

Het had ook a,b,c kunnen zijn of z,y,x...
Om het voorbeeld simpel te houden... Ik ga de code niet helemaal voor je uitschrijven, dan kan ik hier de hele dag wel aan de gang gaan.

EDIT: luiheid? lol.

Ik denk niet dat we de copy-paste mentaliteit op deze manier verder moeten voeden. Of mag ik geen beroep doen op het intellect van de vragensteller?
allang blij met jullie hulp

het lukt trouwens nog steeds niet echt xD maar ik ga blijven proberen en nog wat op internet zoeken! als het dan nog steeds niet lukt. post ik wel waar ik tegen aan loop

[size=xsmall]Toevoeging op 21/08/2015 17:30:21:[/size]

thomas geen zorgen, der is niks met mijn intelligentie. Jammer van je vooroordeel.

Reageren