Afficher les résultat de mon formulaire sur la même page

Résolu/Fermé
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015 - Modifié par jordane45 le 24/02/2015 à 10:33
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015 - 25 févr. 2015 à 15:32
Bonjour,

je suis débutant en php, j'arrive à insérer, afficher, supprimer, modifier les informations de ma base de données.

j'ai crée un formulaire qui contient qu'un seul champs de saisie(ville) et un bouton valider(submit).

J'aimerais qu'a chaque fois que je choisis une ville et clique sur le bouton envoyé, que le résultat de mon ' select * from client where ville="'.$_POS['ville'].'" ' s'affiche dans un tableau sous le même formulaire.

j'aimerais faire ça sur la même page sans créer une page traitement.php à coté.

j'aimerais en avoir une idée un peu plus claire car ça fait des heures que j'arrive pas à le faire SVP!!

merci d'avance

mon code affichage.php
<form action="" method="">
VILLE <input type="text" name="annee">
<input type="submit" value="RECHERCHER">

<?php 
if(isset($_POST['ville'] ) ) 
$req='select * from client where ville="'.$_POST['ville'].'"'; 
$res=mysql_query($req); // lancement de la requêtre 
?> 

<table border=1 position="center"> 
<tr> 
<th> 
<!-- entête de mon tableau--> 
</th> 
</tr> 

<?php 
//lancement de l'entête de la boucle 
while( $data=mysql_fetch_array($res)) 
{ 
?> 
<tr> 
td><font size=2><?php echo $data['nom']; ?></font></td> 
<td><font size=2><?php echo $data['prenom'];?></font></td> 
<td><font size=2><?php echo $data['date nais']; ?></font></td> 
<td><font size=2><?php echo $data['ville']; ?></font></td> 
<td><font size=2><?php echo $data['portable'];?></font></td> 
<td><font size=2><?php echo $data['fixe']; ?></font></td> 
<td><font size=2><?php echo $data['email']; ?></font></td> 
<td><font size=2><?php echo $data['code postal'];?></font></td> 
<td><font size=2><?php echo $data['adresse']; ?></font></td> 

</tr> 
<?php 
} 
?> 
</table> 
</form>


EDIT : Ajout des balises de code.
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
A voir également:

4 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 24/02/2015 à 11:18
Bonjour,

Tu pourrais aussi utiliser de l'AJAX pour actualiser le contenu de ta liste .... et garder ton Submit pour faire autre chose.....

Par exemple (codé de tête... il peut y avoir quelques erreurs...)

affichage.php
<!-- INCLURE LE FICHIER JQUERY -->



<?php
// Requête pour récupérer la liste des villes
// enregistrées dans la BDD
$sql='SELECT DISTINCT ville
   FROM client 
   GROUP BY  ville
   ORDER BY ville '; 
$arrVilles=mysql_query($sql); // lancement de la requêtre 

?>

<form action="" method="post">
 VILLE 
 <select  name="ville" id="sel_ville" onclick="afficheVille(this.value);">
 <option value=""></option>
 <?php
 while( $data=mysql_fetch_array($arrVilles)) { 
  $ville = $data['ville'];
  echo "<option value='$ville'>$ville</option>";
 }
 ?>
 </select>

 <script type="text/javascript">
 //Script permettant de rafraichir la page 
 //en fonction de la ville selectionnée
 // Necessite la librairie JQUERY
 function afficheVille(ville){
 urlAjx = "rechercheVille.ajx.php";
  $.ajax({ 
    type: "POST",
     url:urlAjx,
     data: "ville="+ville,
     async: false,
     dataType: "html",
     success: function(data){
       $("#tbody_detail").html(data);
     },
     error:function(reponse){
     alert('error ' + reponse);
     }
  });

 }
 </script>
 <input type="submit" value="RECHERCHER">
 <table border=1" id="tbl_donnees"> 
  <thead>
   <tr> 
    <th> 
    <!-- entête de mon tableau--> 
    </th> 
   </tr> 
  </thead>
  <tbody id="tbody_detail">
  </tbody>
 </table> 
