Input velden uit database opslaan als resultaat
ik haal verschillende criteria uit een database en deze zet ik op een rij in een formulier m.b.v. een while loop. De code hiervoor ziet er als volgt uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<tr>
<td width="60%" style="background-color:#FAFAFA"><?php echo $data1['criterium']; ?></td>
<td width="5%" style="background-color:#FAFAFA">
<select name="avg[]" id="<?php echo $data1['criterium_id'];?>" class="avg">
<option value="0">0%</option>
<option value="25">25%</option>
<option value="50">50%</option>
<option value="75">75%</option>
<option value="100">100%</option>
<option value="NULL">N.v.t.</option>
</select></td>
<td width="35%" style="background-color:#FAFAFA"><input type="text" style="width:97%"></td>
</tr>
<tbody>
<td width="60%" style="background-color:#FAFAFA"><?php echo $data1['criterium']; ?></td>
<td width="5%" style="background-color:#FAFAFA">
<select name="avg[]" id="<?php echo $data1['criterium_id'];?>" class="avg">
<option value="0">0%</option>
<option value="25">25%</option>
<option value="50">50%</option>
<option value="75">75%</option>
<option value="100">100%</option>
<option value="NULL">N.v.t.</option>
</select></td>
<td width="35%" style="background-color:#FAFAFA"><input type="text" style="width:97%"></td>
</tr>
<tbody>
Wat ik niet voor elkaar krijg, is een overzicht krijgen van gesubmitte resultaten. De criteria komen random uit de database, dit random ID wordt bij select ID opgehaald. In eerste instantie zou ik graag willen dat ik een soort overzicht krijg van:
1: 25
3: 25
12: 50
355: 100
De gegevens hiervan wil ik graag in een database zetten. Dus met een query het resultaat opslaan. Ik zat zelf te denken aan een foreach maar het gevecht kan ik lastig winnen.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
if(isset($_POST['submit'])){
foreach($_POST['avg'] as $huidigegrade => $nummer){
echo $huidigegrade . " - " . $nummer . "<br/> ";
}
}
Bovenstaande code geeft wel het resultaat aan en het aantal antwoorden, maar niet op welke ID is gescored. Wie heeft een idee hoe ik dit gemakkelijk uit kan lezen en gemakkelijk kan opslaan als indivudueel resultaat?
Gewijzigd op 21/10/2011 11:20:07 door Gammele vraal
dit
Bedankt SanThe, dat is inderdaad de fix.
PHP Scripter op 21/10/2011 13:20:19:
Dit werkt niet bij elke server. Dit is afhankelijk van de instellingen.
Dat klopt inderdaad. Zelf gebruik ik altijd deze PHP tag in views voor mijn Framework.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<tr>
<td width="60%" style="background-color:#FAFAFA"><?php echo $data1['criterium']; ?></td>
<td width="5%" style="background-color:#FAFAFA">
<select name="avg[<?php echo $data1['criterium_id'];?>]" id="<?php echo $data1['criterium_id'];?>" class="avg">
<option value="0">0%</option>
<option value="25">25%</option>
<option value="50">50%</option>
<option value="75">75%</option>
<option value="100">100%</option>
<option value="NULL">N.v.t.</option>
</select></td>
<td width="35%" style="background-color:#FAFAFA"><input type="text" name="comment[<?php echo $data1['criterium_id'];?>]" style="width:97%"></td>
</tr>
<td width="60%" style="background-color:#FAFAFA"><?php echo $data1['criterium']; ?></td>
<td width="5%" style="background-color:#FAFAFA">
<select name="avg[<?php echo $data1['criterium_id'];?>]" id="<?php echo $data1['criterium_id'];?>" class="avg">
<option value="0">0%</option>
<option value="25">25%</option>
<option value="50">50%</option>
<option value="75">75%</option>
<option value="100">100%</option>
<option value="NULL">N.v.t.</option>
</select></td>
<td width="35%" style="background-color:#FAFAFA"><input type="text" name="comment[<?php echo $data1['criterium_id'];?>]" style="width:97%"></td>
</tr>
Heb nu twee foreaches, maar dat gaat dubbelop:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
foreach($_POST['avg'] as $databasenummer => $beoordeling){
foreach($_POST['comment'] as $comment){
echo $databasenummer . " - " . $beoordeling. " - " . $comment . "<br/> ";
}
}
foreach($_POST['comment'] as $comment){
echo $databasenummer . " - " . $beoordeling. " - " . $comment . "<br/> ";
}
}
Gewijzigd op 21/10/2011 13:40:06 door gammele vraal
Waar komt $_POST['comment'] vandaan?
Uit de een na laatste regel, achter de select staat een textfield.
<input type="text" style="width:97%">
Die heeft niet eens een name.
Gewijzigd op 21/10/2011 13:55:51 door - SanThe -
Heb een name meegegeven in met nieuwere post ;)
Geweldig San je bent een held, het werkt. Nu nog even verdiepen hoe het precies in elkaar steekt, dan moet het me volgende keer zelf gaan lukken =)
Succes.
Let op: je script is XSS gevoelig.
Klopt bedankt voor het waarschuwen zal er nog een filterje op zetten voor xss en sql injectie.