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 :

Lancer une requete au moment d'un clic sur bouton [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut Lancer une requete au moment d'un clic sur bouton
    Bonjour à tous.

    N'étant pas expérimenté du tout en php je vous expose mon problème.
    J'ai un site web sur une asso de course à pied avec une bdd qui contient les résultats des coureurs.

    Je veux donc proposer aux gens de saisir leur nom et prenom et ca sort tous leurs résultats

    j'ai donc mon code html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <fieldset id="fieldset1">
    <legend>Coureur</legend>
    <label for="prenom">Prénom :</label>
    <input type="text" id="prenom" name="prenom" value="" />
    <input type="text" id="nom" name="nom" 	value="" />
    </fieldset>						
    <div id="bouton">	
    <input type="submit" name="recherche" value="Rechercher" />
    </div>
    le bouton rechercher ne fait aucune action.
    J'ai fait des test avec ce code 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
     
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("result");
    $result = mysql_query("SELECT date,temps,classement FROM coureur");
    ?>
    <table>
    <tr>
    <td>Annee</td>
    <td>Temps</td>
    <td>Classement</td>
    </tr>
    <?php  $row = mysql_fetch_row($result);?>
    <tr>
    <td><?php echo $row[0];?></td>
    <td><?php echo $row[1];?></td>
    <td><?php echo $row[2];?></td>
    </tr>
    </table>
    ce code fonctionne bien, j'ai un tableau avec mes 3 colonnes et le résultat de la requête.
    maintenant comment exécuter la requête pour prendre en compte ce que l'utilisateur va saisir (nom & prénom)

    dois-je faire une méthode post ou get?

    merci de m'aider et me dire ce qui ne va pas

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    le bouton rechercher ne fait aucune action.
    c'est parce qu'il ne fait pas partie d'un formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    Oui je sais, mais justement je ne sais pas quel balise form il faut mettre

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    pour la balise c'est la seule et l'unique <form>
    si tu parles de la méthode, classiquement on utiliser post plutôt que get.

    Tu recuperes donc à l'arrivée $_POST['nom'] et $_POST['prenom']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    oui c'est de la méthode que je parlais
    J'ai donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <FORM METHOD=POST ACTION="#">
    mais dans action je mets quoi?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    en bon html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="page.php">
    si ton formulaire boucle sur lui même tu peux mettre action=""
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    Tu recuperes donc à l'arrivée $_POST['nom'] et $_POST['prenom']
    c'est donc ce que je mets dans ma requête? car pour arriver au résultat il me faut bien une clause 'where' dans ma requête qui indique le nom et le prénom.
    Sinon est ce que mon traitement php doit être dans la même div que le formulaire?

    merci pour ton aide en tout cas

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    c'est donc ce que je mets dans ma requête? car pour arriver au résultat il me faut bien une clause 'where' dans ma requête qui indique le nom et le prénom.
    Toutafé.
    Cependant pour des questions de sécurité et de caractères spéciaux, on utilise pas directement les données reçues d'un formulaire. on les passe avant à la fonction mysql_real_escape_string() dans le cas d'une base mysql.

    Sinon est ce que mon traitement php doit être dans la même div que le formulaire?
    PHP ignore ce qu'est un <div>.
    Le traitement peut être ou tu veux, dans le même fichier ou dans un autre selon la logique de ton code.
    Si tu fais boucler le formulaire sur lui même, il est par exemple logique de faire le traitement avant l'affichage du formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    ok merci je regarde comment fonctionne la fonction mysql_real_escape_string()

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    c'est bon cela fonctionne!

    maintenant des petit détails:
    1- quand je clique sur chercher, le nom et prénom saisit disparait: comment les laisser afficher?

    2-si la recherche ne retourne rien, comment envoyer un message pour dire qu'il n'y a pas de résultats

    3-si la recherche retourne plusieurs résultats (donc plusieurs ligne), 1 seule ligne s'affiche: je dois donc avoir 1 probleme avec les echo row

    4- comment afficher le tableau au moment du click? car pour le moment le tableau est déja affiché avant d'avoir appuyer sur le bouton

    merci en tout cas

  11. #11
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    Citation Envoyé par tijocanard Voir le message
    c'est bon cela fonctionne!

    maintenant des petit détails:
    1- quand je clique sur chercher, le nom et prénom saisit disparait: comment les laisser afficher?

    2-si la recherche ne retourne rien, comment envoyer un message pour dire qu'il n'y a pas de résultats

    3-si la recherche retourne plusieurs résultats (donc plusieurs ligne), 1 seule ligne s'affiche: je dois donc avoir 1 probleme avec les echo row

    4- comment afficher le tableau au moment du click? car pour le moment le tableau est déja affiché avant d'avoir appuyer sur le bouton

    merci en tout cas
    1° il faut que tu gère le conditionnement à savoir dans ton <input type='text' value='<? echo $_POST["toto"]; ?>' name='toto' >
    après tu peux ajouter un if isset() etc ...

    2° une fois ta requête exécuter tu as un mysql_num_rows($resultat) qui te donne le nombre d'enregistrement retourné il te suffit de faire un test si 0 alors message d'info

    3° pour afficher l'ensemble des résultat il faut que tu boucle
    while ($row = mysql_fetch_row($result))
    {
    ton affichage ......
    }

    4° tu conditionne ton code php avec un if isset($_POST["tavariable de formulaire"]) else { j'affiche le reste }
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    merci beaucoup pour ces réponses Vil'Coyote et sabotage!

    je vais m'attacher à faire tout ca.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    Je reviens vers vous car je bloque. Voila ou j'en suis

    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
     
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("result"); 
    if (isset($_POST['recherche']))
    {
      echo '<table>';
      echo '<tr>';
      echo '<td>Annee</td>';
      echo '<td>Temps</td>';
      echo '<td>Classement</td>';
      echo '</tr>';
     
      if (isset($_POST['prenom']) and (isset($_POST['nom'])))
      {
      $result = mysql_query("SELECT date,temps,classement FROM coureur where nom='$_POST[nom]'and prenom='$_POST[prenom]'");
      $nom = mysql_real_escape_string($_POST['nom']);
      $prenom = mysql_real_escape_string($_POST['prenom']);
     
        while  ($row=mysql_fetch_row($result))
        { 
        echo '<tr>';
        echo '<td>';
        echo $row[0];
        echo '</td>';
        echo '<td>';
        echo $row[1];
        echo '</td>';
        echo '<td>';
        echo $row[2];
        echo '</td>';
        echo '</tr>';
        } 
        echo '</table>';
      }
    }
    ?>
    1- ou mettre mon test avec if "mysql_num_rows($resultat)"?

    2- je n'arrive pas non plus à retenir le nom et prenom malgré cette aide
    1° il faut que tu gère le conditionnement à savoir dans ton <input type='text' value='<? echo $_POST["toto"]; ?>' name='toto' >
    3- mon tableau s'affiche bien au moment du clic mais si la requête retourne rien le tableau s'affiche quand même avec juste les intitulés.

    j'ai du mal placer mes instructions au bon endroits dans les boucles (if et while)

    merci pour votre aide

  14. #14
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    Citation Envoyé par tijocanard Voir le message
    Je reviens vers vous car je bloque. Voila ou j'en suis

    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
     
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("result"); 
    if (isset($_POST['recherche']))
    {
      echo '<table>';
      echo '<tr>';
      echo '<td>Annee</td>';
      echo '<td>Temps</td>';
      echo '<td>Classement</td>';
      echo '</tr>';
     
      if (isset($_POST['prenom']) and (isset($_POST['nom'])))
      {
      $result = mysql_query("SELECT date,temps,classement FROM coureur where nom='$_POST[nom]'and prenom='$_POST[prenom]'");
      $nom = mysql_real_escape_string($_POST['nom']);
      $prenom = mysql_real_escape_string($_POST['prenom']);
     
        while  ($row=mysql_fetch_row($result))
        { 
        echo '<tr>';
        echo '<td>';
        echo $row[0];
        echo '</td>';
        echo '<td>';
        echo $row[1];
        echo '</td>';
        echo '<td>';
        echo $row[2];
        echo '</td>';
        echo '</tr>';
        } 
        echo '</table>';
      }
    }
    ?>
    1- ou mettre mon test avec if "mysql_num_rows($resultat)"?

    2- je n'arrive pas non plus à retenir le nom et prenom malgré cette aide


    3- mon tableau s'affiche bien au moment du clic mais si la requête retourne rien le tableau s'affiche quand même avec juste les intitulés.

    j'ai du mal placer mes instructions au bon endroits dans les boucles (if et while)

    merci pour votre aide
    On est bien d'accrod que tu n'utilise qu'une seule est même page pour afficher ton formulaire et effectuer le traitement d'affichage?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form .....>
     
    <?php
    if(isset($_POST["nom"])) { echo "<input type='text' name='nom' value='".$_POST["nom"]."'/>";} else { echo "<input type='text' name='nom' />";}
     
    idem pour le prénom .....
    </form>
    Pour la question ou mettre ton test du nombre de réponse, je crois que là c'est de la logique uniquement non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     $result = mysql_query("SELECT date,temps,classement FROM coureur ....")
    if(mysql_num_rows($result) >= 1)
    {
     tu affiche la liste
    }
    else
    {
     echo "ton message comme quoi y a personne";
    }
    enfin dernière question pour les intitulé de tableau, tu doit les mettre après ce test if et avant le while affichant les données.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    On est bien d'accrod que tu n'utilise qu'une seule est même page pour afficher ton formulaire et effectuer le traitement d'affichage?
    oui une seule page, le tableau du résultat de ma requête s'affiche en dessous de mon form.

    Pour la question ou mettre ton test du nombre de réponse, je crois que là c'est de la logique uniquement non?
    je sais bien mais je voyais pas ca comme ca

    merci pour tout

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 43
    Par défaut
    Tout fonctionne
    un grand merci à toi

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

Discussions similaires

  1. Ouvrir une seule JFrame avec un seul clic sur bouton
    Par chemsoun dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 01/02/2014, 17h50
  2. lancer une requete HTTP en java
    Par Jérémy Lefevre dans le forum Applets
    Réponses: 2
    Dernier message: 31/05/2007, 17h05
  3. Impromptu : lancer une requete imr sur access
    Par kikie43 dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 06/12/2006, 22h26
  4. Lancer une requête par du code
    Par Kyrha dans le forum Access
    Réponses: 8
    Dernier message: 30/05/2006, 09h10
  5. [VBA-E]Ecrire et lancer une requete sur Access
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2006, 14h32

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