</form>



rechercheVille.ajx.php
<?php
//rechercheVille.ajx.php 
//------------------------------------------------------
// >>>>> Penser à Inclure le fichier de connexion à la BDD
//------------------------------------------------------

 $result="";
 $ville=isset($_POST['ville'])?$_POST['ville']:NULL;
 if($ville){ 
  $req='select * from client where ville="'.$_POST['ville'].'"'; 
  $res=mysql_query($req); // lancement de la requêtre 

 while( $data=mysql_fetch_array($res)) {  
 $result .="<tr> 
                   <td><font size=2>".$data['nom']."</font></td> 
                   <td><font size=2>".$data['prenom']."</font></td> 
                   <td><font size=2>".$data['date nais']."</font></td> 
                   <td><font size=2>".$data['ville']."</font></td> 
                   <td><font size=2>".$data['portable']."</font></td> 
                   <td><font size=2>".$data['fixe']."</font></td> 
                   <td><font size=2>".$data['email']."</font></td> 
                   <td><font size=2>".$data['code postal']."</font></td> 
                   <td><font size=2>".$data['adresse']."</font></td> 
                    </tr>";    
  } 
 }
 print ($result);
?>



NB : Pour faire fonctionner le script Javascript .... il faut INCLURE la librairie JQUERY dans le fichier affichage.php .
Téléchargeable ici : http://code.jquery.com/jquery-1.11.2.js

NB2 : Il faut inclure le fichier de connexion à ta BDD dans la page rechercheVille.ajx.php





Cordialement,
Jordane
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
24 févr. 2015 à 15:07

merci pour l'attention que tu accordes à ma demande.
Mais quand j'exécute le code que tu m'as envoyé, je ne vois que le bouton "Rechercher" et rien d'autre.

Si tu pouvais le revoir j'en serai ravi, parce que je ne maîtrise pas du tout Ajax

merci d'avance

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
24 févr. 2015 à 15:13
Tu as mis JQUERY sur ton site ?
Tu as ajouté le fichier de connexion à ta BDD dans le fichier php ajax et dans ta page affichage.php ?
Tu vois bien la liste déroulante quand même ?

De toutes façons.. sans un DUMP de ta BDD (du moins.. la table CLIENT ) et sans savoir comment tu as inclus mon code dans ton site.. impossible pour moi de t'en faire plus
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
24 févr. 2015 à 15:20
j'ai bien mis JQuery sur mon site, je précise que je le fais en local pour le moment avec EasyPhp.
J'ai aussi ajouté le fichier de connexion aux deux pages.
Mais je ne vois pas la liste déroulante.

Bon c'est pas grave je vais chercher encore plus loin, voir même m'initier en Ajax

