Hallo allemaal,

Ik ben een formulier aan het maken waar de gebruiker het onderwerp, locatie en omschrijving d.m.v. een input en textarea kan invullen. Dit alles staat achter elkaar en herhaald zich 8 keer.

Voorbeeld: ( en dan 8 x onder elkaar :D)

<tr>
<td valign="top"><input type="text" name="onderwerp[1]" /></td><td valign="top"><input type="text" name="locatie[1]" /></td><td valign="top"><textarea cols="20" rows="4" name="omschrijving[1]"></textarea></td>
</tr>


Is het ook mogelijk d.m.v. een foreach deze velden per regel uit te lezen?
Zelf dacht ik iets aan:

<?php
foreach($_POST['onderwerp'] AS $onderwerp, $_POST['locatie'] AS $locatie,$_POST['omschrijving'] AS $omschrijving )
{
echo $onderwerp $locatie $omschrijving;
}
?>

Dit hier boven gaat natuurlijk nooit werken, maar is er z`n oplossing?

Ik wil dus dat de foreach regel bij regel houd! zodat ik dat ook op die manier kan opslaan in een Database.

Thanks alvast :D

Ruliezz
Begrijp ik het goed dat je de regels van het textvak apart wilt opslaan in de db?
Text splitsen op " \n " or " </br> "
Als goed is kan dat met explode()
@mark moes: ja ik wil graag elke input veld opslaan in de db. Maar wel 1 regel in 1 x

Dus:

onderwerp, locatie en omschrijving zijn 3 losse items maar moeten wel als 1 regel worden weergegeven in de database, dus dat ze 1 id hebben.

En dit moet zich herhalen voor elke regel dus 8 x in mijn geval.
ik zie dat dus zo:
<?php
mysql_query("INSERT INTO tabel WHERE id, onderwerp, locatie, beschrijving VALUES '','".mysql_real_escape($_POST['onderwerp'])."','".mysql_real_escape($_POST['locatie']).'",'".mysql_real_escape($_POST['beschrijving'])."'");
?>

en dat gewoon in een loopie waarin je kijkt of er gepost is, en dan elke keer deze query
Heb je een voorbeeld met een loopie?

En waar voor dient die mysql_real_escape??
Als ik het goed begrijp wil je dit of zo iets.

<?php
function opslanInTb($onderwerp, $locatie, $omschrijving){
mysql_query("INSERT INTO tabel (onderwerp, locatie, beschrijving) VALUES ('". mysql_real_escape($_POST['onderwerp']) ."',
'". mysql_real_escape($_POST['locatie']) ."',
'". mysql_real_escape($_POST['beschrijving']) ."')");
}
if (isset($_POST['submit'])){
for ($i=0; $i < 8; $i++){
if ($_POST["onderwerp". $i] !="" AND $_POST["locatie". $i]!="" AND $_POST["omschrijving". $i] != "")
opslanInTb($_POST["onderwerp". $i], $_POST["locatie". $i], $_POST["omschrijving". $i]);
}
}
echo '<table border="1">';
echo '<form name="test" method="post" action="'. $_SERVER['PHP_SELF'] .'">';
for ($i=0; $i < 8; $i++){
echo '<tr>';
echo '<td><input type="text" name="onderwerp'. $i .'" /></td>';
echo '<td><input type="text" name="locatie'. $i .'" /></td>';
echo '<td><textarea cols="20" rows="4" name="omschrijving'. $i .'"></textarea></td>';
echo '</tr>';
}
echo '<tr>';
echo '<td ><input type="submit" name="submit" value="verzenden"/></td> ';
echo '</tr>';
echo '</form></table>';

?>
jah idd, dit is inderdaad wat ik wil. Maar kan dit ook met een foreach of is dit de enigste oplossing?
Hmmm natuurlijk
Een lus blijf een lus
Alleen alle lus heb zijn eigen extra mogelijkheden

<?php
$i= 0;
foreach ($i < 8){
if ($_POST["onderwerp". $i] !="" AND $_POST["locatie". $i]!="" AND $_POST["omschrijving". $i] != "")
opslanInTb($_POST["onderwerp". $i], $_POST["locatie". $i], $_POST["omschrijving". $i]);
$i++;
}
?>
Kan ook met foreach:

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
foreach($_POST['naam'] as $key => $value)
{
echo $_POST['naam'][$key] . ' | ' . $_POST['email'][$key] . ' | ' . $_POST['adres'][$key] . '<br />';
}
}
else
{
echo '<form method="post">';
for($i=0; $i<8; $i++)
{
echo '<input type="text" name="naam[' . $i . ']" /> | ';
echo '<input type="text" name="email[' . $i . ']" /> | ';
echo '<input type="text" name="adres[' . $i . ']" /><br />';
}
echo '<br /><input type="submit" name="submit" value="Opslaan" />';
echo '</form>';
}

?>
Alleen begint jou for-loop bij 0 :)

Reageren