8791 sujets

Développement web côté serveur, CMS

Salut la communauté,

alors voilà après un plus ou moins long arrêt de développement, je suis en plein dedans pour un futur site perso proposant de réserver des "services" qui proposent chacun des options plus ou moins différentes.

Mon problème se pose sur le process de réservation/demande, après avoir choisit son service, je souhaiterai que l'internaute puisse cocher les options (qui vont avec le service sélectionné) et puisse choisir également une quantité pour chaque option. Alors mon gros problème est que pour le moment je ne vois pas comment vérifier les checkbox que je génère au préalable gràce à un while et qui me mets l'id de l'option dans le name du checkbox généré.

Donc pour résumer lorsque l'internaute arrive sur la page de résa, le script va me sortir toutes les options où "id_service = service sélectionné" au préalable, mais comment afficher toutes les options disponibles dans la page de résa puis passer les informations (nom des checkbox, des select...) dans la page de vérification ?

En fait pour faire simple je souhaiterai savoir :
- comment les nommer premièrement (actuellement dans le name, j'ai juste mis l'id de l'option récupéré via sql)
- puis comment les contrôler ensuite


Là j'avoue ne pas savoir comment vérifier, et pire, je me dis que je m'y prends pas de la bonne façon, à savoir utiliser uniquement du php. J'imagine qu'il y a des solutions à mon problème mais qui dépasse totalement mes compétences.

Si une âme charitable pouvait juste m'indiquer ne serait-ce que une infime direction je serais aux anges. Je suis preneur de n'importe quelle solution et dans n'importe quelle language, je m'adapterai.

Merci d'avance Smiley smile

Andes.
Modifié par Andes (30 Dec 2011 - 10:01)
Salut à toi,

Concernant les checkbox, c'est tout simple :


<input type="checkbox" name="titre[]" value="1" /> Valeur 1
<input type="checkbox" name="titre[]" value="2" /> Valeur 2


Dans la page de confirmation, un tableau "title" sera créé en PHP afin de récupérer toutes les données cochées.
Modifié par Gaylord.P (28 Dec 2011 - 14:05)
Merci de ta réponse,

c'est tout à fait ce que je fais actuellement pour générer le nom des checkbox, seulement je ne vois pas comment vérifier derrière les checkbox étant donné qu'ils seront différents à chaque fois.

Actuellement lorsque je vérifie un input texte dans un formulaire tout simple je procède ainsi :



   if (empty($_POST["titre_de_l_input"])) 
{      .........action si vide............       }



Et avec ce principe de vérif, je ne vois pas comment faire...
Modifié par Andes (28 Dec 2011 - 14:16)
En fait, tu donnes le même nom (name="title[]") à tous tes checkbox. Ensuites, sur la page de confirmation, tu pourras récupérer tous les éléments cochés, leur valeur (value=""), dans un tableau. Ici, $_POST['title'].

Si tu veux vérifier qu'une valeur spécifique a bien été cochée, tu fais un in_array : in_array(valeur, tableau). Smiley smile
Merci pour ta réponse, elle m'a éclairée Smiley smile

Par contre, n'ayant jamais utilisé les array et les fonctions qui en découlent, je bloque un peu sur le contrôle avec le in_array ... J'ai lu qu'il vallait TRUE lorsque $strict était absent.
Le code ci-dessous devrait donc selon moi m'afficher ma phrase "l'option est cochée" si le input est coché, je me trompe ? Smiley smile

voici l'extrait de mes 2 codes :

formulaire :

<input type="checkbox" name="options[<?php echo $donnees['id_option']; ?>]" />

controle :

  
$reponse = mysql_query('SELECT * FROM option WHERE  id_service ="'.$id_service.'" ');
while ($donnees = mysql_fetch_array($reponse)) // boucle pour tester chaque option que propose le service 
{
$options = $_POST["options"]; // $option est le nom de l'array envoyé dans le formulaire sous forme name="options[id_option]"

$id_option = $donnees['id_option']; 

if (in_array($id_option, $options)) {
echo "l'option est cochée";
}

}


Merci encore Smiley smile
Re,

Tu y es presque. Juste une chose à modifier, dans les checkbox :
* name="..." * comprend le nom de la série de checkbox. Pour des pays, ce sera, par exemple "country[]". Quel que soit le nom du pays. On entre ensuite le nom du pays dans le paramètre * value="..." *.

Donc, dans ton cas, remplace :

name="options[<?php echo $donnees['id_option']; ?>]"


Par :



name="options[]" value="<?php echo $donnees['id_option']; ?>"
Great !

Je te remercie ça fonctionne, je dormirai moins bête ce soir Smiley smile

Dis moi, pour éviter d'ouvrir un nouveau sujet (et surtout pour profiter de ta science Smiley lol ), y aurait-il un moyen similaire pour les <select>, car du coup à première vue, si je transmets l'id de mon service dans le value, pour un input il n'y a pas de problème mais pour un select, les values sont dans les <option> donc impossible... Mais impossible n'est pas français, non ? ^^

Merci encore pour la solution en tout cas, ça faisait un moment que je bloquais là dessus.
Re,

Un select, c'est différent, car une seule option possible. D'ailleurs tu ne peux pas en sélectionner plusieurs. Donc il suffit de tester, lors de la validation, si des données ont été envoyés dans ce select : $_POST['nom_du_select'].

En revanche, si c'est un select multiple (<select multiple ...>" alors c'est exactement la même chose que pour les checkbox. Tu définies un nom unique * name="title[]" * puis te renseigne les valeur de chaque option. Un tableau te sera renvoyé, comme ci-dessous. Smiley smile
Gaylord.P a écrit :
Un select, c'est différent, car une seule option possible. D'ailleurs tu ne peux pas en sélectionner plusieurs. Donc il suffit de tester, lors de la validation, si des données ont été envoyés dans ce select : $_POST['nom_du_select'].


Oui c'est ce que je pensais faire, mais je me heurte au même problème qu'auparavant avec les inputs, en fait les select sont là pour définir une quantité d'option, un select correspondant donc à une option... Un sacré bazar cette histoire Smiley biggol ..
Il faudrait donc que, comme pour les inputs, j'insère l'id de l'option pour le select Smiley sweatdrop

A part me jeter par la fenêtre, tu me suggérerais quoi ? ^^
Modifié par Andes (28 Dec 2011 - 18:30)
Je ne comprends pas trop en fait ^^
La validation des formulaires est assez simple et se résume en général à isset/empty/in_array

Smiley smile
Gaylord.P a écrit :
Je ne comprends pas trop en fait ^^
La validation des formulaires est assez simple et se résume en général à isset/empty/in_array

Smiley smile


Lol, oui en soi, la validation n'est pas trop compliqué Smiley smile (du moins à mon échelle ^^)

Mais là je bute sur un problème, quand tu me dis :

a écrit :

Un select, c'est différent, car une seule option possible. D'ailleurs tu ne peux pas en sélectionner plusieurs. Donc il suffit de tester, lors de la validation, si des données ont été envoyés dans ce select : $_POST['nom_du_select'].


Le select étant en relation à l'option cochée, je ne vois pas le nommer premièrement puis le vérifier ensuite. Il faudrait, je pense, que je passe, comme pour le input, l'id_option dans le select ou alors que je lie le select et l'input si c'est possible..

Voici mon code de traitement, et la variable dans laquelle je souhaiterai récupérer le nombre sélectionné : $ici_variable_selection_option


$reponse = mysql_query('SELECT * FROM option WHERE  id_service ="'.$id_service.'" ');

while ($donnees = mysql_fetch_array($reponse)) // boucle pour tester chaque option que propose le service 

{
$options = $_POST["options"]; // $option est le nom de l'array envoyé dans le formulaire sous forme name="options[id_option]"

$id_option = $donnees['id_option']; 

if (in_array($id_option, $options)) {

echo "l'option est cochée";
echo "nombre d'option selectionné :".$ici_variable_selection_option ;  // comment définir cette variable et l'extraire pour cette option ?

}

}


Pour rappel, le code du formulaire :

<input type="checkbox" name="options[]" value="<?php echo $donnees['id_option']; ?>"
 />
Nombre de personne
<select name="nbreoption'">
          <option value="0">0</option>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
</select>

Je suis désolé si c'est pas très clair Gaylord.P, tu as bien du courage de suivre le fil Smiley ravi
Modifié par Andes (31 Dec 2011 - 12:53)