IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Probleme de requete est ce que quelqu"un pourrait m'aider


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club Avatar de sephirothmana
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 54
    Points : 38
    Points
    38
    Par défaut Probleme de requete est ce que quelqu"un pourrait m'aider
    Bonjour a tous
    J'ai fais une requete mais elle ne tourne pas correctement (en fait elle affiche pas ce que je voudrait qu'elle affiche)
    Je vous donne le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <html>
    <title>Résultat des recherches pour les modifications des publications</title>
    <body>
    <big><big><big><big>Veuillez faire votre choix Parmis les résulats<small><small><small><small><br><br>
    <?php
    define("SERVEUR","localhost");
    define("LOGIN","root");
    define("MDP","");
    define("MABASE","dbleom");
    //connexion au serveur de BD MySql
    $connexion=mysql_connect(SERVEUR,LOGIN,MDP);
    //connexion a la base de donnée
    mysql_select_db(MABASE,$connexion);
    $auteur=$_POST["auteur"];
    $anne=$_POST["année"];
    $anne2=$_POST["année2"];
    $type=$_POST["type"];
    $motclef1=$_POST["motclef1"];
    $motclef2=$_POST["motclef2"];
    $motclef3=$_POST["motclef3"];
    $motclef4=$_POST["motclef4"];
    $req1 = "SELECT *
    FROM publi_publications
    WHERE type='$type'
    OR auteur1='$auteur'
    OR titre LIKE '%$motclef1%'
    OR titre LIKE '%$motclef2%'
    OR titre LIKE '%$motclef3%'
    OR titre LIKE '%$motclef4%';";
    $query1 = mysql_query($req1) or die (mysql_error());	
    while($val1=mysql_fetch_array($query1))
    {
    echo"<form action=Fomulaire_de_modif_des_publications.php method=GET>";
    echo "<textarea cols=120 rows=1 name=titre>".$val1["titre"]."</textarea>"."<textarea cols=6 rows=1 name=année>".$val1["date"]."</textarea>"."<textarea cols=16 rows=1 name=auteur>".$val1["auteur1"]."</textarea>"."<textarea cols=16 rows=1 name=type>".$val1["type"]."</textarea>"."<input value='Modifier la publication' type='submit'>";
    echo"</form>";
    echo"<br>";
    }
    ?>
    </body>
    </html>
    Merci de bien vouloir m'aider

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut

    1) ici juste la requete nous intéresse
    2) tu peux étre un peu plus précis? car dire que cela n'affiche pas ce que tu eux... on devine comment ce que tu veux afficher?


    Bon courage

    Michel

  3. #3
    Nouveau membre du Club Avatar de sephirothmana
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    la requet devrait afficher les publication qui sont du type choisit qui ont un auteur qui a ete au préalable lui aussi choisit et ou l'on trouve dans le titre un plusieur ou zero motclef la date de publication peut etre comprise entre des dates selectionnables

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    met un jeu d'essai
    puis indique ce que tu voudrais ce que cela retourne et ce que cela te retourne réellement

  5. #5
    Nouveau membre du Club Avatar de sephirothmana
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    facile auteur a blanc
    anne1 a blanc
    anne2 a blanc
    type =article
    motclef 1a blanc
    motclef 2a blanc
    motclef 3a blanc
    motclef 4a blanc

    et la requete va me retourner des publi qui sont des articles et des publi qui ne sont pas des articles et je comprend pas

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    si tu met un OR c'est normal

    si ce n'est pas un article mais qu'il a le nom d'auteur qui correspond, cela va te retourner l'enregistrement

    suivant ce que tu veux il faut jouer avec le OR et le AND (attention le AND est prioritaire)

  7. #7
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Ce code est très mauvais.

    Si mot clef 4 n'est pas renseigné, alors vous allez faire une recherche sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM publi_publications
    WHERE type='$type'
    OR auteur1='bidule'
    OR titre LIKE '%toto%'
    OR titre LIKE '%titi%'
    OR titre LIKE '%tutu%'
    OR titre LIKE '%%';
    Or "titre LIKE '%%'" est toujours vrai....

    Donc votre requête est équivalente à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM publi_publications
    WHERE type='$type'
    OR auteur1='bidule'
    OR titre LIKE '%toto%'
    OR titre LIKE '%titi%'
    OR titre LIKE '%tutu%'
    OR 1;
    Ce qui est équivalent à


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM publi_publications
    WHERE 1;
    Ce qui est équivalent à


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT *
    FROM publi_publications
    Bref cela remonte tout !!!

    Votre code PHP devrait être :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    $req1 = "SELECT * FROM publi_publications WHERE 1 ";
     
    if (!empty($_POST["type"])){
       $req1 .= " AND type='".addslashes($_POST["type"])."' ";
    };
     
    $mot_clef='';
     
    if (!empty($_POST["motclef1"])){
       $mot_clef= "'".addslashes($_POST["motclef1"])."',"
    };
     
    if (!empty($_POST["motclef2"])){
       $mot_clef= "'".addslashes($_POST["motclef2"])."',"
    };
     
    if (!empty($_POST["motclef3"])){
       $mot_clef= "'".addslashes($_POST["motclef3"])."',"
    };
     
    if (!empty($_POST["motclef4"])){
       $mot_clef= "'".addslashes($_POST["motclef4"])."',"
    };
     
    //Suppresion de la dernière virgule
    $mot_clef = preg_replace(',$','',$mot_clef);//A vérifier
     
    if (!empty($mot_clef)){
       $req1 .= " AND titre in ($mot_clef) ";
    }
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  8. #8
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    De toute façon, et comme je le répète souvent , quand une requête ne retourne pas ce qu'elle doit retourner, remplacez toujours dans votre code la fionction mysql_query par die (ou echo au pire).

    Ainsi vous verrez la requête que vous exécutez et comprendrez plus rapidement votre erreur !

    Votre message aurait dû etre posté dans PHP sous forum SGBD, je déplace !
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

Discussions similaires

  1. Est-ce que quelqu'un a déjà essayé Pelles C ?
    Par dapounet dans le forum Choisir un environnement de développement
    Réponses: 3
    Dernier message: 25/11/2007, 10h25
  2. Est ce que quelqu'un a travaillé sur les graphes ?
    Par condor_01 dans le forum Algorithmes et structures de données
    Réponses: 43
    Dernier message: 16/10/2007, 01h48
  3. Réponses: 4
    Dernier message: 01/02/2007, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo