Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 03/02/2010, 14h23   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
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 :
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 :
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
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 14h49   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
le bouton rechercher ne fait aucune action.
c'est parce qu'il ne fait pas partie d'un formulaire.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 15h08   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
Oui je sais, mais justement je ne sais pas quel balise form il faut mettre
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 15h18   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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']
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 15h31   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
oui c'est de la méthode que je parlais
J'ai donc
Code :
<FORM METHOD=POST ACTION="#">
mais dans action je mets quoi?
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 15h33   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
en bon html :
Code :
<form method="post" action="page.php">
si ton formulaire boucle sur lui même tu peux mettre action=""
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 15h39   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
Citation:
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
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 15h49   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
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.

Citation:
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 16h00   #9
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
ok merci je regarde comment fonctionne la fonction mysql_real_escape_string()
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 16h33   #10
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
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

Dernière modification par tijocanard ; 03/02/2010 à 16h43.
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 17h19   #11
Modérateur
 
Avatar de Vil'Coyote
 
Développeur Web
Inscription : février 2008
Messages : 3 164
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2008
Messages : 3 164
Points : 4 280
Points : 4 280
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 }
Vil'Coyote est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 18h02   #12
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
merci beaucoup pour ces réponses Vil'Coyote et sabotage!

je vais m'attacher à faire tout ca.
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 10h35   #13
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
Je reviens vers vous car je bloque. Voila ou j'en suis

Code :
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
Citation:
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

Dernière modification par tijocanard ; 05/02/2010 à 10h31.
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 11h19   #14
Modérateur
 
Avatar de Vil'Coyote
 
Développeur Web
Inscription : février 2008
Messages : 3 164
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2008
Messages : 3 164
Points : 4 280
Points : 4 280
Citation:
Envoyé par tijocanard Voir le message
Je reviens vers vous car je bloque. Voila ou j'en suis

Code :
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 :
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 :
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.
Vil'Coyote est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 11h31   #15
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
Citation:
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.

Citation:
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
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 12h06   #16
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2009
Messages : 42
Points : 12
Points : 12
Tout fonctionne
un grand merci à toi
tijocanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 22h18.


 
 
 
 
Partenaires

Hébergement Web