merci pour le coup de main c'est sympa
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
24 févr. 2015 à 15:27
Tu devrais au mois voir apparaitre la liste déroulante ..(même si l'ajax ne fonctionnait pas...)...

Vide le cache de ton navigateur et réaffiche ta page ....
(pour vider le cache... CTRL + F5 )

Au passage .. installes, si ne c'est pas déjà fait, le plugin FireBug pour FireFox et lances... cela te permettra de voir d'éventuelles erreurs de script javascript et/ou Ajax.
--> Un petit tuto pour savoir comment l'utiliser : http://openclassrooms.com/courses/firebug-une-merveille-de-plus-pour-firefox
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
Modifié par jordane45 le 24/02/2015 à 15:45
ok c'est super veux vais voir ce tuto..

je me disais aussi la même chose, je devrais au moins voir la liste déroulant mais c'est pas le cas.

j'ai observé un peu ton code et je me demandé si ce problème ne venait pas de l'instruction

 <select  name="ville" id="sel_ville" onclick="afficheVille(this.value);">
 <option value=""></option>
 <?php
 while( $data=mysql_fetch_array($arrVilles)) { 
  $ville = $data['ville'];
   echo "<option value='$ville'>$ville</option>";
 }
 ?>
 </select>

mais bon je n'en sais pas trop! mdr..

EDIT : Ajout (ENCORE.....) des balises de code !
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
Modifié par jordane45 le 24/02/2015 à 16:22
voici le code le ma page affiche.php


<script type="text/javascript" src="jquery.js">

<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
if(!$base)
{die('Erreur de connexion au serveur '.mysql_error());}
$sel=mysql_select_db ('mabase', $base) ;
if(!$sel)
{die('Erreur de connexion '.mysql_error());}
//else{echo ' connexion au server reussit';}

// Requête pour récupérer la liste des villes
// enregistrées dans la BDD
$sql='SELECT DISTINCT ville
   FROM client 
   GROUP BY  ville
   ORDER BY ville '; 
$arrVilles=mysql_query($sql); // lancement de la requêtre 

?>

<form action="" method="post">
 VILLE 
 <select  name="ville" id="sel_ville" onclick="afficheVille(this.value);">
 <option value=""></option>
 <?php
 while( $data=mysql_fetch_array($arrVilles)) { 
  $ville = $data['ville'];
  echo "<option value='$ville'>$ville</option>";
 }
 ?>
 </select>

 <script type="text/javascript">
 //Script permettant de rafraichir la page 
 //en fonction de la ville selectionnée
 // Necessite la librairie JQUERY
 function afficheVille(ville){
 urlAjx = "rechercheVille.ajx.php";
  $.ajax({   
    type: "POST",
     url:urlAjx,
     data: "ville="+ville,
     async: false,
     dataType: "html",
     success: function(data){
       $("#tbody_detail").html(data);
     },
     error:function(reponse){
     alert('error ' + reponse);
     }
  });

 }
 </script>
 <input type="submit" value="RECHERCHER">
 
   <table border=1" id="tbl_donnees"> 
    <thead>
     <tr> 
               <th> <font size=2 color="black">NOM </font></th> <th> <font size=2 color="black">PRENOM</font> </th> <th><font size=2 color="black"> NAISSANCE </font></th>
      <th> <font size=2 color="black">VILLE</font> </th> <th> <font size=2 color="black">PORTABLE</font> </th> <th> <font size=2 color="black">FIXE</font> </th>
      <th> <font size=2 color="black">EMAIL</font> </th> <th> <font size=2 color="black">CODE POSTAL </font></th> <th> <font size=2 color="black">ADRESSE</font> </th>
      <th> <font size=2 color="black">DOSSIER TRAITE</font> </th><th> <font size=2 color="black">CV </font></th>
      
     </tr> 
    </thead>
    <tbody id="tbody_detail">
    
    </tbody>
   </table> 
</form>


EDIT : AJOUT (encore...) du LANGAGE dans les balises de code.
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
24 févr. 2015 à 16:23
et celui de ma page rechercheVille.ajx.php



<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
if(!$base)
{die('Erreur de connexion au serveur '.mysql_error());}
$sel=mysql_select_db ('mabase', $base) ;
if(!$sel)
{die('Erreur de connexion '.mysql_error());}
//else{echo ' connexion au server reussit';}
?>

<?php
//rechercheVille.ajx.php
//------------------------------------------------------
// >>>>> Penser à Inclure le fichier de connexion à la BDD
//------------------------------------------------------

$result="";
$ville=isset($_POST['ville'])?$_POST['ville']:NULL;
if($ville){
$req='select * from client where ville="'.$_POST['ville'].'"';
$res=mysql_query($req); // lancement de la requêtre

while( $data=mysql_fetch_array($res)) {
$result .="<tr>
<td><font size=2>".$data['nom']."</font></td>
<td><font size=2>".$data['prenom']."</font></td>
<td><font size=2>".$data['date nais']."</font></td>
<td><font size=2>".$data['ville']."</font></td>
<td><font size=2>".$data['portable']."</font></td>
<td><font size=2>".$data['fixe']."</font></td>
<td><font size=2>".$data['email']."</font></td>
<td><font size=2>".$data['code postal']."</font></td>
<td><font size=2>".$data['adresse']."</font></td>
</tr>";
}
}
print ($result);
?>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
24 févr. 2015 à 16:27
Le script de "refresh".. tu veux dire le script qui fait appel à l'ajax ??
ok..
Donc.. que tu dis FIREBUG lorsque tu affiches la page ?
As tu bien créé le fichier rechercheVille.ajx.php ?
L'as tu mis au même niveau (dans tes répertoires) que la page actuelle ?

Eventuellement... déplaces le script javascript TOUT en bas de ta page ( après ton </form> )
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
24 févr. 2015 à 16:35
J'ai déplacé le script javascript tout en bas, et je vois la liste déroulante affichée avec les villes qui sont stockées dans ma BD.

mais quand je choisis une ville, le tableau en bas reste toujours vide..
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
24 févr. 2015 à 16:41
dans Firebug j'ai le message suivant à dans l'onglet html

<script src="http://i.rklyjs.info/opt_content.js?v=opt_1424609540695&partner=rkly&channel=rkly1049791&sset=7&appTitle=ace%20race&sset=7&ip=80.14.4.121" type="application/x-javascript">
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
24 févr. 2015 à 17:16
regardes dans l'onglet : CONSOLE et dis mois ce que tu as.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
24 févr. 2015 à 18:28
Tu peux mettre le code suivant dans une page et l'ouvrir avec ton navigateur pour voir ce qui se passe ?
<html>
<head>
<title>TEST</title>
</head>
<body>
<script src="jquery.js"></script>

<script type="text/javascript">
$(document).ready(function(){
alert ("Jquery OK");
});


</script>

</body>
</html>


Ca permettra de s'assurer que Jquery est bien là...


0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
24 févr. 2015 à 18:28
J'ai trouvé ton erreur.. tu as oublié de fermer la balise script de l'import jquery...
<script type="text/javascript" src="jquery.js">


a remplacer par :
<script type="text/javascript" src="jquery.js"></script>
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
24 févr. 2015 à 19:30
Waouh! incroyable!!!!!!!!!!!!!!!!!!!!!

Toutes ces heures pour juste une balise oublié.. buffffff

Franchement je te remercie infiniment, tu ne peux pas comprendre à quel point je suis content ce soir.

Que Dieu te bénisse pour ta sympathie et ta générosité.

Là je vais prendre des cours d'ajax en ligne pour mieux me former.


merciiiiiii.....
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
24 févr. 2015 à 19:45
Ce fut avec plaisir.
:-)

