Probleme d'affichage

ladj59 Messages postés 322 Statut Membre -  
ladj59 Messages postés 322 Statut Membre -
Bonjour,

supposons que j'ai dans une ligne de ma BDD les mots clé suivants: atomes physique
dansune autre ligne de ma BDD les mots clé suivants : atomes

comment faire pour que quand je fais une recherche par mots clé si je tape : atomes physique il ne maffiche qu'une fois la ligne où les mots clé sont atomes physique et une fois la ligne où les mots clé sont atomes

actuellement cela maffiche : atomes physiques
atomes
atomes physique

car il regarde dabord pour atomes et il affiche les lignes correspondantes puis fais pareil avec physique sans regarder si il ne va pas réecrire la meme ligne....je ne sais pas tro quoi mettre dans mon if pour dire qu'il ne réaffiche pas une ligne déja affichée....

merci d'avance ...urgent!!

26 réponses

ladj59 Messages postés 322 Statut Membre 3
 
tu vois le probleme croy???
0
Enax Messages postés 204 Statut Membre 145
 
Ca dépend des changements que tu as apportés... Normalement, son code devrait fonctionner, à part peut-être l'oubli d'un espace après le WHERE (et effectivement d'un point-virgule à la fin d'une instruction).
0
ladj59 Messages postés 322 Statut Membre 3
 
voila le code que j'ai rentré :

<?php

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("physique"); // Sélection de la base coursphp

$mots = explode(" ", $_POST['motscle']);

if(($_POST['auteur']=='') && ($_POST['titre']=='') && ($_POST['année']=='') && ($_POST['journal']=='') && ($_POST['motscle']!=''))
{
$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 />";
?>

<?php
}
}
?>

mais ca me mets toujours :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

help me please
0
Enax Messages postés 204 Statut Membre 145
 
C'est :
for($rangMotclef = 0 ; $rangMotclef < sizeof($mots) ; $rangMotclef++)
{
	if($rangMotclef > 0)
		$laRequete .= " OR ";
	$laRequete .= "motcle LIKE '%" . $mots[ $rangMotclef ] . "%'";
}

Ou :
for($rangMotclef = 0 ; $rangMotclef < sizeof($mots) ; $rangMotclef++)
{
	if($rangMotclef > 0)
	{
		$laRequete .= " OR ";
	}
	$laRequete .= "motcle LIKE '%" . $mots[ $rangMotclef ] . "%'";
}

Sachant que quand tu n'as qu'une seule instruction dans un bloc les accolades ne sont pas nécessaires.

J'ai testé le code sur l'une de mes tables et ça fonctionne très bien.
0

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

Posez votre question
ladj59 Messages postés 322 Statut Membre 3
 
merci enax ca marche je vais essayer de continuer mon programme now..;
0
ladj59 Messages postés 322 Statut Membre 3
 
merci aussi a croy biensur
0