MENU DEROULANT php URGENT

Résolu/Fermé
Signaler
Messages postés
61
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
17 juin 2009
-
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
-
Bonjour, je souhaiterai faire un menu déroulant composés de secteur d'activités et une fois le secteur choisi on aurait toutes les entreprises du secteur qui s'afficheraient.
Tout cela en se connectant à ma base de données mysql bien entendu.

Alors mon soucis est que je n'arrive pas à créer une variable pour définir chaque option du menu déroulant

j'ai fait un fichier HTML :

<HTML><HEAD>
<TITLE>formulaire</title>

</HEAD>
<BODY>

<H1>ENTREPRISES INGENIERIE LINGUISTIQUE ET TAL</H1>

<FORM ACTION="requetetest.php" METHOD=POST>

<label>Selectionnez le secteur :
<select name="SECTEUR">

<option value="TRADUCTIONAUTOMATIQUE" name="secteur2">Traduction automatique</option>
<option value="Veille" name="secteur3">Veille</option>
<option value="ExtractionInformation" name="secteur3">Extraction d'Information</option>
<option value="Gestion électronique des documents" name="secteur3">Gestion des documents</option>
<option value="RECHERCHEINFORMATION" name="secteur">Recherche d'Information</option>
</select>
</label>


<P>
<INPUT TYPE=SUBMIT VALUE='Rechercher'>
</FORM>


qui es relié a un fichier php :
<?php



mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base');
mysql_select_db('ingenierielinguist') OR die('Erreur de sélection de la base');

$requete = mysql_query("SELECT * FROM entreprise WHERE SECTEUR LIKE '%' ") OR die('Erreur de la requête MySQL');

mysql_close();


while($resultat = mysql_fetch_object($requete))
{
echo '<table border=3><tr><th></th><th>ENTREPRISE : <i>'.$resultat->ENTREPRISES. '</i></th><th>SECTEUR : '.$resultat->SECTEUR.'</th><th>DESCRIPTIF : '.$resultat->DESCRIPTIFENTREPRISE.'</th></tr></table>';
}
?>

voila mon soucis pour résumer est d'avoir une variable qui me permettra d'obtenir les entreprises selon le secteur sélectionné.

ceci est dans le cadre d'un projet d'études et je bloque car je suis débutant en PHP

merci

14 réponses

Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
916
d'une façon générale, je te conseille les tutos de developpez.com (y en a pour tous les niveaux). et pour les fonctions de PHP mieux vaut se référer direct au manuel PHP (tu peux même charger une version locale, plus pratique).

j'ai codé une boucle d'extraction complète hier, je l'a retrouve pas…
-:o(

alors on r'commence !
<?php
$sql = "SELECT `ENTREPRISES`, `DESCRIPTIFENTREPRISE` FROM `entreprise` WHERE `secteur` = '$secteur';";
$result = mysql_query( $sql, $link );

if( $result ) //si la requête s'est bien exécutée (https://www.php.net/mysql_query
{
	if( mysql( $result ) == 0 ) //pas d'enregistrements
	{
		echo( "<p>Aucun enregistrement.</p>\n" );
	}
	else // quelque chose à afficher
	{
		while( $row = mysql_fetch_assoc( $result ) ) // on boucle en retournant un tableau associatif (https://www.php.net/mysql_fetch_assoc
		{
			echo( '<p>Entreprise&nbsp;:<br />'.$row['ENTREPRISES']."</p>\n" );
			echo( '<p>Description&nbsp;:<br />'.$row['DESCRIPTIFENTREPRISE']."</p>\n" );
		}
	}
}
else // erreur d'exécution
{
	echo( "<p>Erreur d'ex&eacute;cution de la requ&ecirc;te.</p>\n" );
}
?>

par contre tu devrais mettre tes noms de champs en minuscules.
3
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
916
salut,

• en premier, ici il n'y a rien d'urgent.

• en deuxième, les majuscules dans le titre, c'est pas juste pour être mieux vu.

• en troisième, le code se forme avec ce bouton.

• en quatrième, je ne comprends pas exactement ce que tu veux.

si tu enlèves l'attribut 'name' de tes <options> tu obtiendra la valeur de la sélection dans la variable '$_POST['SECTEUR']'.

enfin, tu devrais être plus rigoureux sur le code et passer à XHTML. tout en minuscule et des guillemets pour tous la attributs.
0
Messages postés
61
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
17 juin 2009
2
salut dalida,

encore désolé pour toutes mes questions mais j'apprends; je blaguais quand je parlai de respect en effet tu ma l'air très directive mais bon ...
;-)

