8796 sujets

Développement web côté serveur, CMS

Bonsoir à tous,
Je dois réaliser un site web pour ma formation, il doit présenter diverses fonctionnalités comme la possibilité de faire des recherches dans une base de données. Cette dernière contient des informations sur des étudiants et sur les diplômes qu'ils suivent.

Voici ma requête qui pose problème :

$requete="SELECT etudiant.NumEtu, etudiant.Nom, etudiant.Prenom, etudiant.SituationPro, 
etudiant.Statut, etudiant.Type, etude.NumEtu, etude.NumDiplome, diplome.NumDiplome, diplome.Intitule FROM etudiant, 
etude, diplome WHERE etudiant.NumEtu=etude.NumEtu AND diplome.NumDiplome=etude.NumDiplome AND 
lcase (Nom, Prenom, SituationPro, Statut, Type, Intitule) REGEXP lcase ('".$recherche."');";


J'ai vérifié un bonne dizaine de fois l'orthographe, la casse, les jointures, je ne comprends pas du tout d'où vient le bug.
J'ai identifié le bug grâce à :
$resultat=mysql_query($requete,$connexion);
if (!$resultat)
{echo "Il y a un problème avec la requête '$requete'.";
exit();}

donc je sais que ça vient pas de ma base.

Bon week-end à tous et par avance merci pour une éventuelle et tant espérée résolution de mon problème !
Modifié par DansTesReves (12 May 2012 - 18:32)
Bonsoir,
Je viens d'essayer avec cette requête :
$requete="SELECT * FROM etudiant
JOIN etude ON etude.NumEtu=etudiant.NumEtu
JOIN diplome ON etude.NumDiplome=diplome.NumDiplome
WHERE lcase (*) REGEXP lcase ('".$recherche."');";

Mais cela ne fonctionne toujours pas.
J'obtiens la phrase d'erreur que j'ai programmé : Il y a un problème avec la requête 'SELECT * FROM etudiant JOIN etude ON etude.NumEtu=etudiant.NumEtu JOIN diplome ON etude.NumDiplome=diplome.NumDiplome WHERE lcase (*) REGEXP lcase ('Blanc');'.

Mon code plus détaillé, des fois que le problème vienne de plus loin.
L'incrémentation (le retrait en début de ligne, genre tabulation) est-elle importante en php ?

 <?php

if (isset($_POST['recherche']) && !empty($_POST['recherche']))
{$recherche= $_POST['recherche'];}
 else
    {echo "Merci d'entrer un mot <br>";
    exit();}
	
$requete="SELECT * FROM etudiant
JOIN etude ON etude.NumEtu=etudiant.NumEtu
JOIN diplome ON etude.NumDiplome=diplome.NumDiplome
WHERE lcase (*) REGEXP lcase ('".$recherche."');";

$connexion=mysql_connect("localhost","root","");
if (!$connexion)
{echo "Il y a eu un problème de connexion. Merci de  vérifier vos paramètres de connexion puis de réessayer.";
exit();} 

if (!mysql_select_db("baseasso",$connexion))
{echo "Problème de sélection de base. Merci de vérifier le nom de votre base "   ;
exit();}

$resultat=mysql_query($requete,$connexion);
if (!$resultat)
{echo "Il y a un problème avec la requête '$requete'.";
exit();}

while ($enregistrement=mysql_fetch_array($resultat))
{echo $enregistrement['Nom']." ".$enregistrement['Prenom']." ".$enregistrement['EmailEtu']." ".$enregistrement['Titre']." ".$enregistrement['Soutenance']."<br>";
} 
?>
Modérateur
Justement, la phrase d'erreur que tu as programmé est insuffisante. Il faut le vrai message d'erreur retourné par la base de données qui normalement, indique le problème : problème de syntaxe, colonne ou table inexistante, etc.
et bien dans le cadre de ta formation ils auraient pu te parler de or die... cherche sur la doc mysql tu en trouvera la syntaxe et tout l'intérêt
L'erreur qui s'affiche est :

a écrit :
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 'REGEXP ('Rival')' at line 4


(Rival est le nom test que j'ai utilisé pour lancer ma requête)
Donc si j'ai bien compris, le problème vient de cette partie du code :


$requete="SELECT * FROM etudiant
JOIN etude ON etude.NumEtu=etudiant.NumEtu
JOIN diplome ON etude.NumDiplome=diplome.NumDiplome
WHERE REGEXP ('".$recherche."');";

Modifié par DansTesReves (13 May 2012 - 10:05)