Meerdere gegevens ineens opslaan
Graag wil ik een pagina creëren waaraop alle activiteiten vermeld staan. De leden kunnen dan afzonderlijk aangegeven pof ze aanwezig zijn of niet. (of deels)
Dus:
Datum: 1 Activiteit: 1 Aanwezig: ja/nee/deels Opmerking:
Datum: 2 Activiteit: 2 Aanwezig: ja/nee/deels Opmerking:
Datum: 3 Activiteit: 3 Aanwezig: ja/nee/deels Opmerking:
In eerste instantie had ik dit gemaakt met radiobuttons, maar dat krijg ik maar niet aan de gang.
Daarom heb ik eenzelfde idee gemaakt met een select.
Dit werkt voor een deel.
Als ik het formulier invul wordt alleen het eerste record opgeslagen en het Agenda_ID zelfs helemaal niet.
Waarschijnlijk doe ik iets fout met de lus, maar kan niet achterhalen wat.
Kan iemand me helpen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
if (!isset($_REQUEST['verzenden'])){
$sql= "SELECT *,
DATE_FORMAT(Agenda_Datum, '%e-%c-%Y') AS formatAgendaDatum
FROM agenda
ORDER BY Agenda_Datum ASC";
$resultaat = mysql_query($sql);
?>
<h1>Aanwezigheid</h1>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="form">
<?php
while($rij = mysql_fetch_assoc($resultaat)){
$id=$rij['Agenda_ID'];
?>
<input name="user" type="hidden" value="<?php echo $_SESSION['user'] ?>" />
<input name="agenda" type="hidden" value="<?php echo $rij['Agenda_ID'] ?>" />
<input name="datum" type="text" class="xsmall" value="<?php echo $rij['formatAgendaDatum'] ?>" />
<input name="afspraak" type="text" class="small" value="<?php echo $rij['Agenda_Afspraak'] ?>" />
<select name="optie" id="optie"><?php
$sqli = "SELECT * FROM meld_optie ORDER BY Meld_optie_ID ";
$resulaat1 = mysql_query($sqli);
while($rij1 = mysql_fetch_array($resulaat1)){
echo '<option value="'. $rij1['Meld_optie_ID'] . '">' . $rij1['Meld_optie_Naam'] . '</option>';
}
?>
</select>
<input name="opmerking" type="text" class="normal" value="opmerking bij ''deels''" />
<?php
}?>
<input name="verzenden" type="submit" class="button" id="verzenden" value="Opslaan" />
<input name="reset" type="reset" class="button" id="reset" value="formulier wissen" />
</form>
<?php
}else{ // hier komt de verwerking van het formulier.
$user = $_REQUEST['user'];
$agenda = $_REQUEST['agenda'];
$optie = $_REQUEST['optie'];
$opmerking = $_REQUEST['opmerking'];
$sql = "INSERT INTO agenda_users (Agenda_User_ID, Agenda_ID, ID_user, Agenda_User_Aanw, Agenda_User_Opm) VALUES ('','$user', '$agenda', '$optie', '$opmerking')";
if(!mysql_query($sql)){
echo '<p class="red">De aan-/afmeldingen zijn niet opgeslagen</p>';
}else{
echo '<p>De aan- en afmeldingen zijn opgeslagen <br /></p>';
echo '<a class="normal" href="aanwezig.php">Terug naar opstaande aan- / afmeldingen</a>';
}
mysql_close($db);
}
?>
if (!isset($_REQUEST['verzenden'])){
$sql= "SELECT *,
DATE_FORMAT(Agenda_Datum, '%e-%c-%Y') AS formatAgendaDatum
FROM agenda
ORDER BY Agenda_Datum ASC";
$resultaat = mysql_query($sql);
?>
<h1>Aanwezigheid</h1>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="form">
<?php
while($rij = mysql_fetch_assoc($resultaat)){
$id=$rij['Agenda_ID'];
?>
<input name="user" type="hidden" value="<?php echo $_SESSION['user'] ?>" />
<input name="agenda" type="hidden" value="<?php echo $rij['Agenda_ID'] ?>" />
<input name="datum" type="text" class="xsmall" value="<?php echo $rij['formatAgendaDatum'] ?>" />
<input name="afspraak" type="text" class="small" value="<?php echo $rij['Agenda_Afspraak'] ?>" />
<select name="optie" id="optie"><?php
$sqli = "SELECT * FROM meld_optie ORDER BY Meld_optie_ID ";
$resulaat1 = mysql_query($sqli);
while($rij1 = mysql_fetch_array($resulaat1)){
echo '<option value="'. $rij1['Meld_optie_ID'] . '">' . $rij1['Meld_optie_Naam'] . '</option>';
}
?>
</select>
<input name="opmerking" type="text" class="normal" value="opmerking bij ''deels''" />
<?php
}?>
<input name="verzenden" type="submit" class="button" id="verzenden" value="Opslaan" />
<input name="reset" type="reset" class="button" id="reset" value="formulier wissen" />
</form>
<?php
}else{ // hier komt de verwerking van het formulier.
$user = $_REQUEST['user'];
$agenda = $_REQUEST['agenda'];
$optie = $_REQUEST['optie'];
$opmerking = $_REQUEST['opmerking'];
$sql = "INSERT INTO agenda_users (Agenda_User_ID, Agenda_ID, ID_user, Agenda_User_Aanw, Agenda_User_Opm) VALUES ('','$user', '$agenda', '$optie', '$opmerking')";
if(!mysql_query($sql)){
echo '<p class="red">De aan-/afmeldingen zijn niet opgeslagen</p>';
}else{
echo '<p>De aan- en afmeldingen zijn opgeslagen <br /></p>';
echo '<a class="normal" href="aanwezig.php">Terug naar opstaande aan- / afmeldingen</a>';
}
mysql_close($db);
}
?>
Gewijzigd op 22/09/2010 14:24:13 door Marc rc is as
Als je meerdere inputvelden voor dezelfde soort informatie wilt gebruiken, dan zou je een array als veldnaam op kunnen geven. Bijvoorbeeld:
Als je na verzenden kijkt hoe de $_POST array eruit ziet, zul je zien dat de waarden van de verschillende 'user' velden nu in een array staan.
Van hieruit kun je nu de verschillende waarden in de database gaan invoeren door de $_POST array op een handige manier uit te lezen.
Gewijzigd op 22/09/2010 14:58:53 door - SanThe -
Bij mij is er echter niet bekend hoeveel het er gaan worden.
Hoe kan ik dat aangeven?
Code (php)
Gewijzigd op 22/09/2010 16:42:05 door Marc rc is as
Zie mijn eerdere antwoord: de oplossing die jij gevonden hebt, heb je niet nodig. Jij gebruikt immers al een while loop en als je arrays als namen voor je inputvelden gebruikt, wordt de input automatisch genummerd. Probeer het maar eens...
Dat komt natuurlijk door dit:
Quote:
Van hieruit kun je nu de verschillende waarden in de database gaan invoeren door de $_POST array op een handige manier uit te lezen.
Kan je me een voorzetje geven voor die "handige manier" aub.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<input name="user[]" type="hidden" value="<?php echo $_SESSION['user'] ?>" />
<input name="agenda[]" type="hidden" value="<?php echo $rij['Agenda_ID'] ?>" />
<input name="datum" type="text" class="xsmall" value="<?php echo $rij['formatAgendaDatum'] ?>" />
<input name="afspraak" type="text" class="small" value="<?php echo $rij['Agenda_Afspraak'] ?>" />
<select name="optie[]" id="optie"><?php
$sqli = "SELECT * FROM meld_optie ORDER BY Meld_optie_ID ";
$resulaat1 = mysql_query($sqli);
while($rij1 = mysql_fetch_array($resulaat1)){
echo '<option value="'. $rij1['Meld_optie_ID'] . '">' . $rij1['Meld_optie_Naam'] . '</option>';
}
?>
</select>
<input name="opmerking[]" type="text" class="normal" value="opmerking bij ''deels''" />
<?php
}?>
<input name="verzenden" type="submit" class="button" id="verzenden" value="Opslaan" />
<input name="reset" type="reset" class="button" id="reset" value="formulier wissen" />
</form>
<?php
}else{ // hier komt de verwerking van het formulier.
$user = $_REQUEST['user'];
$agenda = $_REQUEST['agenda'];
$optie = $_REQUEST['optie'];
$opmerking = $_REQUEST['opmerking'];
$sql = "INSERT INTO agenda_users (Agenda_User_ID, Agenda_ID, ID_user, Agenda_User_Aanw, Agenda_User_Opm) VALUES ('','$user', '$agenda', '$optie', '$opmerking')";
[/code]
<input name="agenda[]" type="hidden" value="<?php echo $rij['Agenda_ID'] ?>" />
<input name="datum" type="text" class="xsmall" value="<?php echo $rij['formatAgendaDatum'] ?>" />
<input name="afspraak" type="text" class="small" value="<?php echo $rij['Agenda_Afspraak'] ?>" />
<select name="optie[]" id="optie"><?php
$sqli = "SELECT * FROM meld_optie ORDER BY Meld_optie_ID ";
$resulaat1 = mysql_query($sqli);
while($rij1 = mysql_fetch_array($resulaat1)){
echo '<option value="'. $rij1['Meld_optie_ID'] . '">' . $rij1['Meld_optie_Naam'] . '</option>';
}
?>
</select>
<input name="opmerking[]" type="text" class="normal" value="opmerking bij ''deels''" />
<?php
}?>
<input name="verzenden" type="submit" class="button" id="verzenden" value="Opslaan" />
<input name="reset" type="reset" class="button" id="reset" value="formulier wissen" />
</form>
<?php
}else{ // hier komt de verwerking van het formulier.
$user = $_REQUEST['user'];
$agenda = $_REQUEST['agenda'];
$optie = $_REQUEST['optie'];
$opmerking = $_REQUEST['opmerking'];
$sql = "INSERT INTO agenda_users (Agenda_User_ID, Agenda_ID, ID_user, Agenda_User_Aanw, Agenda_User_Opm) VALUES ('','$user', '$agenda', '$optie', '$opmerking')";
[/code]
Gewijzigd op 22/09/2010 17:35:35 door Marc rc is as
Ik had al zoiets gevonden als dit. Standaard natuurlijk, maar ik zou niet weten hoe ik het hier moet toepassen. De key's zijn de "name" en de waarde de inhoud van de "name". Wat zet ik nou waar?
Een klein voorbeeldje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<pre>'.print_r($_POST, true).'</pre>'; // Print de $_POST array als voorbeeld
// Geef ingevulde gegevens als lijst weer
echo '<ul>';
foreach($_POST['naam'] as $key => $naam) {
echo '<li>'.$naam.' - '.$_POST['geboortedatum'][$key].'</li>';
}
echo '</ul>';
}
?>
<form action="#" method="post">
<?php
// Voorbeeld input velden
for($i = 1; $i <= 5; $i++) {
echo '<p>
<label>Naam</label>
<input type="text" name="naam[]" /><br />
<label>Geboortedatum</label>
<input type="text" name="geboortedatum[]" />
</p>';
}
?>
<input type="submit" value="verzenden" />
</form>
if($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<pre>'.print_r($_POST, true).'</pre>'; // Print de $_POST array als voorbeeld
// Geef ingevulde gegevens als lijst weer
echo '<ul>';
foreach($_POST['naam'] as $key => $naam) {
echo '<li>'.$naam.' - '.$_POST['geboortedatum'][$key].'</li>';
}
echo '</ul>';
}
?>
<form action="#" method="post">
<?php
// Voorbeeld input velden
for($i = 1; $i <= 5; $i++) {
echo '<p>
<label>Naam</label>
<input type="text" name="naam[]" /><br />
<label>Geboortedatum</label>
<input type="text" name="geboortedatum[]" />
</p>';
}
?>
<input type="submit" value="verzenden" />
</form>
Ik heb echter een onbekend aantal regels. De hoeveelheid regels worden nl uit de database gehaald. Hoveel het er zijn is steeds verschillend.
Hoe kan ik dat regelen?
Zoals gezegd, dat hoef je niet te doen. Dat maakt immers niet uit. Je kunt gewoon die for loop vervangen door jouw while loop! :-)