variable automatisch genereren in lus (Opgelost)
html_user - 09/04/2012 10:32 (laatste wijziging 09/04/2012 10:39)
Lid
Ik probeer een formulier te maken waar je eerst zelf moet kiezen hoeveel keuzes er zijn. Je selecteert dit aantal uit een drop down lijstje. Deze worden dan verwerkt in php en roept het aantal input velden op dat de gebruiker gekozen heeft.
Mijn probleem zit bij het automatisch genereren van de variable voor elk input veld. Ik gebruik nu 'i' zoals je kunt zien in mijn code. Ik laat deze input velden ook valideren door een lus die dan normaal dezelfde 'i' heeft maar dit werkt niet. Ik krijg de waarden niet in de database.
Mijn code voor de input velden te maken:
<td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
<td> <select name="keuze">
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select> <input type="submit" name="zendkeuze" value="Maak keuze"/></td>
</tr>
<?php
if(isset($_POST['zendkeuze'])) {
for($i = 1; $i <= $_POST[keuze]; $i++) {
echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i ' id='text' name='keuze $i ' </td></tr>";
}
}
?>
<td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
<td> <select name="keuze">
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select> <input type="submit" name="zendkeuze" value="Maak keuze"/></td>
</tr>
<?php
if ( isset ( $_POST [ 'zendkeuze' ] ) ) {
for ( $i = 1 ; $i <= $_POST [ keuze] ; $i ++ ) {
echo "<tr><td> Keuze $i : </td> <td> <input type='text' name='keuze $i ' id='text' name='keuze $i ' </td></tr>" ; }
}
?>
Mijn code die het verwerkt:
(Ik heb wel enkele delen weggelaten om het overzichtelijker te maken, er zit dus nu wel een syntax error in.)
<?php
for($i = 1; $i <= $_POST[keuze]; $i++) {
if( $_POST["keuze $i"] == ""){
$error[] = "<b> Er is niets ingevuld bij keuze $i.</b> ";
}
}
//Errors moeten hier worden weergegeven --> Sitemasters
// -- Geen errors gevonden in de ingevulde gegevens!
else{
$sql = mysql_query("INSERT INTO plan (optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10)
VALUES ('".$_POST['keuze1']."','".$_POST['keuze2']."','".$_POST['keuze3']."','".$_POST['keuze4']."','".$_POST['keuze5']."','".$_POST['keuze6']."','".$_POST['keuze7']."','".$_POST['keuze8']."','".$_POST['keuze10']."','".$_POST['keuze10']."')");
}
?>
<?php
for ( $i = 1 ; $i <= $_POST [ keuze] ; $i ++ ) {
if ( $_POST [ "keuze $i " ] == "" ) {
$error [ ] = "<b> Er is niets ingevuld bij keuze $i .</b> " ;
}
}
//Errors moeten hier worden weergegeven --> Sitemasters
// -- Geen errors gevonden in de ingevulde gegevens!
else {
$sql = mysql_query ( "INSERT INTO plan (optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10) VALUES ('" . $_POST [ 'keuze1' ] . "','" . $_POST [ 'keuze2' ] . "','" . $_POST [ 'keuze3' ] . "','" . $_POST [ 'keuze4' ] . "','" . $_POST [ 'keuze5' ] . "','" . $_POST [ 'keuze6' ] . "','" . $_POST [ 'keuze7' ] . "','" . $_POST [ 'keuze8' ] . "','" . $_POST [ 'keuze10' ] . "','" . $_POST [ 'keuze10' ] . "')" ) ;
}
?>
10 antwoorden
Gesponsorde links
icemar - 09/04/2012 11:02 (laatste wijziging 09/04/2012 11:03)
Lid
Ik zie dat er diverse dingen verkeerd staan.
Heb ze aangepast en dan zou het beter moeten gaan.
<td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
<td>
<form method="post" >
<select name="keuze">
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select> <input type="submit" name="zendkeuze" value="Maak keuze"/>
</form></td>
</tr>
<?php
if(isset($_POST['zendkeuze'])) {
// form toevoegen
echo '<form method="post" >';
for($i = 1; $i <= $_POST[keuze]; $i++) {
// hier spaties verwijderen echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i ' id='text' name='keuze $i ' </td></tr>";
echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i' id='text' name='keuze $i' </td></tr>";
}
//opslaanknop toevoegen
echo '<input type="submit" name="opslaan" value="opslaan"/>
</form>';
}
for($i = 1; $i <= $_POST[keuze]; $i++) {
if( $_POST["keuze $i"] == ""){
$error[] = "<b> Er is niets ingevuld bij keuze $i.</b> ";
}
}
//Errors moeten hier worden weergegeven --> Sitemasters
// -- Geen errors gevonden in de ingevulde gegevens!
else{
$sql = mysql_query("INSERT INTO plan (optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10)
VALUES
('".$_POST['keuze_1']."','".$_POST['keuze_2']."','".$_POST['keuze_3']."','".$_POST['keuze_4']."','".$_POST['keuze_5']."','".$_POST['keuze_6']."','".$_POST['keuze_7']."','".$_POST['keuze_8']."','".$_POST['keuze_9']."','".$_POST['keuze_10']."')");
// stond 2x keuze 10 in
}
<td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
<td>
<form method="post" >
<select name="keuze">
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select> <input type="submit" name="zendkeuze" value="Maak keuze"/>
</form></td>
</tr>
<?php
if ( isset ( $_POST [ 'zendkeuze' ] ) ) { // form toevoegen
echo '<form method="post" >' ;
for ( $i = 1 ; $i <= $_POST [ keuze] ; $i ++ ) {
// hier spaties verwijderen echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i ' id='text' name='keuze $i ' </td></tr>";
echo "<tr><td> Keuze $i : </td> <td> <input type='text' name='keuze $i ' id='text' name='keuze $i ' </td></tr>" ; }
//opslaanknop toevoegen
echo '<input type="submit" name="opslaan" value="opslaan"/> </form>' ;
}
for ( $i = 1 ; $i <= $_POST [ keuze] ; $i ++ ) {
if ( $_POST [ "keuze $i " ] == "" ) {
$error [ ] = "<b> Er is niets ingevuld bij keuze $i .</b> " ;
}
}
//Errors moeten hier worden weergegeven --> Sitemasters
// -- Geen errors gevonden in de ingevulde gegevens!
else {
$sql = mysql_query ( "INSERT INTO plan (optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10) VALUES
('" . $_POST [ 'keuze_1' ] . "','" . $_POST [ 'keuze_2' ] . "','" . $_POST [ 'keuze_3' ] . "','" . $_POST [ 'keuze_4' ] . "','" . $_POST [ 'keuze_5' ] . "','" . $_POST [ 'keuze_6' ] . "','" . $_POST [ 'keuze_7' ] . "','" . $_POST [ 'keuze_8' ] . "','" . $_POST [ 'keuze_9' ] . "','" . $_POST [ 'keuze_10' ] . "')" ) ;
// stond 2x keuze 10 in
}
suc6 er mee
html_user - 09/04/2012 11:43 (laatste wijziging 09/04/2012 11:55)
Lid
Ik heb mijn fouten veranderd maar het werkt nog steeds niet ik denk dat het aan iets anders ligt. Misschien aan de controles die ik uitvoer(het verwerkende gedeelte). Als je het formulier eens test zie je dat hij steeds een error geeft op keuze 1 en keuze 2. Ook al is er geen error en als er een error is op keuze 3, 4, 5,... Wordt deze niet weergegeven.
Hierbij heel mijn code en ook de online versie van het programma.
Voorbeeld online
Het bericht Plaatsen:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Socializ - Home</title>
<link rel="stylesheet" href="Planner.css" type="text/css" />
</head>
<body>
<div id="content"> <!-- Hierin zit alles de page en de balkuit -->
<div id="page">
<img src="/Afbeeldingen/background_blauw.png" id="bheader" />
<div id="werkblad">
<?php
if(!isset($_POST['nieuwb'])) {
?>
<form name="nieuwb" method="post" action="">
<table>
<tr>
<td> Naam Bericht: </td><td> <input type="text" name="naamb" id="naamb" /></td>
</tr><tr>
<td> Omschrijving </td> <td> <textarea name="omschrijving" id="omschrijving" > </textarea></td>
</tr><tr>
<td> Plaats: </td><td> <textarea name="plaats" id="plaats"> </textarea> </td>
</tr><tr>
<td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
<td> <select name="keuze">
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select> <input type="submit" name="zendkeuze" value="Maak keuze"/></td>
</tr>
<?php
if(isset($_POST['zendkeuze'])) {
// form toevoegen
echo '<form method="post" >';
for($i = 1; $i <= $_POST[keuze]; $i++) {
echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i' id='text' name='keuze $i' </td></tr>";
}
echo "</form>";
}
?>
<tr>
<td>Geplaatst door:</td> <td> <input type="text" name="persoon" id="persoon" /> </td>
</tr><tr>
<td><input type="submit" name="nieuwb" id="nieuwb" value="Bericht Plaatsen" /></td>
</tr>
</table>
</form>
<?php
}
else{
include'nieuwbverw.php';
}
?>
</div>
<br /><br />
<img src="/Afbeeldingen/Socializ-Groen.png" id="bfooter" />
</div>
</div>
</body>
</html>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Socializ - Home</title>
<link rel="stylesheet" href="Planner.css" type="text/css" />
</head>
<body>
<div id="content"> <!-- Hierin zit alles de page en de balkuit -->
<div id="page">
<img src="/Afbeeldingen/background_blauw.png" id="bheader" />
<div id="werkblad">
<?php
if ( ! isset ( $_POST [ 'nieuwb' ] ) ) { ?>
<form name="nieuwb" method="post" action="">
<table>
<tr>
<td> Naam Bericht: </td><td> <input type="text" name="naamb" id="naamb" /></td>
</tr><tr>
<td> Omschrijving </td> <td> <textarea name="omschrijving" id="omschrijving" > </textarea></td>
</tr><tr>
<td> Plaats: </td><td> <textarea name="plaats" id="plaats"> </textarea> </td>
</tr><tr>
<td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
<td> <select name="keuze">
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select> <input type="submit" name="zendkeuze" value="Maak keuze"/></td>
</tr>
<?php
if ( isset ( $_POST [ 'zendkeuze' ] ) ) { // form toevoegen
echo '<form method="post" >' ;
for ( $i = 1 ; $i <= $_POST [ keuze] ; $i ++ ) {
echo "<tr><td> Keuze $i : </td> <td> <input type='text' name='keuze $i ' id='text' name='keuze $i ' </td></tr>" ; }
}
?>
<tr>
<td>Geplaatst door:</td> <td> <input type="text" name="persoon" id="persoon" /> </td>
</tr><tr>
<td><input type="submit" name="nieuwb" id="nieuwb" value="Bericht Plaatsen" /></td>
</tr>
</table>
</form>
<?php
}
else {
include 'nieuwbverw.php' ;
}
?>
</div>
<br /><br />
<img src="/Afbeeldingen/Socializ-Groen.png" id="bfooter" />
</div>
</div>
</body>
</html>
</body>
</html>
Het verwerkende gedeelte:
<?php
//beveiliging: gebruiker ingelogd?
if(!isset($_COOKIE['Planner'])) { //cookie bestaat niet
header("Location:http://www.planner.screebit.com/Start.php");
}
include'sql_planner.php';
$error = array();
//naam ingevuld?
if($_POST['naamb'] == "") {
$error[] = 'Er is geen naam voor je agenda ingevuld.';
}
//aantal karakters omschrijving klopt?
$karakters_o = strlen($_POST['omschrijving']);
if($karakters_O >= 400){
$error[] = "<b>De omschrijving mag max. 400 tekens bevatten.</b><br/>";
}
//aantal karakters plaats klopt?
$karakters_p = strlen($_POST['plaats']);
if($karakters_p >= 250){
$error[] = "<b>De plaats mag niet langer zijn dan 250 tekens</b>";
}
for($i = 1; $i <= $_POST[keuze]; $i++) {
if( $_POST["keuze $i"] == ""){
$error[] = "<b> Er is niets ingevuld bij keuze $i.</b> ";
}
}
$fouten = sizeof($error); // aantal errors tellen
if($fouten != 0) { // Er is minstens 1 error
echo 'Het bericht kon niet geplaatst worden omwille van de volgende reden(en):';
echo '<ul>';
for($t = 0; $t < $fouten; $t++) {
echo '<li>'.$error[$t].'</li>';
}
}
// -- Geen errors gevonden in de ingevulde gegevens!
else{
$date = date("d.m.y /o/m H:i") ;
$naamgroep = $inhoud = $_COOKIE['Planner'];
$sql = mysql_query("INSERT INTO plan (naamgroep, naamb, omschrijving, datum, plaats, optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10)
VALUES ( '". $naamgroep ."', '".$_POST['naamb']."', '".$_POST['omschrijving']."', '". $date ."','".$_POST['plaats']."','".$_POST['keuze1']."','".$_POST['keuze2']."','".$_POST['keuze3']."','".$_POST['keuze4']."','".$_POST['keuze5']."','".$_POST['keuze6']."','".$_POST['keuze7']."','".$_POST['keuze8']."','".$_POST['keuze9']."','".$_POST['keuze10']."')");
header('Location: http://www.planner.screebit.com/Start.php');
}
$sql = mysql_query("INSERT INTO agenda (naam, wachtwoord)
VALUES ('".$_POST['naam']."','".($_POST['password1'])."')");
?>
<?php
//beveiliging: gebruiker ingelogd?
if ( ! isset ( $_COOKIE [ 'Planner' ] ) ) { //cookie bestaat niet header ( "Location:http://www.planner.screebit.com/Start.php" ) ; }
include 'sql_planner.php' ;
//naam ingevuld?
if ( $_POST [ 'naamb' ] == "" ) {
$error [ ] = 'Er is geen naam voor je agenda ingevuld.' ;
}
//aantal karakters omschrijving klopt?
$karakters_o = strlen ( $_POST [ 'omschrijving' ] ) ; if ( $karakters_O >= 400 ) {
$error [ ] = "<b>De omschrijving mag max. 400 tekens bevatten.</b><br/>" ;
}
//aantal karakters plaats klopt?
$karakters_p = strlen ( $_POST [ 'plaats' ] ) ; if ( $karakters_p >= 250 ) {
$error [ ] = "<b>De plaats mag niet langer zijn dan 250 tekens</b>" ;
}
for ( $i = 1 ; $i <= $_POST [ keuze] ; $i ++ ) {
if ( $_POST [ "keuze $i " ] == "" ) {
$error [ ] = "<b> Er is niets ingevuld bij keuze $i .</b> " ;
}
}
$fouten = sizeof ( $error ) ; // aantal errors tellen if ( $fouten != 0 ) { // Er is minstens 1 error
echo 'Het bericht kon niet geplaatst worden omwille van de volgende reden(en):' ; for ( $t = 0 ; $t < $fouten ; $t ++ ) {
echo '<li>' . $error [ $t ] . '</li>' ; }
}
// -- Geen errors gevonden in de ingevulde gegevens!
else {
$date = date ( "d.m.y /o/m H:i" ) ; $naamgroep = $inhoud = $_COOKIE [ 'Planner' ] ;
$sql = mysql_query ( "INSERT INTO plan (naamgroep, naamb, omschrijving, datum, plaats, optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10) VALUES ( '" . $naamgroep . "', '" . $_POST [ 'naamb' ] . "', '" . $_POST [ 'omschrijving' ] . "', '" . $date . "','" . $_POST [ 'plaats' ] . "','" . $_POST [ 'keuze1' ] . "','" . $_POST [ 'keuze2' ] . "','" . $_POST [ 'keuze3' ] . "','" . $_POST [ 'keuze4' ] . "','" . $_POST [ 'keuze5' ] . "','" . $_POST [ 'keuze6' ] . "','" . $_POST [ 'keuze7' ] . "','" . $_POST [ 'keuze8' ] . "','" . $_POST [ 'keuze9' ] . "','" . $_POST [ 'keuze10' ] . "')" ) ;
header ( 'Location: http://www.planner.screebit.com/Start.php' ) ;
}
$sql = mysql_query ( "INSERT INTO agenda (naam, wachtwoord) VALUES ('" . $_POST [ 'naam' ] . "','" . ( $_POST [ 'password1' ] ) . "')" ) ;
?>
Alvast bedankt
Html_user
icemar - 09/04/2012 12:44
Lid
Als de keuze velden leeg zijn wordt er dan een null in gezet of ??
ik denk dat daar het probleem ligt.
html_user - 09/04/2012 16:56
Lid
Ik controleer gewoon even door te zeggen:
if($keuze == ""){
}
voor de rest doe ik niets
Heb je een simpel voorbeeldje van wat je juist bedoelt?
Alvast bedankt!
icemar - 09/04/2012 17:33
Lid
Hoe is je database tabel opgezet ?
html_user - 09/04/2012 18:16
Lid
Ah er is geen standaardwaarde opgegeven. Moet dit??
icemar - 09/04/2012 19:13
Lid
Ik denk het wel aangezien als je het leeg is deze null moet worden of zo iets.
Maar ik kan niet zien aan welke voorwaarde deze tabel heeft.
html_user - 09/04/2012 22:15
Lid
Ik weet niet juist hoe ik de code van mijn database oproep omdat ik deze simpel gemaakt heb met php myadmin. Ik heb wel ingesteld:
Standaardwaarde = geen
Null = nee
Maar volgens mij zit er ook al een probleem bij het controleren van de variabelen want dit doet hij ook niet correct.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.