Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 18/07/2007, 11h30   #1
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
Par défaut [SQL] Contenu d'une liste déroulante

Bonjour a tous,

j'ai besoin de votre aide je butte sur qqchose qui va vous paraitre simple j'en suis sur. mais je pense que je me plante completement.

j'ai une page formulaire avec un liste déroulante (comprenant des données d'une de ma base sql)

la voici (elle est integrée a ma page)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<form action="new3.php" method="post">
<p>
 
<?php
mysql_connect("localhost", "root", "" ); 
mysql_select_db("profimmo" ); 
$departement = mysql_query("SELECT * FROM dptf" );
 
echo'<select name="departement">';
while ($donnees = mysql_fetch_array($departement))
{
?>
<option value="<?php echo $donnees['dept']; ?>"><?php echo $donnees['dept']; ?></option>
<?php
}
echo'</select>';
mysql_close(); // Déconnexion de MySQL 
?>
<input type="submit" value="Valider" />
</p>
</form>
j'ai donc une variable $departement et je souhaiterai que lorsque je clique sur valider la page suivante me sorte la liste des annonces de ce departement contenu dans mysql.

voila ce que j'ai pondu comme page lorsque je clique sur valider (page new3.php)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php 
$departement = $_POST['departement'];  
 
$db = mysql_connect('localhost', 'root', ''); 
 
 
mysql_select_db('profimmo',$db); 
 
$sql = 'SELECT * FROM annonces_entreprise'; 
 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
 
while($data = mysql_fetch_assoc($req)) 
    { 
      echo '<b>'.$data['nom_entreprise'].' '.$data['adresse_entreprise'].'</b> ('.$data['ville_entreprise'].')'; 
    } 
 
mysql_close(); 
?>
qqun peut il m'aider? please

Merci d'avance les amis...
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 11h32   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Pourrais-tu indiquer le probleme? La connexion à la base ne se fait pas? La requete est fausse? La valeur n'est pas récupérée de la liste déroulante?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 11h36   #3
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
j'ai une table dptf (qui correspond a la liste des départements) j'ai une table annonces_entreprise (qui stocke l'ensemble de mes contacts)

je souhaiterai que lorsque je selectionne le département sur ma première page, ma seconde page affiche la liste complete de mes contacts.

mais j'ai un probleme dans ma requete je pense
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 11h45   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
oui effectivement tu listes la totalité des annonces là
il faudrait que tu fasses

Code :
$sql = 'SELECT * FROM annonces_entreprise WHERE id_departement = ' .$departement;
Ensuite il faut que dans ta page qui affiche la liste des département, tu mettes dans la combo le nom du département, et dans la clé l'id du département dans ta table:
Code :
<option value="<?php echo $donnees['id_departement']; ?>"><?php echo $donnees['dept']; ?></option>
Il faut aussi que dans ta table département tu aies deux colonnes: 1 pour l'id (id_dept) qui sera un numéro, et une pour le nom du département qui sera par exemple Seine-Saint-Denis (a moins que tu ne les stockes deja que par numéro genre 40 ou 93 et dans ce cas une table unique suffit.)

Ensuite il faut que dans ta table d'annonces tu aies un champ qui corresponde à l'id du département concerné.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 11h46   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bonjour

Si tu as un champ numéro de département dans ta table annonce, il suffit de faire une requête avec un Where.
Quelle est la structure de ta base ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 14h50   #6
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
ca fonctionne mais uniquement quand mon departement est un chiffre et pas quand c'est une suite de lettre, il n'y a pas une ruse avec les chaines?

encore un peu d'aide svp
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h29   #7
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Citation:
Envoyé par marcito
mon dieu ca fait 3 jours que j'arpente google et la je touche au but,
mais encore un petit probleme il me sort juste l'inverse de ma demande ce n'est pas du a cette ligne ?
l'inverse ? Tu veux dire tout sauf ce que tu veux ? Si c'est ça, ça vient probablement de la requête. Donc, question : quelle est la requête ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h31   #8
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
excuse moi non c'est bon pour l'invers maintenant je ne peux mettre que des chiffre dans mon champ departement?
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h35   #9
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Quelle est la nature du champ correspondant dans ta table ? C'est un int (ou quelque chose du genre) tu ne peux utiliser que des nombres.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h36   #10
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
non ce sont des vachar
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h40   #11
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Quel est le problème exact ? c'est-à-dire le message d'erreur (si message il y a), le bout de code concerné...
Histoire qu'on évite de tourner en rond
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h46   #12
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
voila mon message d'erreur et j'ai bien mis paris dans la liste des departement (avec le bon orthographe) et dans ma base de contact dans le champ annonce_dept


Erreur SQL !
SELECT * FROM annonces_entreprise WHERE annonce_dept = paris
Champ 'paris' inconnu dans where clause
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h50   #13
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
pour une chaine de caractères il faut mettre des simple quotes autour de la valeur
Code :
$sql = "SELECT * FROM annonces_entreprise WHERE annonce_dept ='$departement'";
EDIT: j'ajoute tout de suite le fait que tu risques d'avoir des ' dans ta valeur et que du coup il faut utiliser mysql_real_escape_string()
Code :
$sql = "SELECT * FROM annonces_entreprise WHERE annonce_dept ='". mysql_real_escape_string($departement)."'";
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h52   #14
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
merci
merci
merci
merci
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 15h54   #15
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
De rien
(ça fait plaisir de voir qu'il y a des gens reconnaissants )
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 16h09   #16
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
OOOO que oui si tu savais j'en reve la nuit de ce code, tu vas me permettre de rever d'autre chose.

vraiment merci

et puis vu mon niveau je vais surement avoir besoin de vous dans peu de temps...
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 16h21   #17
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
Par défaut encore moi

bon tout va bien mais lorsque ma base est vide une page blanche apparait tu n'aurais pas un bout de code (oui je sais ca fait feignant) pour completer le mien et que le vide ouvre sur une autre page?

voici mon code ou plutot notre code vu vos contributions

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<?php 
$departement = $_POST['departement'];  
$poste = $_POST['choixposte'];
$db = mysql_connect('localhost', 'root', ''); 
 
 
mysql_select_db('profimmo',$db); 
 
 
$sql = "SELECT * FROM annonces_entreprise WHERE annonce_dept ='$departement' AND annonce_poste ='$poste'";
 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
 
while($data = mysql_fetch_assoc($req)) 
    { 
      echo '<b>'.$data['nom_entreprise'].' '.$data['adresse_entreprise'].'</b> ('.$data['ville_entreprise'].')'; 
    } 
 
mysql_close(); 
?>
marcito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 16h29   #18
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Tu peux utiliser mysql_num_rows pour compter les résultats de la requête et faire une action en conséquence.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
$nb_res = mysql_num_rows($req);
if ($nb_res != 0) //si il ya des résultats
 {
 //on fait l'affichage
  while($data = mysql_fetch_assoc($req)) 
    { 
      echo '<b>'.$data['nom_entreprise'].' '.$data['adresse_entreprise'].'</b> ('.$data['ville_entreprise'].')'; 
    } 
 }
else //il n'y a pas de résultat
 {
  echo "Aucun resultat pour cette recherche";
 }
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 16h31   #19
Invité régulier
 
Inscription : juillet 2007
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 46
Points : 8
Points : 8
genial je te remercie
marcito 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 +2. Il est actuellement 03h37.


 
 
 
 
Partenaires

Hébergement Web