Repetition des resultats

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 : Repetition des resultats

par Invité » 28 août 2008, 18:18

je l ai teste maintenant ca marche :)

y reste un petit truc, si je veux faire une recherche avec un des mots ou tous les mots (and / or), je dois preciser le type de recherche, j'ai mis cette requete ici:
	$sql = "SELECT * FROM table_1 JOIN table_2 ON table_1.id = table_2.id_t where $mot like '%$word%' OR mot like '%$word%' order by table_2.id ASC";
quelqu un va me poser pourquoi tu as mis une fois "$mot like $word" et une autre fois "mot like $word", normalement c'est "mot like $word", alors vous dis que si je mets pas le "$mot like $word" je ne vais pas trouver le resultat comme probleme deja pose ici

comment j ai obtenu $mot:

//charset
$Charset = 'utf8';

$string1 = "replace(mot,'ِ','')";
$string2 = "replace(". $string1 . ",'َ','')";
$string4 = "replace(". $string2 . ",'ً','')";
$string5 = "replace(". $string4 . ",'ُ','')";
$string6 = "replace(". $string5 . ",'ٌ','')";
$string7 = "replace(". $string6 . ",'ّ','')";
$string8 = "replace(". $string7 . ",'ٍ','')";
$string9 = "replace(". $string8 . ",'ْ','')";
$mot = $string9;
// connection à la DB
$link = mysql_connect ($host,$user,$pass);
// insetion des caracteres utf pour la langue arabe
mysql_query("SET NAMES $Charset;", $link) or die('Erreur: '.mysql_error());
// selection de la DB
mysql_select_db($db) or die ('Erreur: '.mysql_error());
ces lignes la:
$string2 = "replace(". $string1 . ",'َ','')";
sont les accents en arabe, ne sont pas reconnaissable par le MySQL

par sadeq » 28 août 2008, 10:57

select * from table1, table2 where table1.id = $id
Surement cette requête va répéter quelques enregistrements car en SQL, quand on met deux tables dans le FROM sans préciser leur relation le SELECT fait un graph des deux tables. C'est à dire que le résultat du SELECT contiendra le nombre d'enregistrements de la première table multiplié par le nombre d'enregistrements dans la deuxième table.

Exemple:
membre (id, nom) contient :
id, nom
1, toto
2, popo

peudo (id_membre, login) contient :
id_membre, login
1, login1
2, login2

La requête : "SELECT * FROM membre, pseudo" retourne :
membre.id, membre.nom, pseudo.id_membre, pseudo.login
1, toto, 1, login1
1, toto, 2, login2
2, popo, 1, login1
2, popo, 2, login2

Les enregistrements de la table membre se sont multipliés par le nombre d'enregistrements de la table pseudo et le résultat n'est pas correct. Car le login1 doit correspondre selon toute logique seulement au membre toto et de même pour login2 qui désigne seulement popo

Pour éviter cette incohérence, il faut ajouter dans la requête une déclaration de la relation entre les tables membre et pseudo qui s'exprime ainsi : membre.id = pseudo.id_membre

Voici le SELECT correct alors:
"SELECT * FROM membre JOIN pseudo ON membre.id = pseudo.id_membre"
Ce qui retourne :
membre.id, membre.nom, pseudo.id_membre, pseudo.login
1, toto, 1, login1
2, popo, 2, login2

Après cette précision fondamentale du modèle relationnel SQL, si l'on veut faire une sélection (filtrage) d'enregistrements par le SELECT on doit ajouter une clause WHERE.
Par exemple, si l'on veut simplement les données concernant toto, la requête devient :
"SELECT * FROM membre JOIN pseudo ON membre.id = pseudo.id_membre WHERE membre.id=1"
Ce qui retourne :
membre.id, membre.nom, pseudo.id_membre, pseudo.login
1, toto, 1, login1

par mere-teresa » 28 août 2008, 10:41

Pour t'aider on a besoin du code PHP, car c'est PHP qui envoie les requêtes SQL à la BDD. Attention à changer login et mot de passe avant de coller le code sur le forum.

par guilt92 » 28 août 2008, 10:20

Montre nous l ensemble du code stp : Requete + Récupération des données + affichage....

Re: Repetition des resultats

par Invité » 28 août 2008, 06:24

est ce qu'il y a quelque chose qui fait ce truc la?
Surement ton code ;)

Mais pour pouvoir le confirmer, il faudrait que tu nous montres la récupération et l'affichage de tes données.
J'ai mis 2 requetes:
select * from table where ...
=> cette requete marche bien
select * from table1, table2 where table1.id = $id
celle la donne une repetition des resultats 6 fois.

PS: Je recupere et affiche les resultats de la meme facon (1ere et 2eme requete)

Re: Repetition des resultats

par zeus » 27 août 2008, 08:40

est ce qu'il y a quelque chose qui fait ce truc la?
Surement ton code ;)

Mais pour pouvoir le confirmer, il faudrait que tu nous montres la récupération et l'affichage de tes données.

Repetition des resultats

par Invité » 27 août 2008, 06:19

bonjour,

je fais une select des donnees de la base de donnee, et pour chaque affichage il me le repete 6 fois, est ce qu'il y a quelque chose qui fait ce truc la?