Input velden uit database opslaan als resultaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gammele vraal

gammele vraal

21/10/2011 11:17:48
Quote Anchor link
Beste PHPhulpers,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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)
PHP script in nieuw venster Selecteer het PHP script
1
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
 
PHP hulp

PHP hulp

25/04/2024 11:11:48
 
- SanThe -

- SanThe -

21/10/2011 13:01:55
Quote Anchor link
Maak van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<select name="avg[]" id="<?php echo $data1['criterium_id'];?>" class="avg">


dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<select name="avg[<?php echo $data1['criterium_id'];?>]" id="<?php echo $data1['criterium_id'];?>" class="avg">
 
Gammele vraal

gammele vraal

21/10/2011 13:04:23
Quote Anchor link
Bedankt SanThe, dat is inderdaad de fix.
 
Nick van der heijden

nick van der heijden

21/10/2011 13:14:18
Quote Anchor link
gebruik in plaats van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if(isset($_POST['submit'])){
}

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if($_SERVER['REQUEST_METHOD']=="POST"){
}
 
PHP Scripter

PHP Scripter

21/10/2011 13:20:19
Quote Anchor link
Of dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<select name="avg[<?= $data1['criterium_id']; ?>]" id="<?=  $data1['criterium_id']; ?>" class="avg">
 
- SanThe -

- SanThe -

21/10/2011 13:23:30
Quote Anchor link
PHP Scripter op 21/10/2011 13:20:19:
Of dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<select name="avg[<?= $data1['criterium_id']; ?>]" id="<?=  $data1['criterium_id']; ?>" class="avg">


Dit werkt niet bij elke server. Dit is afhankelijk van de instellingen.
 
PHP Scripter

PHP Scripter

21/10/2011 13:35:50
Quote Anchor link
Dat klopt inderdaad. Zelf gebruik ik altijd deze PHP tag in views voor mijn Framework.
 
Gammele vraal

gammele vraal

21/10/2011 13:39:36
Quote Anchor link
Prima, ik geef ook nog een reactie mee. Of een opmerking. Hoe kan ik deze ook uit de foreach krijgen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Heb nu twee foreaches, maar dat gaat dubbelop:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
foreach($_POST['avg'] as $databasenummer => $beoordeling){
  foreach($_POST['comment'] as $comment){

echo  $databasenummer . " - " . $beoordeling. " - " . $comment . "<br/> ";    

 }
}
Gewijzigd op 21/10/2011 13:40:06 door gammele vraal
 
- SanThe -

- SanThe -

21/10/2011 13:47:00
Quote Anchor link
Waar komt $_POST['comment'] vandaan?
 
Gammele vraal

gammele vraal

21/10/2011 13:54:17
Quote Anchor link
Uit de een na laatste regel, achter de select staat een textfield.
 
- SanThe -

- SanThe -

21/10/2011 13:55:40
Quote Anchor link
Deze?
<input type="text" style="width:97%">

Die heeft niet eens een name.
Gewijzigd op 21/10/2011 13:55:51 door - SanThe -
 
Gammele vraal

gammele vraal

21/10/2011 13:58:35
Quote Anchor link
Heb een name meegegeven in met nieuwere post ;)
 
- SanThe -

- SanThe -

21/10/2011 14:03:37
Quote Anchor link
Dat is inderdaad de juiste oplossing.
En dan haal je het zo op:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($_POST['avg'] as $databasenummer => $beoordeling)
{

    echo  $databasenummer . " - " . $beoordeling. " - " . $_POST['comment'][$databasenummer] . "<br/> ";    
}

?>
Gewijzigd op 21/10/2011 14:04:49 door - SanThe -
 
Gammele vraal

gammele vraal

21/10/2011 14:09:13
Quote Anchor link
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 =)
 
- SanThe -

- SanThe -

21/10/2011 14:12:16
Quote Anchor link
Als je het niet snapt dan hoor ik het wel.
Succes.
 
PHP Scripter

PHP Scripter

21/10/2011 15:46:45
Quote Anchor link
Let op: je script is XSS gevoelig.
 
Gammele vraal

gammele vraal

22/10/2011 11:33:56
Quote Anchor link
Klopt bedankt voor het waarschuwen zal er nog een filterje op zetten voor xss en sql injectie.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.