Afficher les résultat de mon formulaire sur la même page [Résolu/Fermé]

Signaler
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
-
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
-
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

4 réponses

Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 878
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
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 878
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
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

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 !
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 878 >
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

1 - dernier rappel :
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

2 - Pourquoi est-ce que ça viendrait de là ??

A la limite.. histoire de tester ... remplaces ce code par:
<select  name="ville" id="sel_ville" onclick="afficheVille(this.value);">
 <option value="">Faire un choix </option>
 <option value="1">1</option>
 <option value="2">2</option>
 <option value="3">3</option>
 </select>

Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
>
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020

le problème ne vient pas du code de la liste, il vient plutôt du Script permettant de rafraichir la page, parce que quand je place la liste après ce script elle s'affiche, mais quand la place avant le script elle ne s'affiche pas.
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 878 >
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

Script permettant de rafraichir la page,
??????
De quoi parles tu ?
Tu ne nous as pas montré ce script.......

1 - Comme demandé précédemment.. installes FIREBUG et regarde s'il n'y a pas des erreurs de script.

2 -.. si ça ne fonctionne toujours pas.... Donnes moi le code complet de ta page
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

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.
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 878
S'il te dit que $ is not define.. c'est que l'import de jquery n'est pas bon....
As tu bien créé le fichier jquery.js ?
L'as tu mis dans le même répertoire que ta page actuelle ?
Que contient t-il exactement ?
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
>
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020

Quand je clique sur le lien jquery.js que tu m'as envoyé, cela m'ouvre une page avec plein de code. C'est ces codes que je copie(Ctr A) et le met dans un fichier jquery.js

n'est ce pas comme ça que je devrais procédé?
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 878 >
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

si ça devrait fonctionner..... l'autre solution étant tout simplement de faire, une fois la page affichée, Fichier / Enregistrer sous ...

Par contre..tu n'as pas répondu aux autres questions...
Où as tu placé ce fichier JS ?

+ question supplémentaire : Qu'as tu d'écrit comme URL dans ton navigateur ?
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
>
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

et je confirme que tous mes fichiers sont dans le même dossier!!
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

j'ai juste cliqué sur le lien qui mène à la page affiche. et j'ai l'url suivant


http://127.0.0.1/www/affiche.php


franchement je suis désolé pour tout le temps que je te fais perdre!!
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 878
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à...


Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
>
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020

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.....
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 878
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
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
>
Messages postés
29856
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020

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.
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
>
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

et je reçois ça comme erreur


Parse error: syntax error, unexpected 'checkbox' (T_STRING)
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

c'est tout bon,

j'ai trouvé la solution....

merciiiii......
Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020
1 101
'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.
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
>
Messages postés
139
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
30 mars 2015

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..
Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020
1 101 >
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

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.
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

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
Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020
1 101 >
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015

Le problème avec
mysql_*
, c'est que ces fonctions sont obsolètes depuis PHP5.5, étaient déconseillées en 5.4, et ne seront plus livrées avec les prochaines versions de PHP, car le module qui les fournit est vieux, plus maintenu (donc porte ouverte aux failles de sécurité) et fait adopter aux gens des pratiques de code des plus mauvaises. PDO ou MySQLi sont aussi des fonctions de lien BDD<->PHP, mais plus récentes, qui disposent de ce qu'on appelle les requêtes préparées, chose extraordinaire qui met fin a tout problème d'injection SQL comme c'est le cas avec ton code.
MySQLi a l'avantage de plus ressembler aux fonctions
mysql_*
, tandis que PDO est orienté objet seulement.
Messages postés
38
Date d'inscription
lundi 23 février 2015
Statut
Membre
Dernière intervention
30 mars 2015
>
Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020

Je te remercie énormément, j'ai fais des recherches sur mysqli hier et je trouve que c'est super..

Sans pour autant abuser, j'aimerais te poser une dernière question:

dans mon tableau qui affiche la liste des clients de ma BD, j'ai mis des cases à cocher devant chaque client.

J'aimerais que lorsqu'on traite le dossier d'un client qu'on puisse coche la case et clique sur un bouton valider qui va appeler un fichier valider.php.

mais vu que j'ai déjà un bouton "rechercher" sur lequel on clique pour afficher la liste des clients, je ne sais pas comment gérer cette situation.

Je resume: j'ai deux boutons, le premier est appelé "Rechercher" quand je clique sur ce bouton j'affiche la liste des clients. Le second est appelé "Valider" quand je clique sur ce bouton ça informe la BD que ce client est valider.


Si je trouve la solution à cette dernière question j'en serai super ravi.

merciii...