alors j'ai effectué les corrections en ajoutant ma boucle while apres la requete.

en fait sa me donne rien

je suis perdu je ne sais quoi mettre a la suite de ta correction

c une boucle while avec echo?

merci encore de ta patience
0
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
916
salut,

est-ce que tu as modifié ta BDD ?
il faut qu'il ait un identifiant numérique.

si non, il faut modifier…

si oui, en premier tu vas ajouté
echo( $sql );

en dessous de la définition de ta requête.
comme ça tu vas récupérer la dite requête à l'écran et tu vas pouvoir la tester directement dans phpMyAdmin (ou équivalent) et savoir si ta base renvoie quelque chose.

tu me suis ?

si ta base renvoie quelque chose, montre nous le code que tu utilises pour extraire et afficher le données.

à plus

<hors sujet>
signature, profil
à priori, suis plutôt directif !
-;o)

[ Mathieu ]

</hors sujet>
0
Messages postés
61
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
17 juin 2009
2
salut mathieu,

alors j'ai fait les rectifications et la ça m'affiche la requete apres la selection.
ce qui est déjà bon signe . lol

pour le moment j'ai tenté de mettre une boucle while mais sa ne fonctionne pas.

je recherche la formule pour faire afficher les données apres la selection
je recapitule le code php :

<?php 



     mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base'); 
     mysql_select_db('ingenierielinguist') OR die('Erreur de sélection de la base'); 

    
$secteur = 1; // valeur par défaut
if( isset( $_POST['secteur'] ) && !empty( $_POST['secteur'] ) ) // si tu as une réponse du formulaire
{
	$secteur = (int) $_POST['secteur'];
}
$sql = "SELECT `ENTREPRISES`, `DESCRIPTIFENTREPRISE` FROM `entreprise` WHERE `secteur` = '$secteur';";
echo( $sql );

?> 


je pense que nous ne sommes pas loin du résultat final . merci pour ton aide
0
Messages postés
61
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
17 juin 2009
2
re salut
voila le code que j'ai testé
voila le message d'erreur que j'obtiens :
Warning: Wrong parameter count for mysql() in c:\program files\easyphp1-8\www\requetetest.php on line 19

Aucun enregistrement.


LA LIGNE 19 correspond à :
if( mysql($result) == 0 ) //pas d'enregistrements
<code><?php 




$link = mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base');
mysql_select_db('ingenierielinguist', $link) OR die('Erreur de sélection de la base');


$secteur = 1; // valeur par défaut
if( isset( $_POST['secteur'] ) && !empty( $_POST['secteur'] ) ) // si tu as une réponse du formulaire
{
$secteur = (int) $_POST['secteur'];
}
$sql = "SELECT `ENTREPRISES`, `DESCRIPTIFENTREPRISE` FROM `entreprise` WHERE `secteur` = '$secteur';";
$result = mysql_query($sql, $link);

if($result) //si la requête s'est bien exécutée (https://www.php.net/mysql_query
{
if( mysql($result) == 0 ) //pas d'enregistrements
{
echo( "<p>Aucun enregistrement.</p>\n" );
}
else // quelque chose à afficher
{
while( $row = mysql_fetch_assoc($result) ) // on boucle en retournant un tableau associatif (https://www.php.net/mysql_fetch_assoc
{
echo( '<p>Entreprise :<br />'.$row['entreprises']."</p>\n" );
echo( '<p>Description :<br />'.$row['descriptifentreprise']."</p>\n" );
}
}
}
else // erreur d'exécution
{
echo( "<p>Erreur d'exécution de la requête.</p>\n" );
}
?>
</code>
j'ai regardé pas mal de tutoriaux mais je t'avoue que c'étais un peu du chinois parfois

merci encore
0
Messages postés
1
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
21 octobre 2009

