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 :

Recherche depuis un formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut Recherche depuis un formulaire
    Bonjour,
    je souhaite récupérer une information depuis un formulaire et m'en servir pour établir une recherche dans ma table Mysql :
    Merci de votre aide.

    Partie de mon code / formulaire HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ....
    <form method="post" action="http://fazpedro.free.fr/rechercher.php">
    <fieldset>
    <legend> &nbsp; Recherche dans l'agenda des évènements &nbsp; </legend>
    <p class="double">
    <label for="ev1">Type d'évènement</label>
    	<select name="evenement1" class="ev">
    	<option value="Tous" selected="selected">Tous</option>
        <option value="Concert">Concert</option>
        <option value="Spectacle" >Spectacle</option>
    ....
    mon script PHP :
    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
    <?php
    //Données pour la connexion à la base de données
    $nom_du_serveur ="sql.free.fr";
    $nom_de_la_base ="user";
    $nom_utilisateur ="user";
    $passe ="mdp";
     
    //Connexion à la base de données
    $db = mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
    mysql_select_db("$nom_de_la_base",$db) OR die( "ERREUR de connexion : " . mysql_error () );
     
    //Si il y a une erreur, on crie ^^
    if (!$sql) { die ( 'Erreur de requête : ' . mysql_error() ); }
    //Si tout va bien
    else
     
    // requête SQL
    $select = 'SELECT * FROM evenement WHERE type_evenement = '$_POST['evenement1']."';  
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    
     // on recupere le resultat sous forme d'un tableau
    $data = mysql_fetch_array($requete);  
      
    //Déconnexion
    mysql_close();
    ?>
    ma table evenement :
    Champ : type_evenement nom
    Type : varchar(255) Interclassement : utf8_general_ci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    et ? qu'est ce qui ne marche pas ? au passage ton code est faux regarde la coloration syntaxique

  3. #3
    Invité
    Invité(e)
    Par défaut


    En temps normal je demanderais :
    - Quel est ton problème ?
    - Quel résultat obtiens-tu et quel est le delta entre ce résultat et ce que tu souhaites faire ?

    Mais la coloration syntaxique m'informe que tu as une Parse Error à la ligne 18 de ton script de traitement. Remplace-la par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $select = "SELECT * FROM evenement WHERE type_evenement = '".$_POST['evenement1']."'";
    Autre petit détail : pour une page de recherche, mieux vaut mettre la méthode du formulaire à GET, et ce pour 2 raisons :
    - Sémantique : tu cherches à récupérer des informations du serveur et non pas à poster des informations sur le serveur
    - Pratique : une page de recherche avec une URL en GET est une URL que Google peut référencer

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir
    //Si il y a une erreur, on crie ^^
    if (!$sql) { die ( 'Erreur de requête : ' . mysql_error() ); }
    ça crie ou pas , vue que $sql n'est pas définie .

    A+.

  5. #5
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut Recherche depuis un formulaire
    @ torvalds17
    j'ai bien modifié la ligne mais l'erreur se trouve sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    Message d'erreur :
    Parse error: syntax error, unexpected '{' in /mnt/154/sdc/8/e/fazpedro/creation.php on line 20

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    utilise un vrai éditeur sinon tu vas jamais t'en sortir, relis bien ton code.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Regarde bien la couleur syntaxique, tu as une guillemet non fermée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "SELECT * FROM evenement WHERE type_evenement = '".$_POST['evenement1']."'";
    Sinon ça sert à quoi le test avec $sql qui est une variable non instanciée .

    A+.

  8. #8
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut Recherche depuis un formulaire
    j'ai modifié mon PHP ainsi mais je n'obtiens rien (pas de message d'erreur et une page blanche...) merci de votre aide !

    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
    <?php
    //Données pour la connexion à la base de données
    $nom_du_serveur ="sql.free.fr";
    $nom_de_la_base ="user";
    $nom_utilisateur ="user";
    $passe ="mdp";
     
    //Connexion à la base de données
    $db = mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
    mysql_select_db("$nom_de_la_base",$db) OR die( "ERREUR de connexion : " . mysql_error () );
     
    // requête SQL
    $select = "SELECT * FROM evenement WHERE type_evenement = '".$_POST['evenement1']."'";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
    // on recupere le resultat sous forme d'un tableau
    $data = mysql_fetch_array($result);  
     
    //Déconnexion
    mysql_close();
    ?>

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    affiche les erreurs

    au début de ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ini_set('display_errors', true);
    ini_set('mysql.trace_mode', true);
    error_reporting(-1);

    mais en même temps t'affiches rien donc c'est normale la page blanche....

  10. #10
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Bonjour

    Heu, si je ne me trompe pas dans ton script PHP tu ne fais aucun affichage, donc comment veux tu avoir autre chose qu'une page blanche ?

    Tu fais tes requêtes, mais il faut afficher le résultat.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Si tu n'as pas de code HTML après ta fermeture de PHP, c'est normal que tu aies une page blanche. Fais donc un petit print_r($data) pour vérifier le contenu de ce que tu as récupéré de ta base de données

    Et par pitié, utilise un éditeur avec coloration syntaxique

  12. #12
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut Recherche depuis un formulaire
    j'ai indiqué ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // on recupere le resultat sous forme d'un tableau
    $data = mysql_fetch_array($result);
    print_r($data)
    voici le message d'erreur :
    Parse error: syntax error, unexpected T_STRING in rechercher.php on line 28

    => ligne 28 : mysql_close();

    @ torvalds17 : j'utilise Notepad++ : que me conseilles-tu ?
    Merci.

  13. #13
    Invité
    Invité(e)
    Par défaut
    OK tu as un éditeur correct.

    Ce dont je ne m'étais pas rendu compte c'est que tu es débutant en PHP. Le message d'erreur que tu obtiens signifie que l'interpréteur n'arrive pas à lire la ligne 28. A priori il n'y a pas d'erreur sur cette ligne, mais ça peut être sur la ligne précédente, genre parce que tu n'as pas mis de point-virgule après avoir copié/collé la ligne que je t'ai donnée

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Il te faut un ";" après print_r($data)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $data = mysql_fetch_array($result);
    print_r($data);
    mysql_close();

  15. #15
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut Répondre à la discussion
    voici le code php modifié qui fonctionne ..presque
    si je prends la deuxième option dans la liste déroulante "Spectacle", j'obtiens une page blanche alors que si je prends "Concert", il me donne bien des éléments...

    merci à tous.

    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
     
    <?php
    //Message des erreurs
    ini_set('display_errors', true);
    ini_set('mysql.trace_mode', true);
    error_reporting(-1);
     
    //Données pour la connexion à la base de données
    $nom_du_serveur ="sql.free.fr";
    $nom_de_la_base ="user";
    $nom_utilisateur ="user";
    $passe ="mdp";
     
    //Connexion à la base de données
    $db = mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
    mysql_select_db("$nom_de_la_base",$db) OR die( "ERREUR de connexion : " . mysql_error () );
     
    // requête SQL
    $select = "SELECT * FROM evenement WHERE type_evenement = '".$_POST['evenement1']."'";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
    // on recupere le resultat sous forme d'un tableau
    $data = mysql_fetch_array($result);
    print_r($data);
     
    //Déconnexion
    mysql_close(); 
    ?>

  16. #16
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut Recherche depuis un formulaire
    Voici le code PHP rectifié et qui fonctionne bien :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <!--[if IE]>
    <style type="text/css">
    /* placer les corrections pour toutes les version d'IE dans ce commentaire conditionnel */
    #sidebar1, #sidebar2 { padding-top: 30px; }
    #mainContent { zoom: 1; padding-top: 15px; }
    /* la propriété du proprétaire zoom ci-dessus transmet à IE l'attribut hasLayout nécéssaire pour éviter plusieurs bogues */
       </style>
       <![endif]-->
    </head>
    <body>
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
    <?php include('lateral.php'); ?> <!-- insère les côtés gauche et droite -->
    <div id="mainContent">
    <table>
    <tr>
    <td><b />Type Evenement</td><td><b />Type de lieu</td><td><b />Secteur</td><td><b />Heure</td>
    <td><b />Tarif</td><td><b />Lieu</td><td><b />Nom</td><td><b />Description</td>
    </tr>
     
    <?php
    // on se connecte à la base de données
    mysql_connect("sql.free.fr","user","mdp");
    mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es de connections.');
    mysql_query("SET NAMES UTF8"); 
    //On sélectionne tout dans la table  par "id" croissant	
    //$select = "SELECT * FROM evenement WHERE type_evenement = '".$_POST['evenement1']."'";
    $select = "SELECT * FROM evenement WHERE type_evenement LIKE '".$_POST['evenement1']."'";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    //On vérifie que la table contient quelque chose
    if
    (mysql_num_rows($result) == 0)
    {
    echo '<p>Aucun commentaire!</p>';
    }
    //Si il y a des entrées	  
    else
    {
    //On fait une boucle pour sortir toutes les entrées
    while($affiche = mysql_fetch_array($result))
     {
    //On affiche les entrées
    echo 
    '<p>'
    .'<td>'.'<h4/>'.$affiche["type_evenement"].'</td>'
    .'<td>'.'<h4/>'.$affiche["type_etab"].'</td>'
    .'<td>'.'<h4/>'.$affiche["secteur"].'</td>'
    .'<td>'.'<h4/>'.$affiche["heure"].'</td>'
    .'<td>'.'<h4/>'.$affiche["tarif"].'</td>'
    .'<td>'.'<h4/>'.$affiche["lieu"].'</td>'
    .'<td>'.'<h4/>'.$affiche["nom"].'</td>'
    .'<td>'.'<h4/>'.$affiche["description"]
    .'<tr>'.'</tr>';
    //On ferme la boucle while
     }
    //on ferme le else
    }
    // Fermeture de la connexion à la base de données
    mysql_close();		
    ?>
    </table>
    </div>
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche d'un enregistrement depuis un formulaire
    Par stevyfr dans le forum VBA Access
    Réponses: 4
    Dernier message: 15/06/2021, 11h37
  2. [XL-2013] Rechercher et lister des données dans une feuille depuis un formulaire
    Par UZeInDub dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/01/2015, 09h49
  3. [MySQL] rechercher dans une base de donnée depuis un formulaire
    Par infoworld2013 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/08/2013, 03h45
  4. Rechercher enregistrement depuis sous-formulaire continu
    Par clickandgo dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/05/2012, 22h11
  5. Réponses: 0
    Dernier message: 29/01/2010, 09h11

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