[Recherche] Comment faire en SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Recherche] Comment faire en SQL

par agité » 18 mai 2006, 14:29

en fait il faut noter les elements comme ca :
<?php echo $type2['artiste'];?>
et plus avec le t1. devant chaque et ca marche niquel ! merci

par ouckileou » 18 mai 2006, 14:22

affiche le SQL généré, celui que tu exécutes avec mysql_query()
echo $sql;
et regarde si ça correspond à la requête que tu souhaites

par agité » 18 mai 2006, 14:16

pourtant il ne me retourne rien dans mes recherche et je ne comprends pas pourquoi j'ai bien tout de correct maintenant ...

sur phpmyadmin ca marche aussi

EDIT : J'ai ajouter les joker % en debut et fin de mot mais ca ne change rien il ne me retourne rien dans la recherche...

par ouckileou » 18 mai 2006, 14:15

Ben je sais pas ça marche ou pas ? :D

Enfin oui ça y ressemble ;)

par agité » 18 mai 2006, 14:11

Ok j'avais supprimer en fait ma requete :
 $type = mysql_fetch_array($nb);
pensant qu'elle etait fausse mais en fait non, par contre j'affiche sous la forme :
<?php echo $type['t1.nom'];?>
c'est bien ca ?

par ouckileou » 18 mai 2006, 14:06

Je precise que dans phpmyadmin quand je retire le ".$_GET['word']" et ajoute un mot de recherche ca fonctionne sans soucis !
Tu mélanges tout, dans phpMyADmin, tu ne testes que du SQL, pas du PHP

S'il t'affiches Ressource #6, c'est normal, mysql_query() te renvoie un jeu de données que tu ne peux traiter directement

tu dois utiliser une fonction comme mysql_fetch_row() ou mysql_fetch_array()

par xs_stef » 18 mai 2006, 13:43

Salut,
au risque de dire une co******, ça ne gêne pas les espaces dans les noms de table, il ne faut pas les 'échapper' avec [] ou un truc dans le genre ?

par agité » 18 mai 2006, 13:12

Je precise que dans phpmyadmin quand je retire le ".$_GET['word']" et ajoute un mot de recherche ca fonctionne sans soucis !

par agité » 18 mai 2006, 13:04

Recherche sur la table des artistes :Resource id #6

il m'indique Resource id #6 mais je pense qu'il ya une erreur on ne peut pas faire :
	<?php

																$sql="SELECT * FROM art t1 WHERE t1.nom  = '".$_POST['word']."'
																										OR t1.description  = '".$_POST['word']."'
																										OR t1.email  = '".$_POST['word']."'
																										OR t1.loc  = '".$_POST['word']."'
																										OR t1.msn  = '".$_POST['word']."'
																										OR t1.site  = '".$_POST['word']."' ";
																$nb = mysql_query($sql) or die("erreur ! ".mysql_error());



																$sq2="SELECT * FROM mix t2  WHERE artiste = '".$_POST['word']."'
																										OR t2.nom = '".$_POST['word']."'
																										OR t2.date = '".$_POST['word']."'
																										OR t2.genre = '".$_POST['word']."'
																										OR t2.description = '".$_POST['word']."'
																										OR t2.lien = '".$_POST['word']."' ";
																$nb2 = mysql_query($sql2) or die("erreur ! ".mysql_error());

																?>
															<br><br>&nbsp &nbsp &nbsp &nbsp &nbsp Recherche sur la table des artistes :<?php echo $nb;?>
															<br><br>&nbsp &nbsp &nbsp &nbsp &nbsp Recherche sur la table des mixs :<?php echo $nb2;?>

par ouckileou » 18 mai 2006, 12:33

Quand une requête ne renvoie pas (ou ne fait pas) ce que l'on attend :
- faire afficher les erreurs MySQL (ou autre)
ex :
mysql_query($requete) or die (mysql_error());
- afficher le SQL généré (c'est ce code qui est important) :
echo $requête;
- regarder si rien ne cloche
- tester directement dans MySQL (ex : via phpMyAdmin) et ajuster

par agité » 18 mai 2006, 12:29

ma requete :

Code : Tout sélectionner

SELECT * FROM art t1 WHERE t1.artiste = 'mot' OR t1.nom = 'mot'
marche très bien en SQL par contre en php :
		$sql="SELECT * FROM art t1 WHERE t1.nom  = '".$_POST['word']."'
																										OR t1.description  = '".$_POST['word']."'
																										OR t1.email  = '".$_POST['word']."'
																										OR t1.loc  = '".$_POST['word']."'
																										OR t1.msn  = '".$_POST['word']."'
																										OR t1.site  = '".$_POST['word']."' ";
																$nb = mysql_query($sql) or die("erreur ! ".mysql_error());
																$var2=mysql_fetch_array($nb);
Rien ne m'est retourner

par ouckileou » 18 mai 2006, 12:19

Avant de tester avec un script PHP, tu prends phpMyAdmin et tu fais tes essais... ensuite quand ta requête sera bonne tu l'intégreras

par agité » 18 mai 2006, 12:15

J'ai essayer comme ca en mettant avec des joker ou le mot direct mais il ne me retourne jamais de reponse...

<td class="menu_index" width="15%" height="480" valign="top"><br>&nbsp &nbsp &nbsp<b><u>Rechercher dans la base de don&eacute;e :</u></b> <?php echo $word ; ?>

<?php

$sql="SELECT * FROM `art` As nb WHERE 	nom  = '".$_POST['word']."'
																									OR description  = '".$_POST['word']."'
																									OR email  = '".$_POST['word']."'
																									OR loc  = '".$_POST['word']."'
																									OR msn  = '".$_POST['word']."'
																									OR site  = '".$_POST['word']."' ";

$nb = mysql_query($sql) or die("erreur ! ".mysql_error());
$var2=mysql_fetch_array($nb);


$sq2="SELECT * FROM `mix` As nb2 WHERE 	artiste LIKE '%".$_POST['word']."%'
																										OR nom LIKE '%".$_POST['word']."%'
																										OR date LIKE '%".$_POST['word']."%'
																										OR genre LIKE '%".$_POST['word']."%'
																										OR description LIKE '%".$_POST['word']."%'
																										OR lien LIKE '%".$_POST['word']."%' ";

$nb2 = mysql_query($sql2) or die("erreur ! ".mysql_error());													$var3=mysql_fetch_array($nb2);
?>

<br><br>&nbsp &nbsp &nbsp &nbsp &nbsp Recherche sur la table des artistes :<?php echo $var2['nb'];?>
<br><br>&nbsp &nbsp &nbsp &nbsp &nbsp Recherche sur la table des mixs :<?php echo $var3['nb2'];?>

par agité » 18 mai 2006, 12:04

Une table avec les artistes et une table avec les musiques je veux que quand tu rentre un mot ca recherche dans les 2 table et retourne les reponses tout simplement je vais essayer avec ta methode.

par ouckileou » 18 mai 2006, 12:00

Bah je ne vois pas comment c'est possible, il y a un minimum de SQL à écrire... donc c'est toi d'écrire une requête qui va chercher dans toutes les colonnes :

Code : Tout sélectionner

SELECT * FROM table1 t1, table2 t2 WHERE t1.colA = 'mot_cle' OR t1.colB = 'mot_cle' OR t2.colA = 'mot_cle' OR t2.colB = 'mot_cle'
Mais c'est bizarre, as-tu réellement besoin de faire une recherche aussi large ?
Que contiennent ces tables et qu'est-ce que tu veux chercher ?