Messages recommandés

Posté(e) (modifié)

salut a tous, je debute en php et je voudrais creer une page sur laquelle je veux afficher un champs special de ma base de données mysql.

J'ai une liste de services, et une liste d'utilisateurs, j'ai une id_service identique a u service_id sur la table utilisateur. Je souhaite, aprés avoir séléctionné un service restreindre le nombre d'utilisateur a séléctionner en n'affichant que les utilisateur de ce service dans la seconde liste déroulante.

voici mon code, dites moi quelle est mon erreur.

<body>

<?php

$connexion = mysql_connect("localhost","root","");

mysql_select_db("parc",$connexion);

$select = 'select nom_service from services';

$result = mysql_query($select,$connexion) or die ('Erreur : '.mysql_error() );

$select1 = 'select nom_utilisateur from nom_utilisateur';

$result1 = mysql_query($select1,$connexion) or die ('Erreur : '.mysql_error() );

?>

<body>

<br><br>

<form method="post" name="formulaire">

<table width="100%" border="0">

<tr>

<td width="28%"><div align="right"><strong>Nom du matériel :</strong></div></td>

<td width="28%"><strong><strong>

<select name='service' onchange="<?php echo "top.location.href='test.php?service='"; ?>+this.options[selectedIndex].value">

<?php

$service=$_GET["service"];

$sql= mysql_query('select id_service from services where nom_service="$service"');

$id= mysql_fetch_row($sql);

echo "salut".$id[0];

echo '<option value="'.$service.'">'.$service.'</option>';

while ($row= mysql_fetch_array($result, MYSQL_ASSOC)){

$var= $row["nom_service"];

echo '<option value="'.$var.'">'.$var.'</option>';

}

?>

</select>

</strong></strong></td>

<td width="19%"> </td>

<td width="20%"></td>

</tr>

<tr>

<td><div align="right"><strong>Type de matériel : </strong></div></td>

<td><strong>

<select name='utilisateur'>

<?php

echo "salut".$id;

$usr=$_GET["utilisateur"];

$selection = 'select nom_utilisateur from nom_utilisateur where service_id=$id';

$resultat = mysql_query($selection,$connexion) or die ('Erreur : '.mysql_error() );

echo '<option value="'.$usr.'">'.$usr.'</option>';

while ($champ= mysql_fetch_array($resultat, MYSQL_ASSOC))

{$variable= $champ["nom_utilisateur"];

echo '<option value="'.$variable.'">'.$variable.'</option>';

}

?>

</select>

</body>

merci d'avance

Modifié par teckboy
Posté(e)

Onchange est du Html voir javascript pour certain mais en aucun cas en PHP, je peut t'aider mais va faloir etre plus clair car je comprend rien a quel est ton pb, tu a une erreur d'afficher ?!

Posté(e)

Salut à toi,

voici ma modeste contribution à tout probleme :)

Bon si j’ai bien compris ton problème, tu disposes d’une base de données contenant d’un coté une liste de services et de l’autre une liste d’utilisateurs. Chaque utilisateur pouvant avoir un ou n services associés.

Bon commençons d’abord par analyser ton code afin de voir les différents probleme que j’y vois :

1. tu mélanges la partie PHP (requetes et initialisation des variables ) et la partie purement IHM (page HTML et formulaire)

2. tu créés un formulaire (en mode POST) et tu initialises une variables $service avec la valeur passée en GET. Cela n’est pas normal. En outre, au départ $_GET[«service »] n’existe pas, tu vas donc avoir une erreur UNDIFINED INDEX et une erreur sql de ce fait.

3. De plus, ton formulaire ne sert à rien ici puisque tu forces l’initialisation de $_GET[« service »] par une redirection sur l’action ONCHANGE.

Perso, je ferai un truc plutôt dans ce genre là :

<?php

//------------------------------------------------------------------------------

// INITIALISATION DE LA CONNEXION

//------------------------------------------------------------------------------

$connexion = mysql_connect("localhost","root","");

mysql_select_db("parc",$connexion);

//------------------------------------------------------------------------------

// ACTIONS - SI UN CHOIX EST EFFECTUE DANS LA LISTE DES SERVICES

//------------------------------------------------------------------------------

// si un id_service est passé en POST et s'il est numeric alors on fait une requete dans la BDD

// afin de trouver le nom ou les nom des utilisateurs associés au service

if(isset($_POST["id_service"]) ans is_numeric($_POST["id_service"]))

