PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 08-04-2010 20:39:13

Diana
Membre
Inscription : 08-04-2010
Messages : 7

Je n'arrive pas à écrire ma requete

Bonsoir,

Je suis débutante en PHP et je tourne on rond pour un petit truc de rien du tout, voici mon echo :
SELECT nom,prenom,mail FROM personne WHERE nom LIKE '%Petitpois%' AND contenu=nom ORDER BY ASC

Voici mon formulaire:


<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="motcle" size="40" maxlength="40"/>
<label>Recherche dans</label>
<select name="contenu">
    <option value="nom"> nom</option>
    <option value="prenom"> prénom</option>
    <option value="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>
 

Mon script recherche.php


<?php
if(!empty($_POST["motcle"]))
{
    include('mysqlconnex.inc.php');
    $id_con=connexMysql('Isis_bdd','paramconnex');
    $motcle=secur($_POST["motcle"],$id_con);
    $contenu=secur($_POST["contenu"],$id_con);
    $ordre=secur($_POST["ordre"],$id_con);
   
    //requête
    $reqContenu=($contenu=="tous") ?"":"AND contenu=$contenu";  X
    $requete="SELECT nom,prenom,mail FROM personne WHERE $contenu  LIKE '%$motcle%' $reqContenu ORDER BY $ordre";  X
    echo '<br/>'.$requete;
 

Je pense que j'ai fait une erreur au niveau des lignes que j'ai signalé par X . Je tourne en bourrique depuis 5 jours mad

J'oubliai que ma table contient : id nom prenom mail  .

Merci pour votre aide

Dernière modification par Diana (08-04-2010 20:45:00)

Hors ligne

#2 08-04-2010 21:40:28

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Je n'arrive pas à écrire ma requete

Tout d'abord : ORDER BY monchamps DESC (ou ASC)
Ensuite je ne vois aucune requête, je vois bien sa définition mais la commande suit-elle ?
Pour finir "tous" est-il un champ de ta table ? Cela me paraît assez bizarre de faire "WHERE tous LIKE "%$motcle%'". (cf ligne 11)

Hors ligne

#3 08-04-2010 21:58:04

Diana
Membre
Inscription : 08-04-2010
Messages : 7

Re : Je n'arrive pas à écrire ma requete

oui j'ai dû faire une erreur sur le ORDER.

$reqContenu=($contenu=="tous") ?"nom,prenom,mail":"$contenu";
    $requete="SELECT nom,prenom,mail FROM personne WHERE $reqContenu LIKE'%$motcle%' ";

Mon code n'est pas bon, mais c'est un peu mieux." tous" n'est pas un champs de ma table, il représente nom prenom mail.

Mais le WHERE me pose soucis. Si je met WHERE nom  ça marchera. Mais pour faire une recherche globale dans nom,prenom,mail (tous) je ne vois pas comment faire.

Dernière modification par Diana (08-04-2010 22:00:26)

Hors ligne

#4 08-04-2010 22:12:33

Diana
Membre
Inscription : 08-04-2010
Messages : 7

Re : Je n'arrive pas à écrire ma requete

J'ai fait comme ça aussi : $reqContenu=($contenu=="tous") ?"nom AND prenom AND mail":"$contenu";

Mais aucun résultat alors que je devrais en avoir 3.

Moi je sais pas, avez vous une idée ? Je m'y prends mal j'ai l'impression roll

Dernière modification par Diana (08-04-2010 22:14:34)

Hors ligne

#5 09-04-2010 09:08:14

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Je n'arrive pas à écrire ma requete

La syntaxe correcte serait de ce genre pour le LIKE :

WHERE `champ_1` LIKE '%mot%' OR `champ_2` LIKE '%mot%' ect

Hors ligne

#6 10-04-2010 14:12:50

Diana
Membre
Inscription : 08-04-2010
Messages : 7

Re : Je n'arrive pas à écrire ma requete

Ca m'a aidée.


$reqContenu=($contenu=="tous") ?"nom LIKE'%$motcle%' OR prenom LIKE'%$motcle%' OR mail LIKE'%$motcle%'":"$contenu LIKE'%$motcle%' ORDER BY $contenu $ordre";

    $requete="SELECT nom,prenom,mail FROM personne WHERE $reqContenu  ";
 

Merci beaucoup smile

Dernière modification par Diana (10-04-2010 14:21:43)

Hors ligne

#7 17-04-2010 12:26:10

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Je n'arrive pas à écrire ma requete

Quand on débute en mysql je te conseille de tester tes requetes sur phpMyAdmin avant de les passer en php surtout si tu n'es pas trop sure de ta syntaxe en php. Ca te fera gagner du temps en débuggage.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#8 17-04-2010 17:45:40

Diana
Membre
Inscription : 08-04-2010
Messages : 7

Re : Je n'arrive pas à écrire ma requete

Oui effectivement, c'est une très bonne idée wink

Hors ligne

Pied de page des forums