Probleme d'affichage
Fermé
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
-
20 févr. 2008 à 15:20
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 - 21 févr. 2008 à 17:31
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 - 21 févr. 2008 à 17:31
A voir également:
- Probleme d'affichage
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
- Modifier affichage heure iphone - Guide
- Problème affichage mail zimbra free ✓ - Forum Mail
26 réponses
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
20 févr. 2008 à 15:27
20 févr. 2008 à 15:27
Regarde ce qui était dans mon message récent sur un de tes précédents fils en remplaçant les AND par des OR et en réflechissant.
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 févr. 2008 à 15:41
20 févr. 2008 à 15:41
3. le fait de générer un SELECT par mot-clef de recherche n'est pas bon : utilise plutôt WHERE motClef like '%physique%' OR motClef like '%chimie%' etc...
tru me mets ca mais moi dans ma requetre j'ai un motsclé like %'$_POST['motsclé']'% donc je ne peux pas mettre de OR....
voila pourquoi je ne sais pas comment faire
tru me mets ca mais moi dans ma requetre j'ai un motsclé like %'$_POST['motsclé']'% donc je ne peux pas mettre de OR....
voila pourquoi je ne sais pas comment faire
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
20 févr. 2008 à 15:52
20 févr. 2008 à 15:52
Je comprend que dans $_POST['motsclé'] tu as une liste de mots clefs.
Utilise explode pour les séparer les uns des autres puis LIKE ... OR ....
Utilise explode pour les séparer les uns des autres puis LIKE ... OR ....
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 12:05
21 févr. 2008 à 12:05
j'ai utilisé explode et le probléme avec plusieurs mots clé et résolu mais il restequand meme le probléme ou cela affiche plusieurs fois.
en effet si je tape lolo lala dans motsclé il recherche d'abord dans la bdd lolo dans le champs lotsclé de la bdd puis aprés lala donc si je tape lolo lala il affichera 2fois le résultat
je ne sais pas comment faire
je pensais faire un truc du genre if($donnees['id'] deja affiché) ne pas réaffiché mais je ne sais pa commet l'écrire
please help me c'est urgent!!
en effet si je tape lolo lala dans motsclé il recherche d'abord dans la bdd lolo dans le champs lotsclé de la bdd puis aprés lala donc si je tape lolo lala il affichera 2fois le résultat
je ne sais pas comment faire
je pensais faire un truc du genre if($donnees['id'] deja affiché) ne pas réaffiché mais je ne sais pa commet l'écrire
please help me c'est urgent!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
21 févr. 2008 à 12:25
21 févr. 2008 à 12:25
Tu ne dois avoir qu'un seul select avec where et les like.
Est-ce bien le cas ?
Copie la partie de ton scrit qui génère cette requête sql.
Est-ce bien le cas ?
Copie la partie de ton scrit qui génère cette requête sql.
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 12:30
21 févr. 2008 à 12:30
$mots = explode(" ", $_POST['motsclé']);
<?php
if (($_POST['auteur']=='') && ($_POST['titre']=='') && ($_POST['année']=='') && ($_POST['journal']=='') && ($_POST['motsclé']!=''))
{
for($i=0;$i<sizeof($mots);$i++)
{
$reponse = mysql_query("SELECT * FROM base_physique WHERE motsclé LIKE '%".$mots[$i]."%'");
while ($donnees = mysql_fetch_array($reponse))
{
?>
<p>
<?php echo $donnees['id'];?><br />
Les mots clé de la recherche sont:<?php echo $donnees['motsclé']; ?> <br/></p>
<?php
}
}
}
?>
quand jaffiche id dans lexemple precedent cela maffiche 1 3 1 donc je voudrais juste 1 3
<?php
if (($_POST['auteur']=='') && ($_POST['titre']=='') && ($_POST['année']=='') && ($_POST['journal']=='') && ($_POST['motsclé']!=''))
{
for($i=0;$i<sizeof($mots);$i++)
{
$reponse = mysql_query("SELECT * FROM base_physique WHERE motsclé LIKE '%".$mots[$i]."%'");
while ($donnees = mysql_fetch_array($reponse))
{
?>
<p>
<?php echo $donnees['id'];?><br />
Les mots clé de la recherche sont:<?php echo $donnees['motsclé']; ?> <br/></p>
<?php
}
}
}
?>
quand jaffiche id dans lexemple precedent cela maffiche 1 3 1 donc je voudrais juste 1 3
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 12:49
21 févr. 2008 à 12:49
quelqu'un aurait une idée???
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
21 févr. 2008 à 13:14
21 févr. 2008 à 13:14
Tu génères un SELECT par mot-clef, il est donc normal que tu récupères plusieurs fois le même résultat.
Est-ce-que tu comprends pourquoi ?
Ceci acquis tu pourras essayer de modifier ton script pour ne générer qu'un seul select avec une clause WHERE regroupant plusieurs LIKE (un par mot-clef.
Est-ce-que tu comprends pourquoi ?
Ceci acquis tu pourras essayer de modifier ton script pour ne générer qu'un seul select avec une clause WHERE regroupant plusieurs LIKE (un par mot-clef.
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 13:24
21 févr. 2008 à 13:24
non je ne comprends pas pourquoi et encore moins ce que je dois faire pour aboutir au bon résultat....
si tu peux me onner un coup de main en me montrant un bout de code pour me mettre sur la route car la je n'arrive plus a avancer...
si tu peux me onner un coup de main en me montrant un bout de code pour me mettre sur la route car la je n'arrive plus a avancer...
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
21 févr. 2008 à 13:43
21 févr. 2008 à 13:43
Il est indispensable que tu comprennes le premier point : supposons que tu aies deux mots clefs ( 'atome' et 'physique') comme critère de sélection, ton script actuel va exécuter deux select sql.
Le premier avec WHERE motscle LIKE '%atome%' va te retourner les enregistrements 1, 3 et 10
le second avec WHERE motscle Like '%physique%' va te retourner de nouveau l'enregistrement 1 si la colonne motcle de celui-ci contient 'atome' et 'physique'
Avant de passer au point suivant recommandation déjà faite de ne pas utiliser de caractères accentués pour les noms de colonnes sql : remplace motclé par motcle
Ce point bien compris, il est clair qu'il faut générer un seul SELECT. Quelle sera la clause WHERE de ce select unique ?
Donne-moi ta réponse et nous pourrons avancer.
Le premier avec WHERE motscle LIKE '%atome%' va te retourner les enregistrements 1, 3 et 10
le second avec WHERE motscle Like '%physique%' va te retourner de nouveau l'enregistrement 1 si la colonne motcle de celui-ci contient 'atome' et 'physique'
Avant de passer au point suivant recommandation déjà faite de ne pas utiliser de caractères accentués pour les noms de colonnes sql : remplace motclé par motcle
Ce point bien compris, il est clair qu'il faut générer un seul SELECT. Quelle sera la clause WHERE de ce select unique ?
Donne-moi ta réponse et nous pourrons avancer.
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 13:59
21 févr. 2008 à 13:59
c'est pas possible de mettre dans ma reqete ou il y a le WHERE un truc du genre :
WHERE motsclé LIKE '%".$mots[$i]."%' AND pas encore affiché");
mais je sais pas comment faire ca j'ai essayé plein de trucs mais en vain...
WHERE motsclé LIKE '%".$mots[$i]."%' AND pas encore affiché");
mais je sais pas comment faire ca j'ai essayé plein de trucs mais en vain...
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
21 févr. 2008 à 14:13
21 févr. 2008 à 14:13
Procédons par étape :
- as-tu remplacé motclé par motcle ?
- as-tu compris la raison pour laquelle il ne faut qu'un select ?
- quelle clause WHERE faut-il générer ?
Nous verrons ensuite comment générer cette clause WHERE avec PHP
- as-tu remplacé motclé par motcle ?
- as-tu compris la raison pour laquelle il ne faut qu'un select ?
- quelle clause WHERE faut-il générer ?
Nous verrons ensuite comment générer cette clause WHERE avec PHP
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 14:16
21 févr. 2008 à 14:16
oui j'ai remplacé....
je pense avoir compris pour l'unique select
en revanche même si je vois à peu prés ce qu'il faut mettre dans le WHERE je ne vois pas du tout coment l'écrire...
je pense avoir compris pour l'unique select
en revanche même si je vois à peu prés ce qu'il faut mettre dans le WHERE je ne vois pas du tout coment l'écrire...
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
21 févr. 2008 à 14:25
21 févr. 2008 à 14:25
Procédons par étapes : donne moi la forme du WHERE à générer
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 14:28
21 févr. 2008 à 14:28
ben justement je ne sais pas quoi mettre dans le WHERE
WHERE motsclé LIKE '%".$mots[$i]."%'");
j'avais mis ca mais cela pose le probléme de la répetition, je ne sais vraiment pas quoi mettre dans le WHERE pru que ca marche
si tu pouvais me dire quoi mettre ca m'aiderait vraiment
WHERE motsclé LIKE '%".$mots[$i]."%'");
j'avais mis ca mais cela pose le probléme de la répetition, je ne sais vraiment pas quoi mettre dans le WHERE pru que ca marche
si tu pouvais me dire quoi mettre ca m'aiderait vraiment
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
21 févr. 2008 à 14:39
21 févr. 2008 à 14:39
On se rapproche du but mais tu vas trop vite en mélangeant sql et php ce que nous ferons dans une étape ultérieure.
Que penses-tu des clauses suivantes :
WHERE motcle LIKE '%physique%' AND motcle LIKE '%atome%' AND motcle LIKE '%molécule%'
WHERE motcle LIKE '%physique%' OR motcle LIKE '%atome%' OR motcle LIKE '%molécule%'
Laquelle convient à ta problématique ? pourquoi ?
Que penses-tu des clauses suivantes :
WHERE motcle LIKE '%physique%' AND motcle LIKE '%atome%' AND motcle LIKE '%molécule%'
WHERE motcle LIKE '%physique%' OR motcle LIKE '%atome%' OR motcle LIKE '%molécule%'
Laquelle convient à ta problématique ? pourquoi ?
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 14:44
21 févr. 2008 à 14:44
c'est la 2eme qui est bonne...je vois ce que tu veux faire ais le probléme c'est que je ne peux pas faire cela car je ne veux pas taper à la main tous les motsclé, c'est pour cela que j'avais fais explode mais je voudrais qu'il gére le reste tout seul
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 15:13
21 févr. 2008 à 15:13
tu as une idée croy??
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
21 févr. 2008 à 15:20
21 févr. 2008 à 15:20
Quelquchose comme
<?php
$mots = explode(" ", $_POST['motsclé']);
if(($_POST['auteur']=='') && ($_POST['titre']=='') && ($_POST['année']=='') && ($_POST['journal']=='') && ($_POST['motsclé']!=''))
{
$laRequete = "SELECT * FROM base_physique WHERE";
for( $rangMotclef=0; $rangMotclef < sizeof($mots); $rangMotclef ++)
{
if( $rangMotclef > 0 )
$laRequete .= " OR ";
$laRequete .= "motcle LIKE '%" . $mots[ $rangMotclef ] . "%'"
}
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
while( $donnees = mysql_fetch_array($reponse) )
echo $donnees['id'] . "<br />";
?>
devrait convenir.
Surtout, surtout ne fait pas un copier/coller mais analyse pour comprendre ce qui te sera nécessaire pour adapter finement à tes besoins.
<?php
$mots = explode(" ", $_POST['motsclé']);
if(($_POST['auteur']=='') && ($_POST['titre']=='') && ($_POST['année']=='') && ($_POST['journal']=='') && ($_POST['motsclé']!=''))
{
$laRequete = "SELECT * FROM base_physique WHERE";
for( $rangMotclef=0; $rangMotclef < sizeof($mots); $rangMotclef ++)
{
if( $rangMotclef > 0 )
$laRequete .= " OR ";
$laRequete .= "motcle LIKE '%" . $mots[ $rangMotclef ] . "%'"
}
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
while( $donnees = mysql_fetch_array($reponse) )
echo $donnees['id'] . "<br />";
?>
devrait convenir.
Surtout, surtout ne fait pas un copier/coller mais analyse pour comprendre ce qui te sera nécessaire pour adapter finement à tes besoins.
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
21 févr. 2008 à 16:09
21 févr. 2008 à 16:09
Requête invalide : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
j'ai modofié les 2 3 trucs qui n'allairent pas ( les acolades ou ; ) et ca me mets ca a chaque fois le echo donnees ['id'] ne s'affiche pas...
j'ai modofié les 2 3 trucs qui n'allairent pas ( les acolades ou ; ) et ca me mets ca a chaque fois le echo donnees ['id'] ne s'affiche pas...