Souci de requete [PHP]
Fermé
txiki
Messages postés
6596
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
22 février 2024
-
22 nov. 2008 à 00:48
toto - 24 nov. 2008 à 17:21
toto - 24 nov. 2008 à 17:21
A voir également:
- Souci de requete [PHP]
- Easy php - Télécharger - Divers Web & Internet
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ? - Forum Minecraft
- Requête sql pix - Forum Python
- Bouton php - Forum PHP
- \R php ✓ - Forum PHP
14 réponses
Bonjour
Ton affichage des prénoms trouvés c'est ... comment te dire... incompréhensible.
Tu commences par récupérer un $_GET["id"]. Je me demande bien d'où il vient et à quoi il sert.
Par contre, tu ne récupères pas le prénom qui avait été saisi !!!
Tu fais une requête qui récupère toute ta base de données (et pas seulement le prénom qui t'intéresse, car il n'y a pas de clause WHERE)
Avant d'afficher, tu testes une variable $total, qui vient d'on ne sait quelle planète.
Ton affichage des prénoms trouvés c'est ... comment te dire... incompréhensible.
Tu commences par récupérer un $_GET["id"]. Je me demande bien d'où il vient et à quoi il sert.
Par contre, tu ne récupères pas le prénom qui avait été saisi !!!
Tu fais une requête qui récupère toute ta base de données (et pas seulement le prénom qui t'intéresse, car il n'y a pas de clause WHERE)
Avant d'afficher, tu testes une variable $total, qui vient d'on ne sait quelle planète.
txiki
Messages postés
6596
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
22 février 2024
517
22 nov. 2008 à 14:38
22 nov. 2008 à 14:38
Salut toto et merci,
J'ai merdé lamentablement car je me suis basé sur un vieux code et j'avais oublié que le résultat s'affichait sur la même page qui contient le formulaire. C'est réglé.
Mais j'ai encore deux petits soucis:
1- Je voudrais mettre la balise <strong> et </strong> entourant la variable $Prenom_rech et je n'y arrive pas. Je ne sais pas à quel endroit exactement je dois les mettre. Voir le code ci-dessous:
Il m'affiche le point qui précède et le point virgule qui suit.
2- Pour les prénoms trouvés, ils sont bien sous forme de lien mais la cible reste introuvable, je ne sais pas où je dois indiquer la page Detail_Prenom.php quand on clique sur un des prénoms trouvés.
J'aurais peut-être d'autres questions mais je cherche de mon coté, je dois pouvoir trouver des solutions tout seul.
Merci encore d'avance !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
J'ai merdé lamentablement car je me suis basé sur un vieux code et j'avais oublié que le résultat s'affichait sur la même page qui contient le formulaire. C'est réglé.
Mais j'ai encore deux petits soucis:
1- Je voudrais mettre la balise <strong> et </strong> entourant la variable $Prenom_rech et je n'y arrive pas. Je ne sais pas à quel endroit exactement je dois les mettre. Voir le code ci-dessous:
<p><?php echo "Résultats de la recherche pour ".$prenom_rech; ?>: <em class="vert">(Prénoms masculins) </em></p>
Il m'affiche le point qui précède et le point virgule qui suit.
2- Pour les prénoms trouvés, ils sont bien sous forme de lien mais la cible reste introuvable, je ne sais pas où je dois indiquer la page Detail_Prenom.php quand on clique sur un des prénoms trouvés.
J'aurais peut-être d'autres questions mais je cherche de mon coté, je dois pouvoir trouver des solutions tout seul.
Merci encore d'avance !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Pour les prénoms trouvés, ils sont bien sous forme de lien Oui, mais il manque l'id. Ton code ezssaye de mettre un champ qui s'appelle "id", Alors que le nom de ce champ dans la base n'est probablement pas id.
txiki
Messages postés
6596
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
22 février 2024
517
22 nov. 2008 à 15:52
22 nov. 2008 à 15:52
Salut toto,
Voici une partie du code du résultat:
Effectivement, dans l'url il ne connait pas l'id or c'est bien lui qui devrait me ramener l'entrée dans la table, non ?
Le href ci-dessus sert à indiquer dans quelle page on doit afficher le résultat. Mais j'ai l'impression qu'il m'en manque un pour la cible du lien (un des prénoms trouvés. Où dois-je le mettre ?
Les champs de la table sont:
id
Prenom (pour le prénom basque). Unique.
FrenchName (pour son équivalent français)
Origine (pour l'origine du prénom basque)
Ephemeride (Pour sa fête). Inutilisé ici.
Autre chose d'intrigant! les prénoms féminins sont sensibles à la casse mais pas les prénoms masculins (? ? ?).
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Voici une partie du code du résultat:
<!-- On affiche les prénoms trouvés --> <p><?php echo "Résultats de la recherche pour ".$prenom_rech; ?>: <em class="vert">(Prénoms masculins) </em></p> <p class="red"><? echo $nb_resultats; // on affiche le nombre de résultats if($nb_resultats > 1) { echo ' résultats trouvés'; } else { echo ' résultat trouvé'; } // si supérieur à 1, pluriel, sinon au singulier. ?> </p> <?php // la boucle while lit ligne par ligne le résultat de la requete while($row = mysql_fetch_array($query)) // on fait un while pour afficher le prénom trouvé, ainsi que l'id qui permettra de faire le lien vers la page du détail { ?> <a href="index.php?Equivalent_BasqueM&lang=Fr?id=<? echo $row['id']; ?>"><? echo $row['Prenom']; ?></a><br/> <?php } // fin de la boucle ?>
Effectivement, dans l'url il ne connait pas l'id or c'est bien lui qui devrait me ramener l'entrée dans la table, non ?
Le href ci-dessus sert à indiquer dans quelle page on doit afficher le résultat. Mais j'ai l'impression qu'il m'en manque un pour la cible du lien (un des prénoms trouvés. Où dois-je le mettre ?
Les champs de la table sont:
id
Prenom (pour le prénom basque). Unique.
FrenchName (pour son équivalent français)
Origine (pour l'origine du prénom basque)
Ephemeride (Pour sa fête). Inutilisé ici.
Autre chose d'intrigant! les prénoms féminins sont sensibles à la casse mais pas les prénoms masculins (? ? ?).
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
<a href="index.php?Equivalent_BasqueM&lang=Fr?id=<? echo $row['id']; ?>"><? echo $row['Prenom']; ?></a><br/>
Tu as bien ce qu'il faut dans cette ligne pour créer l'id, sauf que ta balise php est incorrecte : tu as mis <? echo... au lieu de <?php echo...
Tu as bien ce qu'il faut dans cette ligne pour créer l'id, sauf que ta balise php est incorrecte : tu as mis <? echo... au lieu de <?php echo...
txiki
Messages postés
6596
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
22 février 2024
517
22 nov. 2008 à 17:47
22 nov. 2008 à 17:47
Hélàs ! ça ne change rien au Pb. De toute façons ce n'est pas une obligation de rajouter php derrière <? !
Quand on clique sur un prénom trouvé (Adèle ou michel par exemple), il me trouve l'id et dans la page je n'ai que le bandeau. Point de header, menu, div frame et footer.
Je pige plus rien.
La colonne ID dans la table est en majuscule (c'est pour ça qu'il le voit maintenant mais comment je peux indiquer l'url de la page du détail dans le code ci-dessous ?
A mon avis c'est de l'ID qu'il a besoin.
Merci encore pour ta patience !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Quand on clique sur un prénom trouvé (Adèle ou michel par exemple), il me trouve l'id et dans la page je n'ai que le bandeau. Point de header, menu, div frame et footer.
Je pige plus rien.
La colonne ID dans la table est en majuscule (c'est pour ça qu'il le voit maintenant mais comment je peux indiquer l'url de la page du détail dans le code ci-dessous ?
?> <a href="index.php?Equivalent_BasqueM&lang=Fr?id=<? echo $row['id']; ?>"><? echo $row['Prenom']; ?></a><br/> <?php } // fin de la boucle ?>
A mon avis c'est de l'ID qu'il a besoin.
Merci encore pour ta patience !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Pour l'équivalence entre <?php et <?, tu as raison, chez free en tous cas. Car ça n'est pas toujours le cas, ça dépend de la configuration du serveur.
Je me suis fait piéger parce que je cjechais un prénom masculin et que là, les id n'apparaissent pas alors qu'ils apparaissent bien dans la page des prénoms féminins. Quelle drôle d'idée d'avoir deux codes séparés !!!
Sinon la suite ne marche pas parce que tu fais un mauvais passage par GET
il faut faire
http://monsite/mapage.php?param1=valeur1¶m2=valeur2
et non pas
http://monsite/mapage.php?param1=valeur1?param2=valeur2
Je ne garantis pas qu'il ne reste pas d'autre problème derrière !
Je me suis fait piéger parce que je cjechais un prénom masculin et que là, les id n'apparaissent pas alors qu'ils apparaissent bien dans la page des prénoms féminins. Quelle drôle d'idée d'avoir deux codes séparés !!!
Sinon la suite ne marche pas parce que tu fais un mauvais passage par GET
il faut faire
http://monsite/mapage.php?param1=valeur1¶m2=valeur2
et non pas
http://monsite/mapage.php?param1=valeur1?param2=valeur2
Je ne garantis pas qu'il ne reste pas d'autre problème derrière !
<a href="index.php?Detail_Prenom&lang=Fr&id=<?php echo $row['id']; ?>"><?php echo $row['Prenom']; ?></a><br/>
Enfin , dans ta page de Détail des prénoms, si tu utilises mysql_fetch_row, tu récupères un tableau indexé numériquement, c'est à dir e$row[0], $row[1] etc .. et non pas $row['Prenom'], $row['Origine']...
Si tu veux avoir comme indices tes noms de champs, il faut utiliser mysql_fetch_array ou mysql_fetch_assoc
Au fait, tes pages sont incluses dans un code plus général. Alors il ne FAUT PAS que tu mettes toi-même les balises </body> et </html> à la fin de ton code, car la fin de ton code n'est pas la fin de la page. Regarde le code HTML généré , il y a </body> et </html> à 50 lignes de la fin !
Si tu veux avoir comme indices tes noms de champs, il faut utiliser mysql_fetch_array ou mysql_fetch_assoc
Au fait, tes pages sont incluses dans un code plus général. Alors il ne FAUT PAS que tu mettes toi-même les balises </body> et </html> à la fin de ton code, car la fin de ton code n'est pas la fin de la page. Regarde le code HTML généré , il y a </body> et </html> à 50 lignes de la fin !
txiki
Messages postés
6596
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
22 février 2024
517
23 nov. 2008 à 12:10
23 nov. 2008 à 12:10
Salut toto,
Tu a raison pour les balises html à la fin, c'est un oubli de ma part. Comme quoi il est bon que ce soit relu par un œil nouveau !
Comme tu a pu t'en rendre compte, je débute en PHP et les boulettes sont fréquentes !
Il me manque toujours le lien qui permet d'afficher la page Detail_Prenom Fr.php avec les variables:
$FrenchName, $Prenom et $Origine.
Si tu tape catherine, ça affiche bien les équivalents basques de ce prénom français mais en cliquant sur l'un d'eux, ça pointe vers l'accueil.
Au fait, je ne sais pas si tu es au courant mais cet index est composé d'includes.
D'autre part, j'ai modifié ma table prenomsfeminins car il possédait deux champs en interclassement latin_cs (que j'ai modifié en latin_ci. Pb: dans le résumé, ça n'a pas bougé, c'est toujours en latin_cs. http://txiki.free.fr/latin_cs.png
Comment fait-on pour changer cet état ?
Bon, au cas où, je te met les codes complets, tu verra sans doute l'erreur plus facilement que moi:
La page de recherche avec son formulaire:
La page pour les détails:
Je sature donc je vois de moins en moins bien.
Merci d'avance pour ton précieuse !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Tu a raison pour les balises html à la fin, c'est un oubli de ma part. Comme quoi il est bon que ce soit relu par un œil nouveau !
Comme tu a pu t'en rendre compte, je débute en PHP et les boulettes sont fréquentes !
Il me manque toujours le lien qui permet d'afficher la page Detail_Prenom Fr.php avec les variables:
$FrenchName, $Prenom et $Origine.
Si tu tape catherine, ça affiche bien les équivalents basques de ce prénom français mais en cliquant sur l'un d'eux, ça pointe vers l'accueil.
Au fait, je ne sais pas si tu es au courant mais cet index est composé d'includes.
D'autre part, j'ai modifié ma table prenomsfeminins car il possédait deux champs en interclassement latin_cs (que j'ai modifié en latin_ci. Pb: dans le résumé, ça n'a pas bougé, c'est toujours en latin_cs. http://txiki.free.fr/latin_cs.png
Comment fait-on pour changer cet état ?
Bon, au cas où, je te met les codes complets, tu verra sans doute l'erreur plus facilement que moi:
La page de recherche avec son formulaire:
<!-- ========== recherche des prénoms ======== --> <h1 align="center"> Rechercher l'équivalent basque <br /> d'un prénom féminin français </h1> <?php require 'fonctions.php'; // infos de connexion à la table ($host,$user,$pass) //============== // connection à la DB //============== $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table //je t'ai mis des echo pour voir ce qu'on reçoit et modifié les noms du bouton Submit et du champ (voir formualire en bas de page if(isset($_POST['recherche']) && $_POST['prenom_rech'] !="") // on vérifie d'abord l'existence du post et on vérifie aussi si la requete n'est pas vide. { // on créé une variable $requete pour faciliter l'écriture de la requete sql, // mais aussi pour empêcher ceux qui utiliseraient du Php ou du JS, avec la fonction htmlspecialchars(). $prenom_rech = htmlspecialchars($_POST['prenom_rech']); $query = mysql_query("SELECT * FROM prenomsfeminins WHERE FrenchName LIKE '%".$prenom_rech."%' ORDER BY id ASC") or die (mysql_error()); $nb_resultats = mysql_num_rows($query); // on compte les résultats pour vérifier par après if($nb_resultats > 0) // si le nombre de résultats est supérieur à 0, on continue (alors mets le test correspondant) > { // maintenant, on va afficher les résultats et la page qui donne les résultats et le nombre de résultats ?> <table width='60%' class="prenoms" align='center' cellpadding="6" cellspacing="0"> <tr><td> <!-- On affiche les prénoms trouvés --> <p><?php echo "Résultats de la recherche pour ".$prenom_rech; ?>: <em class="vert">(Prénoms féminins) </em></p> <p class="red"><?php echo $nb_resultats; // on affiche le nombre de résultats if($nb_resultats > 1) { echo ' résultats trouvés'; } else { echo ' résultat trouvé'; } // si supérieur à 1, pluriel, sinon au singulier. ?> </p> <?php // la boucle while lit ligne par ligne le résultat de la requete while($row = mysql_fetch_array($query)) // on fait un while pour afficher le prénom trouvé, ainsi que l'id qui permettra de faire le lien vers la page du détail { ?> <a href="index.php?Detail_Prenom&lang=Fr&id=<?php echo $row['ID']; ?>"><?php echo $row['Prenom']; ?></a><br/> <?php } // fin de la boucle ?> </td></tr></table> <br/> <form action="index.php?page=Equivalent_BasqueF&lang=Fr" method="post"> <p align="center"><input type="submit" name="Submit" value="Nouvelle recherche" /></p> </form> <?php } // fini d'afficher les résultats ! Maintenant, il faut afficher l'éventuelle erreur en cas d'échec de recherche et le formulaire. else { ?> <table class="prenoms" align="center" cellpadding="6" cellspacing="0"> <tr> <td> <h3>Désolé !</h3> <p align="center" class="red"> Aucun équivalent basque pour <strong class="vert"><? echo $_POST['requete']; ?></strong> n'a été trouvé. </p> </td> </tr> </table> <form action="index.php?page=Equivalent_BasqueF&lang=Fr" method="post"> <p align="center"><input type="submit" name="Submit" value="Essayez" /> avec un autre prénom </p> </form> <?php } // fini d'afficher l'erreur mysql_close(); // on ferme mysql, on n'en a plus besoin } else { // et voilà le formulaire, en HTML de nouveau ! ?> <p align="center"> Vous allez effectuer une recherche des prénoms basques.<br /> Tapez un <strong>prénom </strong> puis lancez la recherche.<br /> Les résultats s'afficheront sous forme de lien. <br /> En cliquant sur l'un d'eux, vous obtiendrez son équivalent basque et son origine détaillée.</p> <p align="center"><strong class="vert"> Bonne recherche ! </strong></p> <table width="50%" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td> <form action="index.php?page=Equivalent_BasqueF&lang=Fr" method="post"> <p align="center"> <input type="text" name="prenom_rech" size="40" tabindex="1" /> <input type="submit" name="recherche" value="OK" /> </p> </form> </td></tr></table> <?php } // et voilà, c'est fini ! ?> <!-- Début de ligne libre, à compléter éventuellement --> <!-- Fin de ligne libre, à compléter éventuellement --> <!-- Fin de la boite frame -->
La page pour les détails:
<!-- ============ recherche des prénoms ====== --> <h1> Equivalent basque </h1> <? // ===================================== // On recupere la variable "id" correspondant au prénom choisi // ===================================== //ce script est appelé par un click sur le lien n'est ce pas, alors l'id est passé par l'URL donc en GET $id = $_GET['ID']; // on récupère la requete par la variable $_GET require 'fonctions.php'; //============= // connection à la DB //============= $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table //============================================== // requête SQL qui affiche l'équivalent basque correspondant au lien cliqué //============================================== $select = "SELECT * FROM prenomsfeminins WHERE id='$ID'"; // On selectionne seulement la ligne qui correspond au prénom choisi $query = mysql_query($select) or die ('Erreur : '.mysql_error() ); $row= mysql_fetch_array($query); // mysql_fetch_array génère un tableau correspondant a la ligne selectionnée de la BDD // Les informations sont accessibles par $row["FrenchName"], $row["prenom"], $row[Origine]... // ================================ // Affichage de la fiche dans un tablea&u dynamique // ================================ echo "<table width='60%' align='center'>\n"; echo "<tr><td class='francais' align='center'><strong>".$row['FrenchName']."</strong></td></tr>\n"; // affiche l'équivalent français du prénom s'il existe. echo "<tr></tr>\n"; echo "<tr><td class='basque' align='center'><strong>".$row['Prenom']."</strong></td></tr>\n"; // affiche le prénom echo "<tr></tr>\n"; echo "<tr><td class='origine' align='left'>".$row['Origine']."</td></tr>\n"; // affiche l'origine du prénom. echo "</table>\n"; // fin du tableau. mysql_close(); ?> <p> </p>
Je sature donc je vois de moins en moins bien.
Merci d'avance pour ton précieuse !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
1 - concernant tes histoires d'interclassement, il n'y a pas de "résumé" incompatible avec les valeurs d'interclassement des champs dans l'image que tu montres. D'ailleurs, ça voudrait dire quoi le résumé de deux types d'interclassements différents ?
Il y a les interclassements des champs et celui de la table. Si tu ne précises rien quand tu crées un nouveau champ, il prendra comme interclassement celui de la table
2 - je vois de moins en moins bien.
Ça se voit... regarde ton lien quand tu reviens sur la page d'accueil au lieu d'obtenir le détail du prénom : il te manque un "page=" et dans ton script tu récupères $_GET['ID'] alors que dans ton lien tu mets id en minuscule.
Ça n'est plus un problème de programmation, mais d'attention
Il y a les interclassements des champs et celui de la table. Si tu ne précises rien quand tu crées un nouveau champ, il prendra comme interclassement celui de la table
2 - je vois de moins en moins bien.
Ça se voit... regarde ton lien quand tu reviens sur la page d'accueil au lieu d'obtenir le détail du prénom : il te manque un "page=" et dans ton script tu récupères $_GET['ID'] alors que dans ton lien tu mets id en minuscule.
Ça n'est plus un problème de programmation, mais d'attention
txiki
Messages postés
6596
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
22 février 2024
517
23 nov. 2008 à 20:52
23 nov. 2008 à 20:52
OOOOOOOOOOOh ! MERCI mon DIEUUUUUUUUUUU ! mon SAUVEUR !
Dans ma tanle l'id était écrit en majuscule et je ne pensais pas qu'il y avait une importance quand on écrit:
$id ='ID';
Je pensais que l'important c'était l'orthographe du second et pas du premier.
CHerche catherine.
Pour ce concerne l'interclassement comment expliquer que les prénoms comportant des caractères accentués doivent s'écrire en respectant la casse et l'othographe exacfte ?
Catherien le trouve mais pas adele. Il faut écrire Adèle.
Bref, je verrai ça demain après une bonne nuit de sommeil. J'en ai besoin ! Mais je ne te remercierai jamais assez pour la patience que tu a eu pour m'aider.
Bonne nuit ! ;-))
Dans ma tanle l'id était écrit en majuscule et je ne pensais pas qu'il y avait une importance quand on écrit:
$id ='ID';
Je pensais que l'important c'était l'orthographe du second et pas du premier.
CHerche catherine.
Pour ce concerne l'interclassement comment expliquer que les prénoms comportant des caractères accentués doivent s'écrire en respectant la casse et l'othographe exacfte ?
Catherien le trouve mais pas adele. Il faut écrire Adèle.
Bref, je verrai ça demain après une bonne nuit de sommeil. J'en ai besoin ! Mais je ne te remercierai jamais assez pour la patience que tu a eu pour m'aider.
Bonne nuit ! ;-))
Ben non , 'id' et 'ID' sont deux chaînes différentes, et $_GET['id'] et $_GET['ID'] sont donc deux éléments distincts du tableau $_GET. Sur quoi te basais-tu pour supposer que c'était la même chose ?
Quant à ton problème d'accent, voici la cause, extraite de ton script :
Ceci est une ânerie. Très répandue, souvent conseillée sur ce site même, mais une ânerie quand même. La fonction pour échapper les chaînes pour mysql, c'est mysql_real_escape_string et pas htmlspecialchars.
htmlspecialchars sert à traduire les caractères spéciaux(accentués..) en entités HTML. Ça ne sert qu'au HTML, c'est à dire à l'affichage, et il ne faut l'utiliser qu'au moment de faire un 'echo' pour afficher un texte.
Regarde ce qui se passe chez toi quand le prénom saisi est Adèle : il remplace le è par & egrave;. Adèle devient Adèle.
Si c'est ce que tu as enregistré dans ta base de données, quand quelqu'un tape adele, c'est trop différent de Ad& egrave;le pour être considéré comme le même prénom. Donc adele est considéré comme inconnu, parce que ce n'est pas - je suis prêt à le parier - Adèle qu'il y a dans ta base, mais Ad& egrave;le.
(j'ai mis partout un espace entre & et egrave; parceque ce site (lui non plus !!!) n'utilise pas correctement htmlentities et affiche è si je ne mets pas d'espace
Quant à ton problème d'accent, voici la cause, extraite de ton script :
// on créé une variable $requete pour faciliter l'écriture de la requete sql, // mais aussi pour empêcher ceux qui utiliseraient du Php ou du JS, avec la fonction htmlspecialchars(). $prenom_rech = htmlspecialchars($_POST['prenom_rech']);
Ceci est une ânerie. Très répandue, souvent conseillée sur ce site même, mais une ânerie quand même. La fonction pour échapper les chaînes pour mysql, c'est mysql_real_escape_string et pas htmlspecialchars.
htmlspecialchars sert à traduire les caractères spéciaux(accentués..) en entités HTML. Ça ne sert qu'au HTML, c'est à dire à l'affichage, et il ne faut l'utiliser qu'au moment de faire un 'echo' pour afficher un texte.
Regarde ce qui se passe chez toi quand le prénom saisi est Adèle : il remplace le è par & egrave;. Adèle devient Adèle.
Si c'est ce que tu as enregistré dans ta base de données, quand quelqu'un tape adele, c'est trop différent de Ad& egrave;le pour être considéré comme le même prénom. Donc adele est considéré comme inconnu, parce que ce n'est pas - je suis prêt à le parier - Adèle qu'il y a dans ta base, mais Ad& egrave;le.
(j'ai mis partout un espace entre & et egrave; parceque ce site (lui non plus !!!) n'utilise pas correctement htmlentities et affiche è si je ne mets pas d'espace
Adèle devient Adèle. Il y en a quand même un qui m'a échappé. il fallait lire : Adèle devient Ad& egrave;le.
txiki
Messages postés
6596
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
22 février 2024
517
24 nov. 2008 à 15:02
24 nov. 2008 à 15:02
Salut toto,
Oups, j'ai parlé un peu vite ! Ca ne fonctionne pas sous IE (???). Uniquement sous Firefox.
Autre chose: Comment je peux faire pour effectuer une recherche soit dans prenomsfeminins OU/ET (l'un ou l'autre) prenomsmasculins. Ca m'éviterai de faire deux scripts distincts.
En sachant que j'ai fais ces deux tables car j'ai mis le champ Prenom UNIQUE. Or, un prénom peut être masculin ET féminin, avec la même orthographe.
J'ai bien essayé avec "select * from prenomsfemins AND prenomsmasculins WHERE....." mais ça me met une erreur.
Merci encore !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Oups, j'ai parlé un peu vite ! Ca ne fonctionne pas sous IE (???). Uniquement sous Firefox.
Autre chose: Comment je peux faire pour effectuer une recherche soit dans prenomsfeminins OU/ET (l'un ou l'autre) prenomsmasculins. Ca m'éviterai de faire deux scripts distincts.
En sachant que j'ai fais ces deux tables car j'ai mis le champ Prenom UNIQUE. Or, un prénom peut être masculin ET féminin, avec la même orthographe.
J'ai bien essayé avec "select * from prenomsfemins AND prenomsmasculins WHERE....." mais ça me met une erreur.
Merci encore !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
>
txiki
Messages postés
6596
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
22 février 2024
24 nov. 2008 à 16:02
24 nov. 2008 à 16:02
Salut,
essayes:
essayes:
select * from prenomsfemins, prenomsmasculins WHERE prenomsfemins.champ_prenom=.....OR prenomsmasculins.champ_prenom = ....
Tu aurais pu créer une table unique avec un champ genre (au sens grammatical, masculin ou féminin) et définir ta clé sur le couple prénom + genre.
Dans le formulaire, pour la saisie du prénom tu utilises une variable de session ou un champ hidden ou tout ce qui t'arrange pour mémoriser si la demande vient du lien prénom masculin ou prénom féminin. Quand tu as trouvé le prénom avec le bon genre dans ta bas, le reste est comme avant, rien à changer.
Pour ton problème de compatibilité IE / FF, faudrait voir ton script de menu, en javascript je suppose.
Dans le formulaire, pour la saisie du prénom tu utilises une variable de session ou un champ hidden ou tout ce qui t'arrange pour mémoriser si la demande vient du lien prénom masculin ou prénom féminin. Quand tu as trouvé le prénom avec le bon genre dans ta bas, le reste est comme avant, rien à changer.
Pour ton problème de compatibilité IE / FF, faudrait voir ton script de menu, en javascript je suppose.