Bonjour,
voilà je suis une grande débutante en programation, j'ai fait un site avec des menus déroulants et je voudrais que par rapport à ce que les gens choissisent , ils ne s'affichent que leurs choix. je m'explique, s' ils choississent par département par ex, je voudrais que sur une autre page ne s'affiche que ce département.
le script des menus déroulants est en html, j'ai cru comprendre qu'il fallait créer un script php, mais je ne sais pas comment faire, je n'y connais rien et je ne sais pas si je dois créer une autre page de notepad ou si je peux ecrire ce script sur la mm page que mon html. du coup je ne peux pas terminer mon site et le mettre sur internet, je suis vraiment bloquée.
pourriez vous m'aider. merci d'avance
psychainfo.
0
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
916 >
Messages postés
1
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
21 octobre 2009

salut,

commence par :
https://sylvie-vauthier.developpez.com/tutoriels/php/grand-debutant/
et autres tutos du même site.
0
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
916
oups!…

ba vi, je teste pas tout !
(o_o)'

je voulais taper 'mysql_num_rows()'.
0
Messages postés
61
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
17 juin 2009
2
c vraiment pas évident le PHP
APRES avoir tapez ce code :
voici le message d'erreur :
Notice: Undefined index: entreprises in c:\program files\easyphp1-8\www\requetetest.php on line 27

Entreprise :

Notice: Undefined index: descriptifentreprise in c:\program files\easyphp1-8\www\requetetest.php on line 28

Description :


la ligne 27 et 28 sont celle liées a la fonction
echo( '<p>Entreprise&nbsp;:<br />'.$row['entreprises']."</p>\n" );
			echo( '<p>Description&nbsp;:<br />'.$row['descriptifentreprise']."</p>\n" ); 


<?php 



     $link = mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base'); 
     mysql_select_db('ingenierielinguist', $link) OR die('Erreur de sélection de la base'); 

    
$secteur = 1; // valeur par défaut
if( isset( $_POST['secteur'] ) && !empty( $_POST['secteur'] ) ) // si tu as une réponse du formulaire
{
	$secteur = (int) $_POST['secteur'];
}
$sql = "SELECT `ENTREPRISES`, `DESCRIPTIFENTREPRISE` FROM `entreprise` WHERE `secteur` = '$secteur';";
$result = mysql_query($sql, $link);

if($result) //si la requête s'est bien exécutée (https://www.php.net/mysql_query
{
	if( mysql_num_rows($result) == 0 ) //pas d'enregistrements
	{
		echo( "<p>Aucun enregistrement.</p>\n" );
	}
	else // quelque chose à afficher
	{
		while( $row = mysql_fetch_assoc($result) ) // on boucle en retournant un tableau associatif (https://www.php.net/mysql_fetch_assoc
		{
			echo( '<p>Entreprise&nbsp;:<br />'.$row['entreprises']."</p>\n" );
			echo( '<p>Description&nbsp;:<br />'.$row['descriptifentreprise']."</p>\n" );
		}
	}
}
else // erreur d'exécution
{
	echo( "<p>Erreur d'ex&eacute;cution de la requ&ecirc;te.</p>\n" );
}
?>
0
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
916
si tu n'as pas modifié le nom de tes champs (cf fin du <7>) il faut que tu mettes les deux en majuscules.
0
Messages postés
61
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
17 juin 2009
2
non j'ai modifié mes champs comme tu me l'as indiqué..
0
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
916
dans la boucle, mets juste un :
print_r( $row );

0
Messages postés
61
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
17 juin 2009
2
super sa fonctionne... il ne me reste que la mise en forme et la css!

voila ce que m'affiche le resultat d'une selection :

Array ( [ENTREPRISES] => ACETIC [DESCRIPTIFENTREPRISE] => Societé française créé en 1994, initialement tourné vers le conseil, Acetic s'est aujourd'hui spécialiste dans les logiciels d'analyse et de traitement de l'information.Nos principaux domaines d'intervention sont les suivants :développement de logiciels de traitement des langues naturelles,analyse de processus sociaux et de messages stratégiques,adaptation de méthodologies issues de la recherche à des problématiques d'entreprise,formation à l'analyse de contenu.Acetic, une start-up ? Tropes, une nouvelle technologie ? Pas vraiment ! La presse en parle depuis 1995, et nos logiciels s'appuient sur des fondations techniques validées par la communauté scientifique depuis plus d'une vingtaine d'années.Nous proposons de véritables outils sémantiques qui évoluent réguièrement. La linguistique et la sémantique, la recherche d'information et l'analyse de textes ne sont pas, pour nous, de simples arguments marketing : ils sont au coeur de notre métier depuis la première version de Tropes. )

