[php] Requetes / Pb affichage / Bdd
dubuducu
Messages postés
391
Date d'inscription
Statut
Membre
Dernière intervention
-
thecrazyspy Messages postés 413 Date d'inscription Statut Membre Dernière intervention -
thecrazyspy Messages postés 413 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je sollicite vos conseils experts en la matiere afin de mieux me renseigner dans ma démarche.
Je suis debutant en Php, désolé si mes explications ne sont pas concises.
je possede une bdd(devis) avec 10champs(id,nom,prenom,email ...)
Je souhaite visionner dans deux menu deroulants deux champs distincts de ma base de donnée (departement et type_projet). En cliquant sur le bouton "envoyer" je voudrai savoir si c possible que dans la page "liste.php" il me soit affiché les champs "id" et "nom" en rapport avec le choix fait auparavant (departement et type_projet).
$rq = "SELECT DISTINCT departement FROM devis_table ORDER BY departement";
$resultq = mysql_query($rq)
or die ("Exécution de la requête impossible");
//DISTINCT permet d'afficher qu'une fois les données
mysql_close;
echo"<b>Choisissez un departement</b>\n";
echo"<br><br>";
echo "<form action='liste.php' method='post'>
<select name='departement'>\n";
while ($liste=mysql_fetch_array($resultq))
{
extract($liste);
echo "<option value='$departement'>$departement\n";
}
echo " </select>\n";
echo " <BR><BR><BR><BR>";
$ra = "SELECT DISTINCT thematique_projet FROM devis_table ORDER BY thematique_projet";
$result = mysql_query($ra)
or die ("Exécution de la requête impossible");
//DISTINCT permet d'afficher qu'une fois les données
mysql_close;
echo"<b>Choisissez une categorie de devis</b>\n";
echo"<br><br>";
echo "<form action='liste.php' method='post'><select name='thematique_projet'>\n";
while ($liste=mysql_fetch_array($result))
{
extract($liste);
echo "<option value='$thematique_projet'>$thematique_projet\n";
}
echo " </select>\n";
echo " <BR><BR><BR><BR>";
Voila c'est tres moche, jen suis conscient mais j'accepte vos conseils de toutes part.
Je vous remercie d'avance. Bonne journée
je sollicite vos conseils experts en la matiere afin de mieux me renseigner dans ma démarche.
Je suis debutant en Php, désolé si mes explications ne sont pas concises.
je possede une bdd(devis) avec 10champs(id,nom,prenom,email ...)
Je souhaite visionner dans deux menu deroulants deux champs distincts de ma base de donnée (departement et type_projet). En cliquant sur le bouton "envoyer" je voudrai savoir si c possible que dans la page "liste.php" il me soit affiché les champs "id" et "nom" en rapport avec le choix fait auparavant (departement et type_projet).
$rq = "SELECT DISTINCT departement FROM devis_table ORDER BY departement";
$resultq = mysql_query($rq)
or die ("Exécution de la requête impossible");
//DISTINCT permet d'afficher qu'une fois les données
mysql_close;
echo"<b>Choisissez un departement</b>\n";
echo"<br><br>";
echo "<form action='liste.php' method='post'>
<select name='departement'>\n";
while ($liste=mysql_fetch_array($resultq))
{
extract($liste);
echo "<option value='$departement'>$departement\n";
}
echo " </select>\n";
echo " <BR><BR><BR><BR>";
$ra = "SELECT DISTINCT thematique_projet FROM devis_table ORDER BY thematique_projet";
$result = mysql_query($ra)
or die ("Exécution de la requête impossible");
//DISTINCT permet d'afficher qu'une fois les données
mysql_close;
echo"<b>Choisissez une categorie de devis</b>\n";
echo"<br><br>";
echo "<form action='liste.php' method='post'><select name='thematique_projet'>\n";
while ($liste=mysql_fetch_array($result))
{
extract($liste);
echo "<option value='$thematique_projet'>$thematique_projet\n";
}
echo " </select>\n";
echo " <BR><BR><BR><BR>";
Voila c'est tres moche, jen suis conscient mais j'accepte vos conseils de toutes part.
Je vous remercie d'avance. Bonne journée
A voir également:
- [php] Requetes / Pb affichage / Bdd
- Affichage double ecran - Guide
- Easy php - Télécharger - Divers Web & Internet
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
- Expert php pinterest - Télécharger - Langages
12 réponses
//page avec la liste deroulante
<?
$sql = "SELECT * FROM na_theme ORDER BY libelle_theme";
$result = mysql_query($sql) or die('error making query');
?>
Thèmes :
<select name="theme" id="theme">
<option value="null1">******************************</option>
<? while ($nbr=mysql_fetch_array($result))
{
$id = $nbr['id_theme'];
$theme = $nbr['libelle_theme'];
echo ("<option value=$id>$theme</option>");
}
?>
</select>
//page résultat
$idtheme = $_POST['theme'];
la ta l'id du choix de ta liste, avec tu peux faire un requete selectionnant le nom et id
C'est cela que tu cherche?
<?
$sql = "SELECT * FROM na_theme ORDER BY libelle_theme";
$result = mysql_query($sql) or die('error making query');
?>
Thèmes :
<select name="theme" id="theme">
<option value="null1">******************************</option>
<? while ($nbr=mysql_fetch_array($result))
{
$id = $nbr['id_theme'];
$theme = $nbr['libelle_theme'];
echo ("<option value=$id>$theme</option>");
}
?>
</select>
//page résultat
$idtheme = $_POST['theme'];
la ta l'id du choix de ta liste, avec tu peux faire un requete selectionnant le nom et id
C'est cela que tu cherche?
bonjour,
Je ne pense pas. Du moins je ne crois pas avoir bien compris ce que tu m'explique.
http://www.devisrapide.com/membres/bas.php
Regarde, j'epsere que cela pourra t'eclairer.
Merci beaucoup de prendre du temps pour me repondre. C'est vraiment tres sympa !
Je ne pense pas. Du moins je ne crois pas avoir bien compris ce que tu m'explique.
http://www.devisrapide.com/membres/bas.php
Regarde, j'epsere que cela pourra t'eclairer.
Merci beaucoup de prendre du temps pour me repondre. C'est vraiment tres sympa !
tu veux que des deux liste soit liées en quelque sort pour donnée le résultat, en fonction du département et du type de devis que cela t'affiche tel ou tel prix ou autre ?
oui c'est possible.
dans page page liste ou tu veux affiche le resultat, dans un premier il te faut recuperer les deux élément choisit des liste
donc :
$a = $_POST['departement'];
$b = $_POST['thematique_projet'];
avec cela tu fait une requete en liée tes tables, avec pour condition que le departement soit $a et l'autre $b, apres je sais pas comment et ta base de donnée et tes tables, tu voi a peu pres? ou tu veux plus de details
dans page page liste ou tu veux affiche le resultat, dans un premier il te faut recuperer les deux élément choisit des liste
donc :
$a = $_POST['departement'];
$b = $_POST['thematique_projet'];
avec cela tu fait une requete en liée tes tables, avec pour condition que le departement soit $a et l'autre $b, apres je sais pas comment et ta base de donnée et tes tables, tu voi a peu pres? ou tu veux plus de details
je vois a peu pres oui, je recupere sur liste.php les données mais apres que dois-je faire ? je ne vois pas bien quelle requete executer .
Ma table sapelle "Devis" et je voudrai affichier les champs "id" "nom" " email" en corrélation avec mes 2 listes .
Je suis vraiment géné d'etre aussi nul et de pas comprendre du premier coup. Merci beaucoup pour tout ce que tu fais
Ma table sapelle "Devis" et je voudrai affichier les champs "id" "nom" " email" en corrélation avec mes 2 listes .
Je suis vraiment géné d'etre aussi nul et de pas comprendre du premier coup. Merci beaucoup pour tout ce que tu fais
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour mieux tirer parti de la structure relationnelle de mysql, tu devrais créer deux tables supplémentaires :
1. departement_table avec deux variables : identifiant et libelle
2. theme_table avec deux variables : identifiant et libelle
Dans ta table devis_table, tu place les identifiants respectifs.
Dans ton script de choix tu n'utilise plus DISTINCT mais qqch comme :
Utiliser la structure relationnelle est essentielle en particulier pour la maintenance (pour changer le libellé d'un département par exemple tu ne devras modifier que l'enregistrement correspondant de la table departement_table.
1. departement_table avec deux variables : identifiant et libelle
2. theme_table avec deux variables : identifiant et libelle
Dans ta table devis_table, tu place les identifiants respectifs.
Dans ton script de choix tu n'utilise plus DISTINCT mais qqch comme :
$rq = "SELECT id,libelle FROM departement_table ORDER BY libelle"; $resultq = mysql_query($rq) or die ("Exécution de la requête impossible"); //DISTINCT permet d'afficher qu'une fois les données //mysql_close; <<<<<<<<<< NON echo"<b>Choisissez un departement</b>\n"; echo"<br><br>"; echo "<form action='liste.php' method='post'>"; echo "<select name='departement'>"; while ($liste=mysql_fetch_array($resultq)) { extract($liste); echo "<option value='" . $liste['id'] . "'>" . $liste['libelle'] ."</option>"; } echo " </select>\n"; echo " <BR><BR><BR><BR>";
Utiliser la structure relationnelle est essentielle en particulier pour la maintenance (pour changer le libellé d'un département par exemple tu ne devras modifier que l'enregistrement correspondant de la table departement_table.
ok donc ta requete
select id,nom,email from devis_table where departement = $a and type_devis = $b;
$a et $b etant les données recupérees des listes deroulantes
select id,nom,email from devis_table where departement = $a and type_devis = $b;
$a et $b etant les données recupérees des listes deroulantes
poua !
c'est nikel, vous etes trop forts ! je teste ca desuite et je vous tien au courant.
Merci bokoup.c'est vraiment clair maintenant ... enfin ca devien un peu moins flou :p
c'est nikel, vous etes trop forts ! je teste ca desuite et je vous tien au courant.
Merci bokoup.c'est vraiment clair maintenant ... enfin ca devien un peu moins flou :p
hum j'ai enkore un petit probleme c'est que je ne sais pas afficher le resultat de cette requete.
je pense qu'il faudrai faire une boucle afin d'afficher tous les devis comportant les données $a et $b.
Je suis perdu, je cherche a droite et a gauche mais rien de concret
je vous demande un peu d'aide, merci
je pense qu'il faudrai faire une boucle afin d'afficher tous les devis comportant les données $a et $b.
Je suis perdu, je cherche a droite et a gauche mais rien de concret
je vous demande un peu d'aide, merci
Pour faire du travail propre, il est nécessaire que tu changes la structure de ta base comme indiqué dans le message n° 7.
En informatique, construire une appli sur des bases irrationnelles finit toujours par se payer très cher.
A ta disposition sur ces bases.
En informatique, construire une appli sur des bases irrationnelles finit toujours par se payer très cher.
A ta disposition sur ces bases.
je sais bien, c'est sale et moche.
mais c'est un brouillon juste histoire d'apprendre et acroitre mes connaissances en php.je pars de rien,completement autodidacte, c'est normal que le resultat soit degueulasse.
Grace a vos conseils je m'ameliore.
En ce qui concerne la solution a mon probleme, j'en suis la ...
<?php
$sql = "SELECT id,codepostal FROM devis_table WHERE departement = $a and type_devis = $b;";
$result = mysql_query($sql)
or die ("Exécution de la requête impossible");
//DISTINCT permet d'afficher qu'une fois les données
mysql_close;
if($result) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>Date</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>Type</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['id'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['codepostal'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
?>
ceci est sur la page liste.php !! cela ne m'affiche rien, je m'y attendai :)
que dois-je faire, tout casser ? me suicider ?
Merci.
mais c'est un brouillon juste histoire d'apprendre et acroitre mes connaissances en php.je pars de rien,completement autodidacte, c'est normal que le resultat soit degueulasse.
Grace a vos conseils je m'ameliore.
En ce qui concerne la solution a mon probleme, j'en suis la ...
<?php
$sql = "SELECT id,codepostal FROM devis_table WHERE departement = $a and type_devis = $b;";
$result = mysql_query($sql)
or die ("Exécution de la requête impossible");
//DISTINCT permet d'afficher qu'une fois les données
mysql_close;
if($result) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>Date</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>Type</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['id'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['codepostal'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
?>
ceci est sur la page liste.php !! cela ne m'affiche rien, je m'y attendai :)
que dois-je faire, tout casser ? me suicider ?
Merci.
deja je corrige quelques fautes !
<?php
$a = $_POST['departement'];
$b = $_POST['thematique_projet];
$sql = "SELECT id,codepostal FROM devis_table WHERE departement = $a and type_devis = $b";
$result = mysql_query($sql)
or die ("Exécution de la requête impossible");
mysql_close;
if($result) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>id</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>codepostal</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['id'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['codepostal'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
?>
<?php
$a = $_POST['departement'];
$b = $_POST['thematique_projet];
$sql = "SELECT id,codepostal FROM devis_table WHERE departement = $a and type_devis = $b";
$result = mysql_query($sql)
or die ("Exécution de la requête impossible");
mysql_close;
if($result) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>id</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>codepostal</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['id'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['codepostal'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
?>
Remplace $sql = ... par :
1. j'ai formatté le source du script pour que l'on voit bien les blocs logiques
2. PHP interprète les variables entre guillemets doubles mais il est plus clair (et donc sûr pour le développeur) de mettre les variables en dehors des chaines
3. dans la clause WHERE j'ai ajouté des guillemets simples qui ne sont nécessaires que si departement ou type_devis sont des chaines de caractères
4. dans l'appel à DIE j'ai ajouté mysql_error dont tu verras l'intérêt.
Concernant la structure de table que je te recommande, c'est justement parceque tu débutes que tu devrais bien tirer parti de la structure relationnelle de mysql. Si tu ne le fais pas tu manques un quantum de connaissance très fondamental.
$sql = "SELECT id,codepostal" . " FROM devis_table . " WHERE departement = '" . $a . "' AND type_devis = '" . $b . "'"; $result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); //mysql_close; <<<<< NE pas mettre cet appel
1. j'ai formatté le source du script pour que l'on voit bien les blocs logiques
2. PHP interprète les variables entre guillemets doubles mais il est plus clair (et donc sûr pour le développeur) de mettre les variables en dehors des chaines
3. dans la clause WHERE j'ai ajouté des guillemets simples qui ne sont nécessaires que si departement ou type_devis sont des chaines de caractères
4. dans l'appel à DIE j'ai ajouté mysql_error dont tu verras l'intérêt.
Concernant la structure de table que je te recommande, c'est justement parceque tu débutes que tu devrais bien tirer parti de la structure relationnelle de mysql. Si tu ne le fais pas tu manques un quantum de connaissance très fondamental.
Insère :
avant la ligne
Est-ce-que tu as copié/collé le fragment de code ci-dessus ou bienl'as-tu resaisi ?
echo '<br>...' . $sql;
avant la ligne
$result = mysql_query(...
Est-ce-que tu as copié/collé le fragment de code ci-dessus ou bienl'as-tu resaisi ?
Merci Croy!!
voici le code qui fonctionne :
$a = $_POST['departement'];
$b = $_POST['thematique_projet'];
$sql = "SELECT id,departement,commentaires FROM devis_table WHERE departement = '" . $a . "' AND thematique_projet = '" . $b . "'";
$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() );
if($result) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>id</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>departement</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>commentaires</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['id'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['departement'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['commentaires'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
?>
voici le code qui fonctionne :
$a = $_POST['departement'];
$b = $_POST['thematique_projet'];
$sql = "SELECT id,departement,commentaires FROM devis_table WHERE departement = '" . $a . "' AND thematique_projet = '" . $b . "'";
$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() );
if($result) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>id</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>departement</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>commentaires</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['id'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['departement'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['commentaires'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
?>