aide pour une regex

VaN
Mammouth du PHP | 1107 Messages

05 juil. 2011, 16:08

Bonjour,

je récupère un tableau de cette forme :
Array
(
    [0] => Array
        (
            [name] => questions[1][propositions][1][reponse]
            [value] => 4
        )

    [1] => Array
        (
            [name] => questions[1][propositions][2][reponse]
            [value] => 3
        )

    [2] => Array
        (
            [name] => questions[1][propositions][3][reponse]
            [value] => 0
        )

    [3] => Array
        (
            [name] => questions[1][propositions][4][reponse]
            [value] => 0
        )

    [4] => Array
        (
            [name] => questions[1][propositions][5][reponse]
            [value] => 2
        )

)
Je souhaite récupérer les valeurs variables que sont les chiffres, dans les strings contenus dans la colonne [name].

Au final, j'aimerai me retrouver avec quelque chose de ce genre :
$question_id = 1;
$propositions = array(1 => 4, 2 => 3, 3 => 0, 4 => 0, 5 => 2);
J'imagine que je dois passer par une expression régulière, mais je n'y comprend pas grand chose. un peu d'aide serait la bienvenue.

Merci d'avance.

ViPHP
ViPHP | 5462 Messages

05 juil. 2011, 16:34

Il est récupéré d’où ce tableau ?

VaN
Mammouth du PHP | 1107 Messages

05 juil. 2011, 16:43

Il s'agit d'un formulaire, récupéré sur un onclick(), et passé à un fichier PHP à l'aide d'un jQuery.serializeArray().

Le formulaire HTML :
										
						<fieldset class="step" id="step-1" style="position:relative;">			
						<ul class="liste-propositions">
											
							<li>
								<span class="proposition-reponses tabbed-container">
									<label for="proposition-1-0" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][1][reponse]" id="proposition-1-0" value="0" class="tabbed-input" checked="checked" />Faux</label>
									<label for="proposition-1-1" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][1][reponse]" id="proposition-1-1" value="1" class="tabbed-input" />Vrai</label>
								</span>
								<div class="proposition-texte">
						Elles sont apolaires.									</div>

								<br class="clear-both" />
							</li>
						
												
							<li>
								<span class="proposition-reponses tabbed-container">
									<label for="proposition-2-0" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][2][reponse]" id="proposition-2-0" value="0" class="tabbed-input" checked="checked" />Faux</label>
									<label for="proposition-2-1" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][2][reponse]" id="proposition-2-1" value="1" class="tabbed-input" />Vrai</label>
								</span>
								<div class="proposition-texte">

						Elles forment des liaisons hydrogènes entre elles.									</div>
								<br class="clear-both" />
							</li>
						
												
							<li>
								<span class="proposition-reponses tabbed-container">
									<label for="proposition-3-0" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][3][reponse]" id="proposition-3-0" value="0" class="tabbed-input" checked="checked" />Faux</label>
									<label for="proposition-3-1" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][3][reponse]" id="proposition-3-1" value="1" class="tabbed-input" />Vrai</label>

								</span>
								<div class="proposition-texte">
						Les deux atomes d’hydrogène constituent la région électronégative.									</div>
								<br class="clear-both" />
							</li>
						
												
							<li>
								<span class="proposition-reponses tabbed-container">
									<label for="proposition-4-0" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][4][reponse]" id="proposition-4-0" value="0" class="tabbed-input" checked="checked" />Faux</label>

									<label for="proposition-4-1" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][4][reponse]" id="proposition-4-1" value="1" class="tabbed-input" />Vrai</label>
								</span>
								<div class="proposition-texte">
						Elles ne sont pas ionisables, même en présence d’un acide fort.									</div>
								<br class="clear-both" />
							</li>
						
												
							<li>
								<span class="proposition-reponses tabbed-container">

									<label for="proposition-5-0" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][5][reponse]" id="proposition-5-0" value="0" class="tabbed-input" checked="checked" />Faux</label>
									<label for="proposition-5-1" class="tabbed-label label_radio"><input type="radio" name="questions[1][propositions][5][reponse]" id="proposition-5-1" value="1" class="tabbed-input" />Vrai</label>
								</span>
								<div class="proposition-texte">
						Elles peuvent interagir avec les protéines par des liaisons hydrogènes.									</div>
								<br class="clear-both" />
							</li>

						
												</ul>
					</fieldset>
Et le pasage au fichier PHP :

Code : Tout sélectionner

var propositions = $('#step-' + current_step + ' input[type=radio]').serializeArray(); $.getJSON('core/ajax_queries.php', { action: "correction_from_proposition", propositions_json: propositions }, function(data) { });

ViPHP
ViPHP | 5462 Messages

05 juil. 2011, 17:50

mais y'a un soucis la, tu tableau ne devrai pas être comme ça, soumet le hors ajax et tu comprendras, récupère le formulaire plutôt que les champs un a un

VaN
Mammouth du PHP | 1107 Messages

06 juil. 2011, 09:55

Je ne peux pas vraiment récupérer tout le formulaire. Il s'agit en fait d'un formulaire proposant un QCM, de 10 questions, chaque question proposant 5 réponses possible. L'extrait que j'ai mis là représente la question 1, mais il y'a 10 <fieldset> comme celui, que je fais "slider" 1 à 1 (grâce à Fancy Sliding Form : http://tympanus.net/Tutorials/FancySlidingForm/), lorsque l'on clique sur suivant. Et sur ce onlick, je veux récupérer les réponses de la question précédente, aller chercher les réponses correctes en base de données, et afficher sur la question N, les corrections de la question N-1. Cela aurait été bcp plus simple de tout corriger à la fin, ou de réellement poster le formulaire après chaque question, mais le client ne veut pas. Il faut donc que lorsque je clique sur "Suivant", je récupère l'identifiant de la question N-1 ainsi que les réponses données.

La solution sinon c'est effectivement de récupérer tout le formulaire, et d'aller chercher la bonne question dans le tableau posté, mais ça me fait poster en AJAX 10 fois 10 questions, alors que j'en ai besoin que d'une seule à chaque fois : /