comme tu vois on a "Array" qui s'affiche

que me conseil tu pour avoir une meilleure présentation des données?


merci encore c'est vraiment sympa je vais tenter de bien analyser le code

je recapitule :
<?php 



     $link = mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base'); 
     mysql_select_db('ingenierielinguist', $link) OR die('Erreur de sélection de la base'); 

    
$secteur = 1; // valeur par défaut
if( isset( $_POST['secteur'] ) && !empty( $_POST['secteur'] ) ) // si tu as une réponse du formulaire
{
	$secteur = (int) $_POST['secteur'];
}
$sql = "SELECT `ENTREPRISES`, `DESCRIPTIFENTREPRISE` FROM `entreprise` WHERE `secteur` = '$secteur';";
$result = mysql_query($sql, $link);

if($result) //si la requête s'est bien exécutée (https://www.php.net/mysql_query
{
	if( mysql_num_rows($result) == 0 ) //pas d'enregistrements
	{
		echo( "<p>Aucun enregistrement.</p>\n" );
	}
	else // quelque chose à afficher
	{
		while( $row = mysql_fetch_assoc($result) ) // on boucle en retournant un tableau associatif (https://www.php.net/mysql_fetch_assoc
		{
			print_r( $row );
		}
	}
}
else // erreur d'exécution
{
	echo( "<p>Erreur d'ex&eacute;cution de la requ&ecirc;te.</p>\n" );
}
?>
0
Messages postés
61
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
17 juin 2009
2
Merci de ta réponse Dalida , tu ne me respectes pas trop dis donc lol

primo : c'est urgent car je dois rendre une chose potable pour lundi
deuxio: je veux une chose simple à savoir un menu déroulant où la selection du secteur me donnera tous les noms des entreprises par secteur.

c'est sympa de ta part en tout cas d'avoir répondu

je vais tenter de travailler ta réponse et je te tiens informée.
-2
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
916
re,

pour ton problème, essaie ce que je t'ai dit.

mais tu devrais faire quelques modifs.

tes noms de secteurs sont compliqués et l'un d'entre aux comporte accents et espaces.
tu devrais plutôt utiliser un identifiant numérique, plus facile à sécuriser.
<select name="secteur">
	<option value="1">Traduction automatique</option>
	<option value="2">Veille</option>
	<option value="3">Extraction d'Information</option>
	<option value="4">Gestion des documents</option>
	<option value="5">Recherche d'Information</option>
</select> 

et tu le récupères comme ça :
<?php
$secteur = 1; // valeur par défaut
if( isset( $_POST['secteur'] ) && !empty( $_POST['secteur'] ) ) // si tu as une réponse du formulaire
{
	$secteur = (int) $_POST['secteur'];
}
$sql = "SELECT `champ1`, `champ2` FROM `entreprise` WHERE `secteur` = '$secteur';";
// etc... 
?>

<hors sujet>
où est-ce que tu vois un problème de respect ?
à force d'utiliser ce mot à tort et à travers, il ne veut plus rien dire.

ce forum est régi par une charte que tu es censé avoir lu et où il y a entre un laïus sur l'urgence des problèmes soumis et un autre sur la présentation des messages.

tu n'es pas dans les clous, je te le dis. nous participons tous à la bonne tenue des forums, ce qui participe à leur qualité.
maintenant, si j'ai un ton un peu sec il ne faut pas m'en vouloir, je ne sais pas faire autrement.
-:oþ

je te l'ai dit, point final. j'espère que tu en tiendras compte la prochaine fois et ça s'arrête là. pas de question de respect dans tout cela, hormis celui des règles du forum. et ce n'est pas pour faire mon rabas-joie (pourtant j'aime ça !) mais simplement pour que ce forum reste viable et agréable.
</hors sujet>
-2