bonne continuation.

PS:Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
25 févr. 2015 à 13:38
Oui je le ferai, j'ai par-contre une dernière question à poser.

j'ai passé énormément de temps à réfléchir sans trouve de réponse.

Dans mon tableau j'ai créé une cellule qui doit contenir des case à cocher devant chaque client. cela devrait permettre de cocher la case lorsqu'on traite le dossier d'un client et de cliquer sur le bouton submit qui vas appeler un fichier "valider.php"
et informer la BD que ce client est validé.

mais quand j'insère la case à cocher de la façon suivante, ça génère une erreur:


while( $data=mysql_fetch_array($res)) {
$result .="
<tr>
<td><font size=2>".$data['nom']."</font></td>
<td><font size=2>".$data['prenom']."</font></td>
<td><font size=2>".$data['date nais']."</font></td>
<td><font size=2>".$data['ville']."</font></td>
<td><font size=2>".$data['portable']."</font></td>
<td><font size=2>".$data['fixe']."</font></td>
<td><font size=2>".$data['email']."</font></td>
<td><font size=2>".$data['code postal']."</font></td>
<td><font size=2>".$data['adresse']."</font></td>
<td><INPUT type="checkbox" value=<?php echo $data['nom'];?> ></td>

</tr>";
}




J'ai vraiment besoin de résoudre ce problème, parce que c'est ça mon vrai objectif.

