Problème d'include et de boucle while
Hevno Quentin
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Tout le monde ! J'espère que je trouverais des connaisseurs ici, je vous explique mon problème , j'ai programmé deux pages en PHP une qui affiche des informations lier a un client et l'autre permettant de lister toutes les villes de France dans une liste.
Première page concernant le Profil :
deuxième page contenant le listing:
Le problème que je rencontre, est sur la page contenant les champs select, malgré avoir mis une bloucle, cela n'affiche qu'un seul résultat sur la page d'information clients ( Je parle de la première page), d'ailleurs on peut voir cette portion de code :
Qui correspond à une variable contenant une include que je reprends d'ailleurs dans la première page dans le code suivant :
Bien entendu j’ai essayé de mettre while sur les deux pages a la place de if, mais rien y fais, auriez-vous une solution ?
Merci d'avance
Tout le monde ! J'espère que je trouverais des connaisseurs ici, je vous explique mon problème , j'ai programmé deux pages en PHP une qui affiche des informations lier a un client et l'autre permettant de lister toutes les villes de France dans une liste.
Première page concernant le Profil :
// Connection base de donnée include 'connexion.php'; // juste après la connexion mysql_query("SET NAMES 'UTF8'"); $client= mysql_real_escape_string($_GET["numero_client"]); //création de la requête SQL: $sql = "SELECT * FROM wp_client WHERE id='$client'"; //exécution de notre requête SQL: $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ); $ville_client_liste= include 'config/modification_ville.php'; if ($result = mysql_fetch_object($requete)) { $page_client= ' <br/> <br/> <div id="header_logo"> <img src="img/logo.png" alt="logo" title="Logo" border="0"> </div> <br/> <div id="page_modification_client"> <div id="titre_page_client"> <h2>Modification de la fiche client</h2> </div> <label>Nom du client :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->nom)).'"> <br/> <br/> <label>Prénom du client :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->prenom)).'"> <br/> <br/> <label>Classification de type :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->type)).'"> <br/> <br/> <label>Adresse du client :</label> <br/> <textarea rows="4" cols="50">'.mysql_real_escape_string(htmlspecialchars($result->adresse)).'</textarea> <br/> <br/> <label>Code postale du client :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->code_postale)).'"> <br/> <br/> <label>Localisation ville :</label> <br/> <select name="carlist" form="carform"> <option value="">'.mysql_real_escape_string(htmlspecialchars($result->ville)).'</option> <option value=""></option> '.$liste_ville.' </select> <br/> <br/> <label>Localisation pays :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->pays)).'"> <br/> <br/> <label>Adresse email du client :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->email)).'"> <br/> <br/> <label>Numéro de téléphone Fixe :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->telephone_fixe)).'"> <br/> <br/> <label>Numéro de téléphone Portable :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->telephone_portable)).'"> <br/> <br/> <label>Numéro de fax :</label> <br/> <input type="text" value="'.mysql_real_escape_string(htmlspecialchars($result->faxe)).'"> <br/> <br/> </div> <br/> <br/> '; }
deuxième page contenant le listing:
<?php // Connection base de donnée include 'connexion.php'; //juste après la connexion mysql_query("SET NAMES 'UTF8'"); //création de la requête SQL: $sql2= "SELECT * FROM villes_france ORDER BY ville_nom ASC"; //exécution de notre requête SQL: $requete2= mysql_query( $sql2, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ); while ($result2 = mysql_fetch_object($requete2)) { // echo '<option value="'.mysql_real_escape_string(htmlspecialchars($result->ville)).'">'.mysql_real_escape_string(htmlspecialchars($result->ville)).'</option>'; $liste_ville= '<option value="'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'">'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'</option>'; echo $liste_ville; } ?>
Le problème que je rencontre, est sur la page contenant les champs select, malgré avoir mis une bloucle, cela n'affiche qu'un seul résultat sur la page d'information clients ( Je parle de la première page), d'ailleurs on peut voir cette portion de code :
$ville_client_liste= include 'config/modification_ville.php';
Qui correspond à une variable contenant une include que je reprends d'ailleurs dans la première page dans le code suivant :
<label>Localisation ville :</label> <br/> <select name="carlist" form="carform"> <option value="">'.mysql_real_escape_string(htmlspecialchars($result->ville)).'</option> <option value=""></option> '.$liste_ville.' </select> <br/> <br/>
Bien entendu j’ai essayé de mettre while sur les deux pages a la place de if, mais rien y fais, auriez-vous une solution ?
Merci d'avance
A voir également:
- Problème d'include et de boucle while
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Pc qui s'allume et s'éteint en boucle - Forum Virus
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, peux-tu donner les noms de chacun de tes fichiers php, et expliquer en utilisant ces noms?
si je comprends bien, tu as ces fichiers:
- une page en PHP qui affiche des informations lier a un client
- une page d'information clients
- une page en PHP permettant de lister toutes les villes de France dans une liste
- une page concernant le Profil
- une page contenant le listing
- un fichier config/modification_ville.php
- un fichier connexion.php
- une page contenant les champs select
comment ces fichiers sont-ils liés? quel est le nom de la page appelée par le navigateur du client?
si je comprends bien, tu as ces fichiers:
- une page en PHP qui affiche des informations lier a un client
- une page d'information clients
- une page en PHP permettant de lister toutes les villes de France dans une liste
- une page concernant le Profil
- une page contenant le listing
- un fichier config/modification_ville.php
- un fichier connexion.php
- une page contenant les champs select
comment ces fichiers sont-ils liés? quel est le nom de la page appelée par le navigateur du client?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Je ne pense pas que tu ais donné le nom du fichier "Première page concernant le Profil".
A quoi sert la variable
Peux-tu ajouter dans ce fichier, après l'instruction
les instructions suivantes:
A quoi sert la variable
$ville_client_liste?
Peux-tu ajouter dans ce fichier, après l'instruction
$ville_client_liste= include 'config/modification_ville.php';
les instructions suivantes:
print_r($ville_client_liste); print_r($liste_ville);
La page profil fait appel à la case switch
Dans la page module_recherche.php tu a une ligne :
Si tu regardes bien le lien de l'image
Des variables qui sont dans le fichier config.php du dossier config, donc
$ville_client_liste= include 'config/modification_ville.php';
Fais appelle à la page modification_ville.php qui contient justement les champs select, afin de lister les villes, quand on regarde un peu plus loin dans le code ligne 71 du premier poste on a ceci en concaténation
une variable qui est dans le fichier modification_ville.php et qui contient ça :
<?php
// Connection base de donnée
include 'connexion.php';
//juste après la connexion
mysql_query("SET NAMES 'UTF8'");
//création de la requête SQL:
$sql2= "SELECT * FROM villes_france ORDER BY ville_nom ASC ";
//exécution de notre requête SQL:
$requete2= mysql_query( $sql2, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
while ($result2 = mysql_fetch_object($requete2))
{
$liste_ville= '<option value="'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'">'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'</option>';
}
?>
case 'Modification_Client': echo $meta2_page_accueil; echo $page_client; break;
Dans la page module_recherche.php tu a une ligne :
<td width="100" class="div_resultat_recherche_text_tableau" bgcolor="'.$font2.'" valign="middle"><a href="?page=Modification_Client&numero_client='.$id.'" rel="nofollow noopener noreferrer" target="_blank" title="Modifier le client"><img src="img/modifier.png" alt="img_client" title="img_client" border="0"></a> '.$type.'</td>
Si tu regardes bien le lien de l'image
href="?page=Modification_Client&numero_client "ça point directement sur module de switch et lui en fonction de "Modification_Client" va afficher :
echo $meta2_page_accueil; echo $page_client;
Des variables qui sont dans le fichier config.php du dossier config, donc
$ville_client_liste= include 'config/modification_ville.php';
Fais appelle à la page modification_ville.php qui contient justement les champs select, afin de lister les villes, quand on regarde un peu plus loin dans le code ligne 71 du premier poste on a ceci en concaténation
'.$liste_ville.'
une variable qui est dans le fichier modification_ville.php et qui contient ça :
<?php
// Connection base de donnée
include 'connexion.php';
//juste après la connexion
mysql_query("SET NAMES 'UTF8'");
//création de la requête SQL:
$sql2= "SELECT * FROM villes_france ORDER BY ville_nom ASC ";
//exécution de notre requête SQL:
$requete2= mysql_query( $sql2, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
while ($result2 = mysql_fetch_object($requete2))
{
$liste_ville= '<option value="'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'">'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'</option>';
}
?>
Et c'est justement tout le problème
pour chaque ville.
'.$liste_ville.'inclut la page modification_ville.php avec la liste des ville sous forme de sélection, Mais ! Au lieu de m'afficher toute les villes comme il devrait le faire je n'ai que la première ville qui s'affiche, celle de la table, c'est pour ça que j'ai mis while afin répétée:
$liste_ville= '<option value="'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'">'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'</option>';
pour chaque ville.
As-tu compris ma question "A quoi sert la variable $ville_client_liste?"? Tu n'y a pas répondu.
Pourquoi as-tu écrit
et pas
As-tu écrit ce code php?
As-tu appliqué ma suggestion:
Peux-tu ajouter dans ce fichier, après l'instruction
$ville_client_liste= include 'config/modification_ville.php';
les instructions suivantes:
print_r($ville_client_liste);
print_r($liste_ville);
Pourquoi as-tu écrit
$ville_client_liste= include 'config/modification_ville.php';
et pas
include 'config/modification_ville.php';
As-tu écrit ce code php?
As-tu appliqué ma suggestion:
Peux-tu ajouter dans ce fichier, après l'instruction
$ville_client_liste= include 'config/modification_ville.php';
les instructions suivantes:
print_r($ville_client_liste);
print_r($liste_ville);
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Je ne comprends pas bien ta boucle while dans le fichier Modification_ville.php:
A chaque itération, la valeur précédente de $liste_ville est remplacée par une nouvelle valeur. Est-ce vraiment ce que tu veux obtenir?
while ($result2 = mysql_fetch_object($requete2)) { $liste_ville= '<option value="'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'">'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'</option>'; // echo $liste_ville; }
A chaque itération, la valeur précédente de $liste_ville est remplacée par une nouvelle valeur. Est-ce vraiment ce que tu veux obtenir?
Non je voudrais que
<option value="valeur1">Valeur 1</option>
<option value="valeur2" selected>Valeur 2</option>
<option value="valeur3">Valeur 3</option>
Chaque option serait égale à une ville.
$liste_villeliste toute les villes présente de la table ville_france, mais pas dans un seul champs option mais plusieurs, exemple :
<option value="valeur1">Valeur 1</option>
<option value="valeur2" selected>Valeur 2</option>
<option value="valeur3">Valeur 3</option>
Chaque option serait égale à une ville.
J'ai testé différente manière de le faire ça me ramène toujours au même stade, une seule ville apparaît dans le select alors que si je mets le code suivant en modifiant de cette façon sur une page vierge par exemple :
Et bien là toutes les villes apparaissent, donc je ne comprends pas pourquoi d'une page à l'autre ça ne fonctionne pas, j'ai donc modifié un peu dans le fichier config.php pour la variable $page_client, j'ai fait comme ceci ce qui me parait mieux pour cette partie du code :
En sachant que
Ensuite du cotée modification_ville.php :
J'ai aussi fait ce que tu m’as dit yg_be mais ça revient à la même chose.
<?php // Connection base de donnée include 'connexion.php'; //juste après la connexion mysql_query("SET NAMES 'UTF8'"); //création de la requête SQL: $sql2= "SELECT * FROM villes_france ORDER BY ville_nom ASC "; //exécution de notre requête SQL: $requete2= mysql_query( $sql2, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ); while ($result2 = mysql_fetch_object($requete2)) { // $liste_ville= '<option value="'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'">'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'</option>'; $liste_ville= mysql_real_escape_string(htmlspecialchars($result2->ville_nom)); echo $liste_ville; } ?>
Et bien là toutes les villes apparaissent, donc je ne comprends pas pourquoi d'une page à l'autre ça ne fonctionne pas, j'ai donc modifié un peu dans le fichier config.php pour la variable $page_client, j'ai fait comme ceci ce qui me parait mieux pour cette partie du code :
<label>Localisation ville :</label> <br/> <select name="carlist" form="carform"> <option value="">'.mysql_real_escape_string(htmlspecialchars($result->ville)).'</option> '.$ville_client_liste.' '.$liste_ville.' </select> <br/> <br/>
En sachant que
$ville_client_listeest :
$ville_client_liste= include 'config/modification_ville.php';
Ensuite du cotée modification_ville.php :
<?php // Connection base de donnée include 'connexion.php'; //juste après la connexion mysql_query("SET NAMES 'UTF8'"); //création de la requête SQL: $sql2= "SELECT * FROM villes_france ORDER BY ville_nom ASC "; //exécution de notre requête SQL: $requete2= mysql_query( $sql2, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ); while ($result2 = mysql_fetch_object($requete2)) { $liste_ville= '<option value="'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'">'.mysql_real_escape_string(htmlspecialchars($result2->ville_nom)).'</option>'; } ?>
J'ai aussi fait ce que tu m’as dit yg_be mais ça revient à la même chose.
Bon j'ai tenter ceci aussi
ça c'est le contenu de la variable $page_client déclarée dans le fichier config.php, nous ce qui nous intéresse çest ça :
Et le résultat est le suivant :
https://img15.hostingpics.net/pics/402034test34.png
Donc cela s'affiche bien mais normalement ça devrais lister tout !
<label>Localisation ville :</label> <br/> <select name="carlist" form="carform"> <option value="">'.mysql_real_escape_string(htmlspecialchars($result->ville)).'</option> </select> '.$ville_client_liste.' '.$liste_ville.' <br/> <br/>
ça c'est le contenu de la variable $page_client déclarée dans le fichier config.php, nous ce qui nous intéresse çest ça :
<label>Localisation ville :</label> <br/> <select name="carlist" form="carform"> <option value="">'.mysql_real_escape_string(htmlspecialchars($result->ville)).'</option> </select> '.$ville_client_liste.' '.$liste_ville.' <br/> <br/>
Et le résultat est le suivant :
https://img15.hostingpics.net/pics/402034test34.png
Donc cela s'affiche bien mais normalement ça devrais lister tout !
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
quelques suggestions:
- à chaque fois que tu mentionnes un fichier ou que tu montres le contenu d'un fichier, donne le nom du fichier.
- ne mélange pas le concept de fichier et le concept de page
- ne mélange pas le concept de déclaration et le concept d'assignation
- explique-nous pourquoi tu fais ce travail, ce que tu connais en programmation, ce que tu as déjà réalisé (cela nous aidera à mieux communiquer avec toi)
- quand nous te demandons d'ajouter des instructions echo ou print_r, c'est dans le but de connaitre ce qui sera affiché pas ces instruction. merci alors de donner précisément ce que cela affiche.
- à chaque fois que tu mentionnes un fichier ou que tu montres le contenu d'un fichier, donne le nom du fichier.
- ne mélange pas le concept de fichier et le concept de page
- ne mélange pas le concept de déclaration et le concept d'assignation
- explique-nous pourquoi tu fais ce travail, ce que tu connais en programmation, ce que tu as déjà réalisé (cela nous aidera à mieux communiquer avec toi)
- quand nous te demandons d'ajouter des instructions echo ou print_r, c'est dans le but de connaitre ce qui sera affiché pas ces instruction. merci alors de donner précisément ce que cela affiche.
Expliquer en détail, tous les fichiers et le site serais beaucoup trop long mais je vais essayer, il y a une page principale, cette page principale (index.php) est un moteur de recherche, quand on tape un nom le résultat s'affiche en temps réel et plus on augmente les lettres afin de faire un mot plus le résultat diminue, ce peaufine.
En fonction de ça, cela m'affiche ma liste de client, sous forme de tableau, chaque ligne correspond à un client avec un petit bouton qui permet éditer ce client, en fonction de son id , cela m'affiche les données de celui-ci dans la page index.php?page=Modification_Client
Oui, car tout le site ne comporte pas vraiment de page physique sauf l'index et les pages annexes de connexion à la base de données, car je change de page avec switch CASE :
Comme ceci :
Chaque variable est déclarée dans le fichier config.php et a également une valeur, d’ailleurs on peut le constater dans le code de mon premier message
Donc en somme le site ne compte qu'une seule page, après c'est le switch qui joue son rôle en jonglent de variable en variables.
Dans le dossier config on a ceci :
config.php (regroupe toutes les variables avec le contenue de chaque page)
connect.php qui comporte :
$Config_host = 'localhost';
$Config_user = 'user';
$Config_password = '***';
$Config_DBname = 'wp_client';
connection.php
Modification_ville.php
module_recherche.php
un site est un ensemble de fichiers. l'utilisateur du site voit des pages html. essaie d'expliquer ton problème sans mélanger les fichiers et les pages.
https://img15.hostingpics.net/pics/518323site.png