Com. conditionnelles dans moteur rech PHP
Résolu/Fermé
Graig
-
9 mai 2009 à 11:21
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 9 mai 2009 à 14:54
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 9 mai 2009 à 14:54
A voir également:
- Com. conditionnelles dans moteur rech PHP
- Waptric com - Télécharger - Divers TV & Vidéo
- Hotmail.fr ou .com - Forum Hotmail / Outlook.com
- Différence entre hotmail.fr et hotmail.com ? - Forum Réseaux sociaux
- Xnxx. com ✓ - Forum Google Chrome
- Easy php - Télécharger - Divers Web & Internet
6 réponses
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 11:48
9 mai 2009 à 11:48
Bjr
ben lorsque pour une même adresse e-mail tu trouves plusieurs noms (déjà normalement on évite ce genre de cas de figure mais bon ...) tu peux les afficher dans une liste déroulante. Lorsque l'utilisateur sélectionne son nom dans la liste tous les champs du formulaire sont mis à jour.
C'est propre élégant mais (ben vi y'a toujours un "mais" lol) ça nécessite des stocker tous les enregistrements lu depuis la base de données dans des tables/des objtes JS. De plus il faut gérer le cas ou la personne remplie tout son formulaire mais sélectionne son nom dans la liste seulement après ...
Sinon tu peux passer par une page intermédiaire en affichant la liste des personnes trouvées sous la forme de liens : quand on clique sur le lien on retombe alors sur le formulaire prérempli mais cette fois-ci ta requête se base sur le nom ou mieux l'identifiant unique de ta table inscriptions08
ben lorsque pour une même adresse e-mail tu trouves plusieurs noms (déjà normalement on évite ce genre de cas de figure mais bon ...) tu peux les afficher dans une liste déroulante. Lorsque l'utilisateur sélectionne son nom dans la liste tous les champs du formulaire sont mis à jour.
C'est propre élégant mais (ben vi y'a toujours un "mais" lol) ça nécessite des stocker tous les enregistrements lu depuis la base de données dans des tables/des objtes JS. De plus il faut gérer le cas ou la personne remplie tout son formulaire mais sélectionne son nom dans la liste seulement après ...
Sinon tu peux passer par une page intermédiaire en affichant la liste des personnes trouvées sous la forme de liens : quand on clique sur le lien on retombe alors sur le formulaire prérempli mais cette fois-ci ta requête se base sur le nom ou mieux l'identifiant unique de ta table inscriptions08
Merci de votre réponse rapide.
Au départ j'avais opté pour une requete par nom+prenom+année de naissance (ce qui m'aurait effectivement éviter la possibilité de réponses multiples) mais j'ai trouvé que c'était fastidieux tant pour moi que pour celui qui saisit les infos.
Je suis en train de bidouiller qq chose avec des if($nb_resultats != 0)... else if($nb_resultats == 1)... esle en ayant rajouté une variable $nb_resultats = mysql_num_rows($query);
Est-ce que cela vous semble correct ?
Au départ j'avais opté pour une requete par nom+prenom+année de naissance (ce qui m'aurait effectivement éviter la possibilité de réponses multiples) mais j'ai trouvé que c'était fastidieux tant pour moi que pour celui qui saisit les infos.
Je suis en train de bidouiller qq chose avec des if($nb_resultats != 0)... else if($nb_resultats == 1)... esle en ayant rajouté une variable $nb_resultats = mysql_num_rows($query);
Est-ce que cela vous semble correct ?
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 12:33
9 mai 2009 à 12:33
Oui c'est bien de cette manière qu'il faut procéder pour déterminer le nombre d'inscrits pour une même adresse email donnée
En fonction du résultat tu peux rediriger l'internaute vers telle ou telle page ou faire un include différent en PHP ce qui est mieux.
Maintenant tout dépend de la solution que tu as retenu pour gèrer le cas des "possibilités multiples"
Personnellement, je me mets à la place de l'internaute et moins il y'a d'étapes donc de pages différentes qui s'affichent et mieux c'est.
En fonction du résultat tu peux rediriger l'internaute vers telle ou telle page ou faire un include différent en PHP ce qui est mieux.
Maintenant tout dépend de la solution que tu as retenu pour gèrer le cas des "possibilités multiples"
Personnellement, je me mets à la place de l'internaute et moins il y'a d'étapes donc de pages différentes qui s'affichent et mieux c'est.
Je suis bien d'accord avec vous !
En fait j'aimerais faire :
Etape 1 :
saisie de l'adresse mail
Etape 2 :
si 0 résultat -> "Aucun résultat trouvé. Veuilez compléter le formulaire ci-dessous ou revenir en arrière pour saisir une autre adresse"
si 1 ou plusieurs résultats -> "Nous avons trouvé ... résultat(s) + liste des résultats sous la forme d'un formulaire avec bouton radio
-si 1 : un seul nom/prénom affiché avec bouton checked + bouton submit "continuer" vers étape 3
-si plusieurs : liste des nom/prénom avec invitation à sélectionner le bon par bouton radio + bouton submit "continuer" vers étape 3)
Etape 3 :
Formulaire prérempli il n'y a plaus qu'à confrmer l'inscription
Je pense avoir trouvé le fonctionnement de la fonction if... esle mais j'ai un problème maintenant pour définir les propriétés des boutons radio.
Voila le code que j'ai trouvé:
<?
if(isset($_POST['search']) && $_POST['search'] != NULL)
{
mysql_connect('localhost','****','****');
mysql_select_db('inscriptions08');
$search = htmlspecialchars($_POST['search']);
$query = mysql_query("SELECT * FROM inscriptions08 WHERE mail LIKE '$search'") or die (mysql_error()); $nb_resultats = mysql_num_rows($query);
if($nb_resultats != 0)
{
?>
<p>Nous avons trouvé
<? echo $nb_resultats;
if($nb_resultats > 1) { echo 'résultats.<br/>Sélectionnez la personne que vous voulez inscrire ci-dessous :'; } else { echo 'résultat.'; }
?>
<br/>
<?
while($data = mysql_fetch_array($query))
{
?>
<table align="center" width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="txtTerre"><a href="recherche2.php?id=<? echo $data['id']; ?>"><input type="radio" name="???" value="???" id="???" /><label for="masc"><? echo $data['nom']; ?> <? echo $data['prenom']; ?></label></a></td>
</tr>
</table>
<?
}
?>
<br/>
<br/>
Si votre nom ne figure ci-dessus, merci de compléter le formulaire ci-dessous.</p>
<?
}
else
{
?>
<p>Nous n'avons trouvé aucun résultat avec l’adresse mail "<? echo $_POST['search']; ?>".<br/>Merci de compléter le formulaire ci-dessous ou de revenir en arrière pour modifier l’adresse mail.</p>
<?
}
mysql_close();
}
else
{
?>
....................................formulaire vierge...................................
<?
}
?>
En fait j'aimerais faire :
Etape 1 :
saisie de l'adresse mail
Etape 2 :
si 0 résultat -> "Aucun résultat trouvé. Veuilez compléter le formulaire ci-dessous ou revenir en arrière pour saisir une autre adresse"
si 1 ou plusieurs résultats -> "Nous avons trouvé ... résultat(s) + liste des résultats sous la forme d'un formulaire avec bouton radio
-si 1 : un seul nom/prénom affiché avec bouton checked + bouton submit "continuer" vers étape 3
-si plusieurs : liste des nom/prénom avec invitation à sélectionner le bon par bouton radio + bouton submit "continuer" vers étape 3)
Etape 3 :
Formulaire prérempli il n'y a plaus qu'à confrmer l'inscription
Je pense avoir trouvé le fonctionnement de la fonction if... esle mais j'ai un problème maintenant pour définir les propriétés des boutons radio.
Voila le code que j'ai trouvé:
<?
if(isset($_POST['search']) && $_POST['search'] != NULL)
{
mysql_connect('localhost','****','****');
mysql_select_db('inscriptions08');
$search = htmlspecialchars($_POST['search']);
$query = mysql_query("SELECT * FROM inscriptions08 WHERE mail LIKE '$search'") or die (mysql_error()); $nb_resultats = mysql_num_rows($query);
if($nb_resultats != 0)
{
?>
<p>Nous avons trouvé
<? echo $nb_resultats;
if($nb_resultats > 1) { echo 'résultats.<br/>Sélectionnez la personne que vous voulez inscrire ci-dessous :'; } else { echo 'résultat.'; }
?>
<br/>
<?
while($data = mysql_fetch_array($query))
{
?>
<table align="center" width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="txtTerre"><a href="recherche2.php?id=<? echo $data['id']; ?>"><input type="radio" name="???" value="???" id="???" /><label for="masc"><? echo $data['nom']; ?> <? echo $data['prenom']; ?></label></a></td>
</tr>
</table>
<?
}
?>
<br/>
<br/>
Si votre nom ne figure ci-dessus, merci de compléter le formulaire ci-dessous.</p>
<?
}
else
{
?>
<p>Nous n'avons trouvé aucun résultat avec l’adresse mail "<? echo $_POST['search']; ?>".<br/>Merci de compléter le formulaire ci-dessous ou de revenir en arrière pour modifier l’adresse mail.</p>
<?
}
mysql_close();
}
else
{
?>
....................................formulaire vierge...................................
<?
}
?>
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 13:28
9 mai 2009 à 13:28
Dans tes boutons radio tu peux toujours écrire
<input type="radio" name="membre_id" value="<?php echo $data['id']; ?>" id="membre_id" />
Mais ca ne sert pas à grand chose ici dans la mesure ou tes liens bypassent les boutons radio et le formulaire (dans lequel les boutons radio sont censés se trouver n'est-ce pas ?) en renvoyant l'utilisateur vers la page recherche2.php dès qu'il fait son choix.
Si tu veux que l'utilisateur sélectionne d'abord un bouton radio et qu'ensuite il fasse le submit tu dois supprimer les liens.
<input type="radio" name="membre_id" value="<?php echo $data['id']; ?>" id="membre_id" />
Mais ca ne sert pas à grand chose ici dans la mesure ou tes liens bypassent les boutons radio et le formulaire (dans lequel les boutons radio sont censés se trouver n'est-ce pas ?) en renvoyant l'utilisateur vers la page recherche2.php dès qu'il fait son choix.
Si tu veux que l'utilisateur sélectionne d'abord un bouton radio et qu'ensuite il fasse le submit tu dois supprimer les liens.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai bien avancé grace à vos conseils.
Reste un petit écueil...
A l'étape 2 lorsque plusieurs résultats s'affichent avec le code tel que je l'ai écrit je n'arrive pas à sélectionner entre les différents noms. Il sélectionne toujours le premier.
<form action="recherche2.php" name="form" method="post">
<table align="center" width="400" border="0" cellspacing="0" cellpadding="0">
<?
while($data = mysql_fetch_array($query))
{
?>
<tr>
<td class="txtTerre" align="center"><input type="radio" name="id" value="<?php echo $data['id']; ?>" id="id" /><label for="id"><? echo $data['nom']; ?> <? echo $data['prenom']; ?></label></a></td>
</tr>
<?
}
?>
<tr>
<td align="center" height="50"><input type="submit" value="Continuer"/></td>
</tr>
</table>
</form>
Sinon le reste fonctionne jusqu'à l'étape finale.
Merci encore de votre aide
Reste un petit écueil...
A l'étape 2 lorsque plusieurs résultats s'affichent avec le code tel que je l'ai écrit je n'arrive pas à sélectionner entre les différents noms. Il sélectionne toujours le premier.
<form action="recherche2.php" name="form" method="post">
<table align="center" width="400" border="0" cellspacing="0" cellpadding="0">
<?
while($data = mysql_fetch_array($query))
{
?>
<tr>
<td class="txtTerre" align="center"><input type="radio" name="id" value="<?php echo $data['id']; ?>" id="id" /><label for="id"><? echo $data['nom']; ?> <? echo $data['prenom']; ?></label></a></td>
</tr>
<?
}
?>
<tr>
<td align="center" height="50"><input type="submit" value="Continuer"/></td>
</tr>
</table>
</form>
Sinon le reste fonctionne jusqu'à l'étape finale.
Merci encore de votre aide
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 14:37
9 mai 2009 à 14:37
je n'arrive pas à sélectionner entre les différents noms. Il sélectionne toujours le premier.
Sélectionner quoi ? Je ne comprends pas ... C'est l'utilisateur qui sélectionne non ?
Sélectionner quoi ? Je ne comprends pas ... C'est l'utilisateur qui sélectionne non ?
Graig
>
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
9 mai 2009 à 14:48
9 mai 2009 à 14:48
oui c'est l'utilisateur qui selectionne dans la liste des résultats trouvés mais avec la fonction <label> telle que je l'avais écrite si je cliquais sur n'importe quel nom/prenom proposé cela cochait le bouton de la première ligne.
En revanche les boutons eux fonctionnaient idépendemment.
J'ai donc enlevé la fonction label pour obliger l'utilisateur à cocher le bouton et tout fonctionne à merveille (j'ai été un peu fénéant je n'ai pas voulu chercher plus loin comment faire fonctionner le <label> sur toutes les lignes...).
Mille merci pour votre aide
Cordialement
Graig
En revanche les boutons eux fonctionnaient idépendemment.
J'ai donc enlevé la fonction label pour obliger l'utilisateur à cocher le bouton et tout fonctionne à merveille (j'ai été un peu fénéant je n'ai pas voulu chercher plus loin comment faire fonctionner le <label> sur toutes les lignes...).
Mille merci pour votre aide
Cordialement
Graig
Ce n'est pas bien grave c'est le <label> qui ne fonctionne pas mais les boutons eux fonctionnent parfaitement.
Voici donc le code tel qu'il fonctionne pour ceux qui chercheraient et qui voudraient préserver leurs cheveux...
Etape 1 : Formulaire de recherche (HTML)
<form name="recherche" method="post" action="recherche.php">
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="225" align="left"><input name="search" type="text" size="35"/></td>
<td width="50" align="right"><input type="submit" name="chercher" value="OK"/></td>
</tr>
</table>
</form>
Etape 2 : Traitement de la recherche (PHP)
<?php
if(isset($_POST['search']) && $_POST['search'] != NULL)
{
mysql_connect('localhost','****','****');
mysql_select_db('base_donnee');
$search = htmlspecialchars($_POST['search']);
$query = mysql_query("SELECT * FROM base_donnee WHERE mail LIKE '$search'") or die (mysql_error());
$nb_resultats = mysql_num_rows($query);
if($nb_resultats != 0)
{
?>
<p class="txtTerre" align="center"><strong>Nous avons trouvé
<? echo $nb_resultats;
if($nb_resultats > 1) { echo " résultats.<br/>Sélectionnez la personne que vous voulez inscrire ci-dessous :</strong>"; } else { echo " résultat.</strong>"; }
?>
<form action="recherche2.php" name="form" method="post">
<table align="center" width="400" border="0" cellspacing="0" cellpadding="0">
<?
while($data = mysql_fetch_array($query))
{
?>
<tr>
<td class="txtTerre" align="center"><input type="radio" name="id" value="<?php echo $data['id']; ?>" id="id" /><? echo $data['nom']; ?> <? echo $data['prenom']; ?></td>
</tr>
<?
}
?>
<tr>
<td align="center" height="50"><input type="submit" value="Continuer"/></td>
</tr>
</table>
</form>
<p class="txtTerre" align="center"><strong><em>Si votre nom ne figure pas dans la liste, merci de compléter le formulaire ci-dessous.</em></strong></p>
<br />
<?
}
else
{
?>
<p class="txtTerre" align="center"><strong>Aucun résultat trouvé avec l’adresse mail "<? echo $_POST['search']; ?>".</strong></p>
<p class="txtTerre" align="center"><strong><em>Merci de compléter le formulaire ci-dessous ou de revenir en arrière pour modifier l’adresse mail.</em></strong></p>
<br />
<?
}
mysql_close();
}
?>
L'étape 3 est l'affichage classique du résultat sélectionné suivant la mise en forme que vous voulez.
Un immense merci à PHP pour son aide au combien précieuse et son expertise.
Cordialement
Voici donc le code tel qu'il fonctionne pour ceux qui chercheraient et qui voudraient préserver leurs cheveux...
Etape 1 : Formulaire de recherche (HTML)
<form name="recherche" method="post" action="recherche.php">
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="225" align="left"><input name="search" type="text" size="35"/></td>
<td width="50" align="right"><input type="submit" name="chercher" value="OK"/></td>
</tr>
</table>
</form>
Etape 2 : Traitement de la recherche (PHP)
<?php
if(isset($_POST['search']) && $_POST['search'] != NULL)
{
mysql_connect('localhost','****','****');
mysql_select_db('base_donnee');
$search = htmlspecialchars($_POST['search']);
$query = mysql_query("SELECT * FROM base_donnee WHERE mail LIKE '$search'") or die (mysql_error());
$nb_resultats = mysql_num_rows($query);
if($nb_resultats != 0)
{
?>
<p class="txtTerre" align="center"><strong>Nous avons trouvé
<? echo $nb_resultats;
if($nb_resultats > 1) { echo " résultats.<br/>Sélectionnez la personne que vous voulez inscrire ci-dessous :</strong>"; } else { echo " résultat.</strong>"; }
?>
<form action="recherche2.php" name="form" method="post">
<table align="center" width="400" border="0" cellspacing="0" cellpadding="0">
<?
while($data = mysql_fetch_array($query))
{
?>
<tr>
<td class="txtTerre" align="center"><input type="radio" name="id" value="<?php echo $data['id']; ?>" id="id" /><? echo $data['nom']; ?> <? echo $data['prenom']; ?></td>
</tr>
<?
}
?>
<tr>
<td align="center" height="50"><input type="submit" value="Continuer"/></td>
</tr>
</table>
</form>
<p class="txtTerre" align="center"><strong><em>Si votre nom ne figure pas dans la liste, merci de compléter le formulaire ci-dessous.</em></strong></p>
<br />
<?
}
else
{
?>
<p class="txtTerre" align="center"><strong>Aucun résultat trouvé avec l’adresse mail "<? echo $_POST['search']; ?>".</strong></p>
<p class="txtTerre" align="center"><strong><em>Merci de compléter le formulaire ci-dessous ou de revenir en arrière pour modifier l’adresse mail.</em></strong></p>
<br />
<?
}
mysql_close();
}
?>
L'étape 3 est l'affichage classique du résultat sélectionné suivant la mise en forme que vous voulez.
Un immense merci à PHP pour son aide au combien précieuse et son expertise.
Cordialement
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 14:54
9 mai 2009 à 14:54
Merci ;-)
Ah oui le label je me demandais bien à quoi il pouvait servir ....
http://fr.selfhtml.org/html/formulaires/structurer.htm
Pas sûr qu'on puisse l'utiliser avec les boutons radio lol
Ah oui le label je me demandais bien à quoi il pouvait servir ....
http://fr.selfhtml.org/html/formulaires/structurer.htm
Pas sûr qu'on puisse l'utiliser avec les boutons radio lol