Ik heb het volgende script:


<html>
<head>
<script language="javascript">
fields = 10;
function addInput() {
if (fields != 1000) {
document.getElementById('text').innerHTML += "<tr><td>&nbsp;002:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr><br><tr><td>&nbsp;002:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr><br><tr><td>&nbsp;002:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr><br><tr><td>&nbsp;002:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr><br><tr><td>&nbsp;002:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr><br>";
fields += 5;
} else {
document.getElementById('text').innerHTML += "<br />Het maximum van 1.000 is bereikt.";
document.form.add.disabled=true;
}
}
</script>
<title></title>
</head>
<body>
<form name="form">
Titel: <input type='text' value='' size="75"/><br>
<table><tr><td>Taal 1:</td><td>Taal 2:</td></tr>
       <tr><td><input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
</table>
Inhoud:<br>
<table><tr><td>001:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>002:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>003:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>004:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>005:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>006:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>007:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>008:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>009:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
<tr><td>010:</td><td> <input type='text' value='' /></td><td><input type='text' value='' /></td></tr>
</table>
<div id="text">
<table>

</table>
</div>
<input type="button" onclick="addInput()" name="add" value="Meer velden toevoegen" /></table></form></body>
</html>


Nu wil ik, dat er inplaats van alleen maar 002 er 011, 012 etc. komt te staan en dat deze ook als name komen te staan bij het veld. Hoe doe ik dit?
En dan niet elke keer een insert uitvoeren maar met een bulk insert werken.
In de vorm van:

iNSERT INTO items (name, titel  VALUES ('naam1','titel'),('naam2','titel2')
als ik print_r($_POST); doe krijg ik dit:

Array ( [titel] => [t1] => [t2] => [links] => Array ( [001] => [002] => [003] => [004] => [005] => [006] => [007] => [008] => [009] => [010] => ) [rechts] => Array ( [001] => [002] => [003] => [004] => [005] => [006] => [007] => [008] => [009] => [010] => ) [sturen] => Versturen )

Hoe zet ik de gegevens netjes in een database?
Bump.
En nogmaals bump ik dit topic. Zie vraag:

als ik print_r($_POST); doe krijg ik dit:

Array ( [titel] => [t1] => [t2] => [links] => Array ( [001] => [002] => [003] => [004] => [005] => [006] => [007] => [008] => [009] => [010] => ) [rechts] => Array ( [001] => [002] => [003] => [004] => [005] => [006] => [007] => [008] => [009] => [010] => ) [sturen] => Versturen )

Hoe zet ik de gegevens netjes in een database?
Die gegevens zijn leeg. Er valt niet veel in de DB te zetten.

Even die print_r terug vertalen naar de array:
<?php
$a = Array (
'titel' => NULL,
't1' => NULL,
't2' => NULL,
'links' => Array (
'001' => NULL,
'002' => NULL,
'003' => NULL,
'004' => NULL,
'005' => NULL,
'006' => NULL,
'007' => NULL,
'008' => NULL,
'009' => NULL,
'010' => NULL,
),
'rechts' => Array (
'001' => NULL,
'002' => NULL,
'003' => NULL,
'004' => NULL,
'005' => NULL,
'006' => NULL,
'007' => NULL,
'008' => NULL,
'009' => NULL,
'010' => NULL
),
'sturen' => 'Versturen'
)
?>

Daar zit (bijna) niet in

------

Okay, de laatste keer toen ik hier iets zei, had ik opmerkingen over het formulier.
Ik heb sinds dien nog geen enkel verbeterd formulier gezien.

Ik ben benieuwd
Ik gaf de array's als voorbeeld. Het ging mij erom, hoe ik dat in een DB zet (weet ik nogsteeds niet). En betreft het formulier, deze bedoel je?

Kris Peeters op 06/12/2013 16:29:09

Alle gegevens in een database tabel steken, na de submit van de gebruiker. Dat bedoel je?

Ja, wat je dan moet doen: geen de input's een name, met de karakters [] aan het einde.
dus bv.

<input name="item[]">

Wat dan gebeurt bij het verwerken:
$_POST['item'] zal een array zijn.
$_POST['item'][0] is de eerste, $_POST['item'][1] de tweede, ...

Je kan die dus in een foreach steken

<?php
...
foreach($_POST['item'] as $key=>$item) {
...
}
?>




Allereerst moet je ervoor zorgen dat alle inputs die bij elkaar horen dezelfde keys krijgen, dus bv titel[001], links[001], rechts[001].
Dan kan je in PHP dit doen:

<?php
$values = array();
$sql = "INSERT INTO items (titel, links, rechts) VALUES ";
foreach ($_POST['titel'] as $key => $value) {
	if (trim($value) != '') {
		$values[] = "('" . $db->escape($value) . "','" .
			$db->escape($_POST['links'][$key]) . "','" . $db->escape($_POST['rechts'][$key]) ."')";
	}
}
$sql .= implode(',',$values);
?>

$db->escape() moet je wel even vervangen door de juiste functie van de eztensie die jij gebruikt.
Hoi Ger,

Dit heb ik nu als PHP:


<?php
include 'bgup.php';
error_reporting(E_ALL);
if(isset($_POST['add'])){
$id = rand(0,50000);
$titel = mysql_real_escape_string($_POST['titel']);
$taal_1 = mysql_real_escape_string($_POST['t1']);
$taal_2 = mysql_real_escape_string($_POST['t2']);
$leerj = mysql_real_escape_string($_POST['jaar']);
$vak = mysql_real_escape_string($_POST['vak']);
$values = array();
echo $values;
mysql_query("INSERT INTO woorden_lijsten(titel,inhoud_1,inhoud_2) VALUES ";
foreach ($_POST['titel'] as $key => $value) {
    if (trim($value) != '') {
        $values[] = "('" . mysql_real_escape_string($value) . "','" .
            mysql_real_escape_string($_POST['links'][$key]) . "','" . mysql_real_escape_string($_POST['rechts'][$key]) ."')");
    }
}
print(mysql_error());
}
?>


Echter krijg ik geen foutmelding, maar worden de records ook niet toegevoegd. Waardoor komt dit?
Zet de errors eens aan.

Bovenin je script:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

Er mist wat aan deze query:
mysql_query("INSERT INTO woorden_lijsten(titel,inhoud_1,inhoud_2) VALUES ";
Hoi SanThe,

De error's staan aan, maar maken geen verschil.
Als je goed verder kijkt zie je dat de query verder gaat na $values[] = .

Frank

Reageren