si tu as une idée par-rapport à ça j'en serai super ravi


merci d'avance.
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015 > fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
25 févr. 2015 à 13:46
et je reçois ça comme erreur


Parse error: syntax error, unexpected 'checkbox' (T_STRING)
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
23 févr. 2015 à 14:55
'lut, tout simplement tu peux vérifier la présence des paramètres de form grâce à un
if
et faire la requête & l'affichage s'il y a lieu:
if (isset($_POST['ville'])) {
    // Ta requête & affichage
}
Remarque importante: si j'accède à ta page via cette adresse:
mapage.php?ville=%22%22%3B%20drop%20table%20client%3B
, ta table
client
est supprimée: c'est une injection SQL, et ça fait mal. Pour se protéger, il faut utiliser les requêtes préparées, que les fonctions
mysql_*
n'ont pas en plus d'être obsolètes depuis PHP5.5. Si tu t'en sers, passe a PDO ou mysqli.
-1
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
Modifié par fad2015 le 23/02/2015 à 15:20
Merci pour l'attention que tu portes à ma demande!!

j'ai déjà tenté ça, mais ça ne répond pas correctement à ma demande.

j'explique un peu plus clairement:

j'ai des info dans une BD, un champs ville sur mon formulaire et un bouton ok. j'aimerais que lorsque je choisis une ville et clique sur ok, que les info de ma BD soient afficher dans une tableau juste en bas du formulaire. ( c'est un peu comme si on voulait afficher la liste des clients en fonction des villes)

merci d'avance


voici un aperçu de mon code:

<?php
if(isset($_POST['ville'] ) )
$req='select * from client where ville="'.$_POST['ville'].'"';
$res=mysql_query($req); // lancement de la requêtre
?>

<table border=1 position="center">
<tr>
<th>
<!-- entête de mon tableau-->
</th>
</tr>

<?php
//lancement de l'entête de la boucle
while( $data=mysql_fetch_array($res))
{
?>
<tr>
td><font size=2><?php echo $data['nom']; ?></font></td>
<td><font size=2><?php echo $data['prenom'];?></font></td>
<td><font size=2><?php echo $data['date nais']; ?></font></td>
<td><font size=2><?php echo $data['ville']; ?></font></td>
<td><font size=2><?php echo $data['portable'];?></font></td>
<td><font size=2><?php echo $data['fixe']; ?></font></td>
<td><font size=2><?php echo $data['email']; ?></font></td>
<td><font size=2><?php echo $data['code postal'];?></font></td>
<td><font size=2><?php echo $data['adresse']; ?></font></td>

</tr>
<?php
}
?>
</table>
</form>
0
jm-25 Messages postés 139 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 30 mars 2015 121 > fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
Modifié par jm-25 le 23/02/2015 à 16:56
...
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015 > jm-25 Messages postés 139 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 30 mars 2015
23 févr. 2015 à 16:48
je sais que ce n'est pas trop professionnel ça!! mais comme je l'ai dis je suis encore débutant!!

si tu as une méthode meilleure que celle-ci j'en serai ravi..

merci..
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225 > fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
Modifié par gravgun le 23/02/2015 à 16:49
Pense a utiliser les balises < code > sur le forum s'il te plaît.
Il manque des accolades: une ouvrante après le
if
, et une fermante après la fermeture du tableau.
Sinon, seulement la ligne en dessous du if aura une exécution conditionnelle; avec ton code actuel tu auras une erreur disant que
$req
n'existe pas.
J'insiste sur ma remarque: les fonctions
mysql_*
c'est le mal.
0
fad2015 Messages postés 38 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 30 mars 2015
23 févr. 2015 à 17:03
d'accord!! j'ai résolut ce problème.
ça marche bien, je te remercie énormément.

mais par-contre j'ai pas très bien saisie le problème avec mysql_* ou tu voulais me dire d'utiliser mysqli au lieu de mysql_*??


cordialement
0