{

// tableau associatif regroupant le ou les utilisateurs associé à un service

// $tServices[id_service] = nom_service

$tUtilisateurs = array();

$i = 0;

$query = " SELECT nom_utilisateur from nom_utilisateur where service_id = '". $_POST["id_service"] ."'" ;

$result= mysql_query($query);

while ($row = mysql_fetch_array($result))

{

$tUtilisateurs[$i] = $row["nom_utilisateur"] ;

$i++;

}

}

//------------------------------------------------------------------------------

// INITIALISATION DES VARIABLES UTILISEES

//------------------------------------------------------------------------------

// tableau associatif regroupant les différents services disponibles

// $tServices[id_service] = nom_service

$tServices = array();

$query = " SELECT id_service, nom_service FROM services" ;

$result= mysql_query($query);

while ($row = mysql_fetch_array($result))

{

$tServices[$row["id_service"]] = $row["nom_service"] ;

}

?>

<!-- UNE FOIS LA PARTIE PHP REALISEE, ON S'OCCUPE MAINTENANT DE LA PARTIE PUREMENT HTML -->

<body>

<FORM method="post" name="formulaire" action="?">

<table width="100%" border="0">

<tr>

<td align="right">

Nom du matériel :

</td>

<td>

<SELECT name='service' onchange="document.all.formulaire.submit()">

<?php

// ON PARCOURS LE TABLEAU ASSOCIATIF $tServices ET ON CONSTRUIT LE FORMULAIRE

// SI LE TABLEAU $tServices EXISTE ET N'EST PAS VIDE

if( isset($tServices) and sizeof($tServices) )

{

foreach( $tServices as $id_service => $nom_service )

{

?>

<OPTION VALUE="<?=$id_service?>"

<?php if(isset($POST["id_service"]) and $POST["id_service"] == $id_service ) { echo "SELECTED = \"selected\" " ; } ?>

<?=$nom_service?>

</OPTION>

<?php

}

}

?>

</FORM>

<?php

// ON AFFICHE LES UTILISATEURS ASSOCIES S'IL Y EN A

if( isset($tUtilisateurs) and sizeof($tUtilisateurs) )

{

foreach( $tUtilisateurs as $nom_utilisateur )

{

echo "Salut " . $nom_utilisateur . "<br/>" ;

}

?>

</body>

Posté(e)

Voilà ce que je ferai .

Cela est log car j'ai pas mal commenté les sources.

Par contre le n'est pas testé, j'ai pas eu le temps et je ne code pas tout a fait de cette façon habituellement.

J'utilise une programmation plus orientée classe / objet et je separe complétement traitement et affichage.

++ et bon courage.

le PHP c'est extra :)

Posté(e)

Voila si tes un débutant et que ta besoin d'aide contacte moi en mp jte donnerai des lien qui pourron t'aider

Posté(e)

merci a tous, je suis entrain d'essayer le code de sheridan.

Ce que je veux, c'est une premiere liste déroulante dans laquelle j'affiche tous les noms de service, ensuite lorsque je selectionne mon service, dans la deuxieme liste deroulante, je n'obtient que les utilisateur de ce service.

Une fois cet utilisateur selectionné, je l'efface.

Tout cela en sachant que dans ma table service j'ai un champs id_service et que dans la table utilisateur j'ai un champ service_id qui reprend le champ id_service.

je n'arrive pas a faire fonctionner ton code sheridan, il ne remplit pas la liste service...j'ai la tete qui va exploser avec cette fonction!!!! :fou:

Posté(e)

lo,

le seul moyen propre ,sans recharger la propre en premier plan, de remplir dynamiquement ta seconde liste en fonction du choix effectué dans la premier est d'utiliser XMLHTTPREQUEST (AJAX).

Bon sinon concernant mon code (que je n'ai pas testé), regardes dejà si le tableau $tServices est rempli.

Pour cela tu fais:

<?php

echo "<PRE>";

print_r($tServices);

echo "</PRE>";

?>

Si tu n'a rien , c'est que la requete sql n'est pas bonne.

++

Posté(e)

bizarre ton histoire.

Même en faisant un simple:

<?php

echo "bonjour" ;

?>

dans une page php, tu n'as aucun résultat.

là c'est bien étrange ton histoire, est ce que au moins ta confi php (apache / mysql ) est fonctionnelle et que ta page est bien parser par php ?

elle ressemble à quoi ta page de test?

Je t'invite à faire un tour sur les différents site francophone consacrés à PHP, il y a plein de tutos.

++

Posté(e)

bah de rien,

mais un conseil avant de jouer avec AJAX et le XMLHTTPREQUEST, apprends les bases du HTML et de PHP.

Car sinon tu vas avoir beaucoup de difficultés à appréhender certes notions de PHP.

Bon courage en tout cas.

++

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant