Php Mysql

Résolu/Fermé
Charlotte - 14 déc. 2009 à 11:02
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 - 14 déc. 2009 à 15:25
Bonjour,
j'aurais besoin d'un peu d'aide. Je vous explique.
J'ai une page php sur laquel il y a 2 moteurs de recherches avec un bouton pr chaque et je souhaite que ces deux moteurs de recherche affichent sur une même page le résultat selon la recherche qui est utilisée. Je me doute qu'il me faut un if() mais je vois pas comment le mettre:
if (c'est le premier moteur de recherche alors tu utilises cette requête sql)
else(tu utilises l'autre requête)

Et puis j'ai une seconde petite question, j'ai une requête qui fonctionne quand je la teste ds ma BDD mais pas ds ma page php je ne comprends pas , la voici:

SELECT * FROM definition, terme, refLit, exemple WHERE definition.Code_T = terme.Code_T AND refLit.Code_Def = definition.Code_Def AND exemple.Code_Def = definition.Code_Def LIKE Nom_T = 'A*'

Et si je change comme ceci elle ne fonctionne ds aucun des 2

SELECT * FROM definition, terme, refLit, exemple WHERE definition.Code_T = terme.Code_T AND refLit.Code_Def = definition.Code_Def AND exemple.Code_Def = definition.Code_Def AND Nom_T LIKE 'A*'

Pouvez vous m'aider ???
Merci :)

10 réponses

koala. Messages postés 279 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 6 mai 2011 38
14 déc. 2009 à 11:22
Pour la première question :
<form name="form1" method="post" action="./essai.php">  
	<center>
	  
	   <p> <input type="text" name="motscle" id="motscle" /></p>
	   <p> <input type="submit" name="submit1" value="requete 1"/> 
	<input type="submit" name="submit2" value="requete 2"/>  </p>
	</center>
</form>


<?php 

if (!empty($_POST['submit1'])){
	echo "requete 1";	
}

if (!empty($_POST['submit2'])){
	echo "requete 2";	
}

?>
0
merci bcp je vais essayer de ce pas
0
koala. Messages postés 279 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 6 mai 2011 38
14 déc. 2009 à 11:26
Pour t'a deuxième question que renvoi comme erreur le page php ?
Montre comme tu insère la requête dans ton code .
0
Ma page php ne me renvoie rien elle tourne dans le vide comme si j'avais une boucle infinie
voici mon code:
<?php
include("connexion.php");

$query="SELECT * FROM definition, terme, refLit, exemple WHERE definition.Code_T = terme.Code_T AND refLit.Code_Def = definition.Code_Def AND exemple.Code_Def = definition.Code_Def AND Nom_T LIKE 'A*'";
$execute=mysql_query($query,$connexion);
while($req=mysql_fetch_row($execute))
{
echo $req[5]."<br>";
echo $req[1].$req[2]."<br>";
echo "EXEMPLE: ".$req[10]."<br>";
echo "LIT. ".$req[7]."<br>";
}
0
Bonjour,

dans le like en SQL, le joker est le % pas le *
qui plus est, le like est un prédicat à lui tout seul (cf 2e syntaxe)

je connais pas trop MySQL, mais essaie donc de remplacer ton * par un % pour voir
0
koala. Messages postés 279 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 6 mai 2011 38
14 déc. 2009 à 11:34
J'aurai plutôt fait comme ca la requête :

SELECT * FROM definition
JOIN terme ON definition.Code_T = terme.Code_T
JOIN refLit ON refLit.Code_Def = definition.Code_
JOIN exemple ON exemple.Code_Def = definition.Code_Def
WHERE (la il manque le nom de table du champ).Nom_T LIKE '%A%'
0
J'avais déjà essayé avec les 2 symboles * et % et aucun des 2 ne fonctionnes. Et même en modifiant la requête avec JOIN ON ça ne marche pas non plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
koala. Messages postés 279 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 6 mai 2011 38
14 déc. 2009 à 14:11
Mais elle fonctionne dans l'interface MySQL
SELECT * FROM definition
JOIN terme ON definition.Code_T = terme.Code_T
JOIN refLit ON refLit.Code_Def = definition.Code_T
JOIN exemple ON exemple.Code_Def = definition.Code_Def
WHERE (la il manque le nom de table du champ).Nom_T LIKE '%A%'

Sinon quel est le message d'erreur??
0
il ne me donne aucun message d'erreur.
voila ce qu'il me dit et si je mets LIKE %A% il me donne tout les termes qui contiennent un A alors j'ai changé et j'ai mis A% qui veut dire ce qui commence par A et là il me donne aucun réponse.

MySQL n'a retourné aucun enregistrement. (traitement: 0.0003 sec.)
requête SQL:
SELECT *
FROM definition
JOIN terme ON definition.Code_T = terme.Code_T
JOIN refLit ON refLit.Code_Def = definition.Code_T
JOIN exemple ON exemple.Code_Def = definition.Code_Def
WHERE terme.Nom_T LIKE 'A%'
0
koala. Messages postés 279 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 6 mai 2011 38 > Charlotte
14 déc. 2009 à 14:32
Cela veux dire qu'il n'y pas d'enregistrement dans la colonne Nom_T commençant par "A"

NOTA : l’opérateur LIKE effectue une recherche en tenant compte de la différence entre lettres majuscules et minuscules. Si vous voulez effectuer une recherche en ne tenant aucunement compte de la différence entre majuscules et minuscules, il convient d’utiliser les opérateurs LOWER et UPPER (voir ci dessous). Mais la plupart du temps, l'utilisation du like dans un SGBDR donné ignore la casse.
http://sqlpro.developpez.com/cours/sqlaz/select/#L3.4
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
14 déc. 2009 à 14:23
... WHERE table.field LIKE("%string%"); essaie avec d'autre guillemets et essaie aussi avec des parenthèses
0
je désespère, en tout cas merci pour votre aide, mais j'ai essayé avec les parenthèses... rien ne marche et pourtant j'en ai pleins de noms qui commencent par un A majuscule. Et si je mets LIKE ('%A%') ça fonctionne mais pas comme je veux car il me donne tous les noms qui contiennent un a.
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
14 déc. 2009 à 14:49
c'est normal, car
LIKE("a%") renvoie "Albert"
LIKE("%a%") renvoie "ballon"
LIKE("%a") renvoie "canada"
LIKE("a%a") renvoie "alexandra"
...
0
oui mais quand je mets "A%" il me renvoie rien du tout
0
Sangsi > Charlotte
14 déc. 2009 à 15:04
procède par elimination

SELECT * FROM definition, terme WHERE definition.Code_T = terme.Code_T AND terme.Nom_T LIKE 'A%'

ensuite tu aumente tes jointures.

Tu peus exécuter cette requete ds mysql (phpmyadmin)
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
14 déc. 2009 à 14:58
Et, bien sûr, tu es certaine d'avoir des mots commençant par A (majuscule)...
0
oui c'est moi qui l'ai créer la BDD
0
koala. Messages postés 279 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 6 mai 2011 38
14 déc. 2009 à 14:59
Je sais pas c'est toi qui a fait la base SQL? Il y a peut-être un espace devant le A.
Ou sélectionne juste la colonne terme.Nom_T LIKE dans le SELECT
0
Bon c'est pas grave merci quand même à vous.
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
14 déc. 2009 à 15:25
Est-ce qu'il se passe la même chose avec LIKE "B%" ?
0