Hallo mensen,

Ik heb een vraag over hoe je een multidimensional array kan inserten in je database, heb dus 4 tekstvakken naast elkaar en dat 15 keer. Het hangt er dus van af hoeveel rijen de gebruiker gebruikt

Met vriendelijke groet,

Murtaza
Er vanuitgaande dat je MySQLi gebruikt:
- loop met enkele INSERT-query die 15x wordt doorlopen
- mysqli_multi_query, al zou ik dit niet aanraden
- 1 query bouwen met meerdere inserts
- prepared statements, je bouwt 1x het query "template", en voert deze vervolgens met verschillende parameter-waarden uit

Take your pick :D.

Als dit geen operatie is die je vaak uitvoert, dan hoef je je waarschijnlijk niet heel erg te bekommeren over de efficientie waarmee dit gebeurt.
even googlen op insert multiple rows MySQL.
Voorbeeldje:

INSERT INTO pxlot (realname,email,address,phone,status,regtime,ip) 
values 
 ('$realname','$email','$address','$phone','0','$dateTime','$ip')
,('$realname','$email','$address','$phone','0','$dateTime','$ip')
,('$realname','$email','$address','$phone','0','$dateTime','$ip')

geeft drie records.
Zo'n statement bouw je op door middel van een loopje om je array.
en wat nou als er 2 rijen moet worden opgeslagen in de database
Are you kidding?

Uiteraard maak je hier een lus voor die de query samenstelt.
<?php
$regels = array();
foreach($multidimensionalArray as $pxlot {
$regels[] = "('" . $pxlot['realname'] . "','" .
$pxlot['email'] ."','" .
$pxlot['address'] ."','" .
$pxlot['phone'] ."','0','" .
$pxlot['dateTime'] ."','" .
$pxlot['ip'] ."')";
}

$query = "INSERT INTO pxlot (realname,email,address,phone,status,regtime,ip) values " .
implode(', ', $regels);
?>





Hartelijk dank Frank Nietbelangrijk maar hoe kom je aan $multidimensionalArray??
Die mag je vervangen voor de naam van jouw multidimensionale array. (Zie je openingsvraag)
ik heb zo een html form

<select name="bedrijfsnaam[]">
<option>VB1</option>
<option>VB2</option>
<option>VB3</option>
</select>
<input type="text" name="ProdOms[]">
<input type="text" name="Aantal[]">
<input type="text" name="Prijs[]">

dus dan moet ik voor select en de 3 input's een apparte foreach aanmaken??
Dan wel inderdaad. Maar je kan ook dit truukje uit mijn voorbeeld halen. Het gaat hier vooral om de name attributen van de <input> elementen.


name="article[0][artnr]"
name="article[0][aantal]"


EDIT:

Laat de prijs er uit. Het gevaar ontstaat dat gebruikers jouw prijzen gaan aanpassen. Tenzij het natuurlijk een admin gedeelte is om juist de prijzen in het systeem te kunnen aanpassen.
Ik heb al een dynamisch formulierveld 15 in totaal zie komen alle 15 in een keer in beeld stel als ik er maar 15 nodig heb dan kan ik ze verwijderen maar toch bedankt voor je informatie ik ga er naar kijken
Het bovenstaande voorbeeld bevatte een onjuistheid. Dit is inmiddels aangepast.

Reageren