Php problème de menu déroulant(encore une foi

Fermé
tata82 Messages postés 8 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 27 avril 2012 - 26 avril 2012 à 16:36
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 - 27 avril 2012 à 16:59
Bonjour,

Je poste pour la première fois sur ce site ou d'habitude je trouve mes réponses souvent ormi la , impossible de savoir d'où viens l'erreure.

J'aimerais créer un menu déroulant qui afficherais les cartes de mes serveurs en fonction des serveurs,
le premier menu étant la sélection d'un serveur, je suis débutant en php ( 2 semaine que je m'y penche dessus , et j'ai essayez de monter mon programme comme sa, or il m'est impossible d'afficher ma deuxième liste :'( pouvez vous m'aidez?

voici mon code:

le fichier est en 4 parties :

l'index:

<html>
<table id='formulaire'>
<tr id='select_serveur'>
<td class='title'><b>Selectionnez un serveur :</b></td><td><?php include('select_serveur.php')?></td>
</tr>
<tr id='select_carte'>
</tr>
</table>
</html>

le fichier select_serveur:


<select id='select_serveur' name='select_serveur' onchange="ajax(this)">

<option value='serveur_select'>Choisir un Serveur</option>
<?php
mysql_connect("localhost", "root", "") or die("Impossible de se connecter : " . mysql_error());
mysql_select_db("tutu") or die("Impossible de se connecter à la base de données : " . mysql_error());

$query ="Select DISTINCT NOM_SERVEUR from SERVEUR ORDER BY NOM_SERVEUR";
$rq = mysql_query($query) or die(mysql_error());

while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
{
$serveur = $row["NOM_SERVEUR"];
//$serveur_select = $row["WWNAME"];
echo "<option value='$serveur'>$serveur</option>";
}
mysql_close();
?>
</select>
le fichier select_carte :

<select id='select_carte' name='select_carte'>
<option value='slect_carte'>Choisir une carte</option>
<?php
mysql_connect("localhost", "root", "") or die("Impossible de se connecter : " . mysql_error());
mysql_select_db("tutu") or die("Impossible de se connecter à la base de données : " . mysql_error());

$var=$_POST['serveur_select'];
echo($var);

$query = "SELECT CARTE_SERVEUR FROM SERVEUR WHERE WWNAME='$var'";
$rq = mysql_query($query) or die(mysql_error());
while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
{
$carte = $row["CARTE_SERVEUR"];
echo "<option value='$carte'>$carte</option>";
}
mysql_close();
?>
</select>

et le fichier ajax.js:


function ajax(strthis)
{
var param = strthis;//Je récupère un ID d'habitude et non une string. Si ça ne fonctionne pas, enlève le .value
var selected_serveur = document.getElementById("select_serveur").options[document.getElementById("select_serveur").selectedIndex].value;
$.ajax
(
{
type: "POST",
url: "select_carte.php",
data: "var="+param,
success:
function(msg)
{
$("#select_carte").append("<td class='title'><b>Selectionnez un port :</b></td><td>"+ msg +"</td>");
}
}
if(selected_serveur=="void_carte") $("#select_carte").hide();//Si l'utilisateur n'a pas encore fait de choix dans le "select_affaire" alors "select_localisation" est caché.
else $("#select_carte").show();//Sinon on l'affiche.
);
}


voila je n'y arrive vraiment pas pouvez vous m'aider? :'( :'(


A voir également:

4 réponses

Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
26 avril 2012 à 16:46
document.getElementById("select_serveur").selectedIndex
T es sur que c a fonctionne comme this en script ...
1
tata82 Messages postés 8 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 27 avril 2012
26 avril 2012 à 16:50
et bien justement cette partie est celle qui me pose le plus de problème j'aimerais savoir la syntaxe car mes différente recherche mon ammener a cette phrase.. :/
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
26 avril 2012 à 17:00
il me semble que tu ne peux utiliser this que dans les evenement html ...
Y a une autre astuce il faut que je la retrouve
Ps dans ton code initiale tu as omis le code de traitement des cartes ...
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
26 avril 2012 à 17:04
j ai passé un tableau avec les valeur des select
c est a dire que l evenement onchange du select initialise le tableau
"<option value='$carte'>$carte onchange="col[2]=this.options[this.selectedIndex].value;"</option>";
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
26 avril 2012 à 17:04
J aidonc un tableau avec mes indice ou valeur sur tout mes selects ...
0
tata82 Messages postés 8 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 27 avril 2012
26 avril 2012 à 17:14
oui je n'avais pas vus le vrais code est :
<html>
<table id='formulaire'>
<tr id='select_serveur'>
<td class='title'><b>Selectionnez un serveur :</b></td><td><?php include('select_serveur.php')?></td>
<td class='title'><b>Selectionnez un port :</b></td><td><?php include('select_carte.php')?></td>
</tr>
<tr id='select_carte'>
</tr>
</table>
</html>

pour ce que tu m'a dit je n'arrive pas a l'appliquer (suis je si nul? :/ )
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
26 avril 2012 à 17:33
il faut que tu rajoutes ton tableau dans un script avant tes appels...
<SCRIPT language="javascript">
var col=new Array("","","","");
</SCRIPT>
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
26 avril 2012 à 17:13
Bonjour,

tu mélanges du jquery et du javascript classique.

Et à priori, tu n'as pas les sources jquery dans ton projet.
0
tata82 Messages postés 8 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 27 avril 2012
26 avril 2012 à 17:22
Pourrais tu m'expliquer ce que tu entend par la ( je suis plutôt débutant)
0
tata82 Messages postés 8 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 27 avril 2012
26 avril 2012 à 17:28
meme très débutant *
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
26 avril 2012 à 17:28
Dans ton fichier ajax.js

Il y a du code qui correspond à du jquery, je suppose que tu as récupéré les sources et tu essayes de l'adapter à ton code

mais çà ne risque pas de marcher, puisque tu n'as pas les sources jquery dans ton projet

sinon, il y a des grosses lacunes à tout point de vue

HTML, il manque quasiment toute les balises requises.

Javascript sans pratique, c'est vraiment pas évident.

BDD, je pense que ta base de donné"es n'est pas correcte

serveur et carte devrait être dans 2 tables différentes
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
Modifié par Fallentree le 26/04/2012 à 17:31
pas sur ...
Ca lui evite de trimbaler ses indices
C est sur que c est pas le schema minimun ....
0
tata82 Messages postés 8 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 27 avril 2012
27 avril 2012 à 08:56
non car je possède 3 tables : SERVEUR SWITCH et BAIe, et je doit juste arriver a faire correspondre leur WWNAME qui est partout présent comme champ., quand au javascript je doit avouer que oui j'ia de grosse lacune d'ou mon post sur le forum.
0
tata82 Messages postés 8 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 27 avril 2012
27 avril 2012 à 12:54
j'ai changer mon type de programme pour un qui n'utilise pas javascript : le problème est que je ne récupère pas mon deuxième paramètre par ma methode $_POST :/

ma fonction qui génère mon graphe est bonne mais pas mon envoie pouvez vous m'aidez?

mon code :

<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "tutu";
/* On récupère si elle existe la valeur du serveur envoyée par le formulaire */
$idr = isset($_POST['serveur'])?$_POST['serveur']:null;
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un serveur et une carte </title>
<meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" />
</head>


<h3>SELECTIONNEZ UN SERVEUR</h3>
<?php

$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$query ="Select DISTINCT NOM_SERVEUR from SERVEUR ORDER BY NOM_SERVEUR";
$rech_serveur = mysql_query($query);
$serveur = array();
$nb_serveur = 0;
if($rech_serveur != false)
{
while($ligne = mysql_fetch_assoc($rech_serveur))
{
array_push($serveur, $ligne['NOM_SERVEUR']);
/* On incrémente de compteur */
$nb_serveur++;
}
}
?>

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="ch_carte_serveur">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez un serveur</legend>
<select name="serveur" id="serveur" onchange="document.forms['ch_carte_serveur'].submit();">
<option value="-1">- - - Choisissez un serveur - - -</option>
<?php
for($i = 0; $i < $nb_serveur; $i++)
{
?>
<option value="<?php echo($serveur[$i]); ?>"<?php echo((isset($idr) && $idr == $serveur[$i])?" selected=\"selected\"":null); ?>><?php echo($serveur[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_serveur);
/* On commence par vérifier si on a envoyé un numéro de serveur et le cas échéant s'il est différent de -1 */
if(isset($idr) && $idr != -1)
{
$sql2 = "SELECT 'CARTE_SERVEUR' FROM 'SERVEUR' WHERE 'NOM_SERVEUR' = '".$idr."' ORDER BY 'CARTE_SERVEUR'";
if($connexion != false)
{
$rech_carte_serveur = mysql_query($sql2, $connexion);
/* Un petit compteur pour les cartes */
$nb_carte_serveur = 0;
/* On crée deux tableaux pour les noms les cartes */
$nom_carte_serveur = array();
/* On va mettre le nom des cartes un tableau */
while($ligne_carte_serveur = mysql_fetch_assoc($rech_carte_serveur))
{
array_push($nom_carte_serveur, $ligne_carte_serveur['CARTE_SERVEUR']);
$nb_carte_serveur++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<legend>Sélectionnez une carte </legend>
<select name="carte_serveur" id="carte_serveur">
<option value="-1">- - - Choisissez une carte - - -</option>
<?php
for($d = 0; $d<$nb_carte_serveur; $d++)
{
?>
<option value="<?php echo($nom_carte_serveur[$d]); ?>"<?php echo((isset($nom_carte_serveur) && $nom_carte_serveur == $nom_carte_serveur[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_carte_serveur[$d].""); ?></option>
<?php
}
?>
</select>
<?php
}
mysql_free_result($rech_carte_serveur);
}
?>
<br /><input type="submit" name="ok" id="ok" value="Visualiser connection"/>
</fieldset>
</form>
<?phpa
mysql_close($connexion);
}
else
{
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
<?php
if(isset($_POST["ok"]) && isset($_POST["carte_serveur"]) && $_POST["serveur"] != "")
{
$Port_selectionnee = $_POST["carte_serveur"];
$serveur_selectionnee = $_POST["serveur"];


include("graphe.php");



?>
<p>Vous avez sélectionné le serveur <?php echo($serveur_selectionnee); ?> avec la carte <?php echo($Port_selectionnee); ?></p>
<?php
}
?>
</body>
</html>

Voila mon soucis que je ne comprend pas c'est que sur cette page je récupère bien les valeur mais sur graphe.php il ne varie pas selon la variable carte_serveur alors que elle varie selon serveur :/

j'ai un autre fichier test qui lui est simple et qui fais fonctionnez ma page graphe.php avec ce code la :

<html><body>


<p>
Selectionnez un serveur avec un port:</p>

<form method="post" action="graphe.php">

Serveur : <input type="text" name="serveur" size="15"><br>
Port : <input type="text" name="carte_serveur" size="15" value="0"><br>

<input type="submit" value="OK">
</form></body></html>

donc voila merci par avance de vos reponses!!

cordialement
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
27 avril 2012 à 16:59
Sans ton fichier graph.php ca va etre dur de comprendre pourquoi les vaiable $_Post sont tronquées sans doute a cause de la requete faite au prealable ...

Cad que tu cherches associées des cartes a des serveurs puis des ports, sans savoir si les sont presentes physiquement ... (l analyse minimale)

Meme si cela n est pas desire, en effet des statstique sur des cartes pourquoi pas...

Bref... sans code c est dur ...
0