Page 1 sur 1

Problème de requête mysql

Posté : 04 avr. 2010, 15:50
par diabless6
Bonjour,

J'ai réalisé un script de recherche, mais la requête est un peu difficile à élaborer et j'obtiens :

lecture impossible, 1064 : 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 'dans_nom ORDER BY dans_nom ASC' at line 2

Avec mon echo ça donne :
SELECT dans_id AS 'id', dans_nom AS 'nom', dans_prenom AS 'prenom' FROM personne WHERE lower(nom) LIKE '%OK%'dans_nom ORDER BY dans_nom ASC
D'ailleurs le %OK% c'est bizarre, car ce n'est pas ce que j'ai tapé dans la form. #-o

Ici mon script qui contient ma form:
<body>
<form action="modif.php" method="post" enctype="application/x-www-form-urlencoded">
<fieldset>
    <legend>Personne à modifier</legend>
<label>votre id:</label><input type="text" name="id" size="20"/>
<input type="submit" name="submit" value="Modifier"/>
</fieldset>
</form>
<form action="recherche.php" method="post" enctype="application/x-www-form-urlencoded">
<fieldset>
<legend>Recherche</legend>
<label>Entrez le mot clé</label>
<input type="text" name="recherche" size="40" maxlength="40"/>
<label>Recherche dans</label>
<select name="contenu">
    <option value="dans_id"> Id</option>
    <option value="dans_nom"> nom</option>
    <option value="dans_prenom"> prénom</option>
    <option value="dans_tous">Toute catégorie</option>
</select>
<label>Par ordre :</label>
Croissant<input type="radio" name="ordre" value="ASC" checked="checked"/>
Décroissant<input type="radio" name="ordre" value="DESC"/>
<br/>
<input type="submit" name="" value="OK"/>
</fieldset>
</form>
</body>
</html>
<!--Affichage des données triées de la BDD-->
Suite en PHP
<?php
include("mysqlconnex.inc.php");
$id_con=connexMysql("isis_bdd","paramconnex");
//requête
$requete="SELECT * FROM personne ORDER BY nom ASC";
$result=mysql_query($requete,$id_con);
if(!$result)
{
    echo'Lecture impossible !';
}
else
{
    $nbcol=mysql_num_fields($result);
    $nblig=mysql_num_rows($result);
    echo"nombre colonnes = $nbcol (Id,nom,prenom,mail)<br/>";
    echo"nombre lignes = $nblig (entrées actuellement)<br/>";
    echo"Contenu :<br/>";
    while($tab_result=mysql_fetch_array($result,MYSQLI_ASSOC))
    {
        foreach($tab_result as $col=>$val)
        {
        echo"<ul><li>$col = $val</li></ul>";
        
        }
        echo"-----------------";
    }
}
mysql_free_result($result);
?>
Et celui qui contient le script recherche.php là ou j'ai un soucis avec la requête :
<?php
if(!empty($_POST["recherche"]))
{
    include('mysqlconnex.inc.php');
    $id_con=connexMysql('Isis_bdd','paramconnex');
    $motcle=secur($_POST["recherche"],$id_con);
    $contenu=secur($_POST["contenu"],$id_con);
    $ordre=secur($_POST["ordre"],$id_con);
    
    //requête
    $reqContenu=($contenu=="dans_tous") ?"":"AND contenu='$contenu'";
    $requete="SELECT dans_id AS 'id', dans_nom AS 'nom', dans_prenom AS 'prenom'
    FROM personne WHERE lower(nom) LIKE '%$motcle%'".$contenu." ORDER BY $contenu $ordre";
    echo '<br/>'.$requete;
    $result=mysql_query($requete,$id_con);
    
    if(!$result)
    {
        echo'<br/>lecture impossible, '.mysql_errno().' : '.mysql_error();
    }
    else
    $nbcol=mysql_num_fields($result);
    $nblig=mysql_num_rows($result);
    echo"</br>nb de personnes: $nblig correspond à $motcle";
    //affiche titres mysql
    for($i=0;$i<$nbcol;$i++)
    {
        echo'<ul><li>'.mysql_field_name($result,$i).'</li></ul>';
    }
    //affiche valeurs
    for($i=0;$i<$nblig;$i++)
    {
        $ligne=mysql_fetch_row($result);
        echo'<ul><li>';
        for($j=0;$j<$nbcol;$j++)
        {
            echo $ligne[$j];
        }
        echo'</li></ul>';
        mysql_free_result($result);
    }
}

?>
Merci

Re: Problème de requête mysql

Posté : 04 avr. 2010, 16:27
par stealth35
c'est ton truc $contenu qui va pas
SELECT dans_id AS 'id', dans_nom AS 'nom', dans_prenom AS 'prenom' FROM personne WHERE lower(nom) LIKE '%OK%'dans_nom ORDER BY dans_nom ASC

Re: Problème de requête mysql

Posté : 04 avr. 2010, 16:40
par diabless6
Coucou stealth35 :wink:

Qu'est-ce qui faut que je fasse, je suis un peu perdue :roll:

Re: Problème de requête mysql

Posté : 04 avr. 2010, 17:58
par stealth35
ca correspond a quoi $contenu ?

Re: Problème de requête mysql

Posté : 04 avr. 2010, 18:11
par diabless6
ca correspond a quoi $contenu ?
au choix ici :

<select name="contenu">
<option value="dans_id"> Id</option>
<option value="dans_nom"> nom</option>
<option value="dans_prenom"> prénom</option>
<option value="dans_tous">Toute catégorie</option>
</select>

Re: Problème de requête mysql

Posté : 04 avr. 2010, 19:55
par Dr@ke
Ce que veux dire stealth je pense, c'est que tu utilises peut-être un $contenu de trop, non?
Tu as surement créé la variable $contenu dans le but d'assigner un ordre de tri différent suivant le choix de l'utilisateur dans le formulaire?

Re: Problème de requête mysql

Posté : 04 avr. 2010, 22:53
par Ryle
Essayes comme ceci :
$requete="SELECT dans_id AS id, dans_nom AS nom, dans_prenom AS prenom
    FROM personne WHERE lower(".$contenu.") LIKE '%".strToLower($motcle)."%' ORDER BY ".$contenu." ".$ordre;
au lieu de
$requete="SELECT dans_id AS 'id', dans_nom AS 'nom', dans_prenom AS 'prenom'
    FROM personne WHERE lower(nom) LIKE '%$motcle%'".$contenu." ORDER BY $contenu $ordre";

Re: Problème de requête mysql

Posté : 26 avr. 2010, 18:05
par diabless6
Merci pour vos réponses.
Je vois que j'en avais ratées :priere: (effacer des mails par erreur)

J'ai réussie à corriger le problème entre temps :wink:

Merci à vous.