Vous n'êtes pas identifié(e).
Bonjour,
Suite à mon Projet BTS, je bloque à un endroit, et je suis tombé sur ce forum ou j'ai vu que vous etiez actif, sympatique et que vous avez l'air de vous y connaitre.
J'ai vu un sujet semblable, j'ai essayé de modifié ce qu'il y était dis, mais rien n'y fais ca bouge pas, donc voila mon souci :
Je dois parametrer un Proxy etc Creer des interfaces utilisateurs, administrateur etc et parmi ces interface j'en ai une qui me permet de reperer un eleve grace a son Adresse Mac que l'administrateur a rentré dans sa base de donnée MySQL.
J'ai ceci qui fonctionne trés bien : ( Ici l'administrateur choisie une adresse mac dans la liste déroulante .. c'est aprés le soucie)
<td>
<center>
Quel classe choisissez vous de contrôler ?
BTS IRIS <input type="radio" name="affiche" value="oui" onClick="afficher();"/>
BTS IG <input type="radio" name="affiche" value="non" onClick="cacher();"/>
</center>
</TABLE>
<hr width =30% size =3></hr>
<div id="champ_cacheiris">
<center>
<TABLE border=outset width=600 bgcolor="grey">
<td colspan=4 bgcolor="white">
<h3><center>Vous avez choisi de gérer les BTS IRIS</center></h3></td>
<tr>
<td><center>Choisissez l adresse MAC d un Poste :
<form method="POST">
<select name="mon_champ" onchange="change(this.options[this.selectedIndex].innerHTML)">
<?
$result = mysql_query("SELECT Adresse_Mac FROM Info_PC_IRIS ORDER BY Adresse_Mac ASC;");
while ( $r = mysql_fetch_array( $result ))
{
?>
<OPTION VALUE="1">
<?
echo $r['Adresse_Mac'];
}
?>
</select>
<input type="hidden" name="ma_valeur" id="new_valeur" />
<input type="submit" value="Ok"/>
</form>
</TABLE></TABLE></div>
Et voici la partie ou je stagne .. : (il ne rentre pas dans la boucle While .. j'ai testé des mysql_fetch_object .. _result .. etc tout ce qu'ai j'ai lu sur l'autre topic, mais rien .. cela ne m'affiche pas le Nom de la personne.. Si je remplace $ma_valeur par la valeur de l'adresse mac : 00:1c:c0:f2:98:3a (par exemple) qui es situé dans ma base de donné, la il m'affiche bien le Nom .. mais des que je remplace l'adresse Mac par la variable .. je n'ai rien et je ne vois pas quoi faire, donc je vien vous demander de l'aide.)
echo "<br> AVANT AVANT WHILE<br>";
$ChoixAffichage=mysql_query("SELECT Nom FROM eleve_IRIS, Info_PC_IRIS WHERE eleve_IRIS.Num_Post = Info_PC_IRIS.N_Post_IRIS AND Adresse_Mac IN ('".$ma_valeur."');");
echo $ChoixAffichage;
echo "<br>AVANT WHILE<br>";
while ($LectureAffichage=mysql_fetch_array($ChoixAffichage))
{
echo "<br>AVANT<br>";
echo "<table border=outset><td>";
echo $LectureAffichage[Nom];
echo "<br>APRES</td></table><br>";
}
echo "<br>APRES WHILE<br>";
?>
</TABLE></TABLE></div>
<center>
<input type="button" onclick="history.go(-1)" value="Choisir une autre Adresse Mac"></center>
<?
}
mysql_close();
?>
</body>
</html>
Voila je suis libre a tout idée pour améliorer et surtout resoudre le soucie pour que je puisse avancer =X
Merci bien
Hors ligne
Saluton,
La première chose à retenir, c'est d'oublier les short tags <? ?>? les balise php c'est <?php ?>
Ensuite, depuis 18 ans (norme SQL92) l'écriture des jointures est normalisée et pourquoi fatigué MySQL avec un IN alors qu'un égal ferait l'affaire.
La requête devrait donc être de la forme :
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci pour ta réponse rapide
Donc jpour la norme, ma binome me soutenait qu'on utilisait IN a la place de ="" .. Je vais pouvoir la charier, merci xD
Donc j'avais comme meme essayé avant avec le ="" et le souci est le meme :
echo "<br> AVANT AVANT WHILE<br>";
$ChoixAffichage=mysql_query("SELECT Nom FROM eleve_IRIS INNER JOIN Info_PC_IRIS ON eleve_IRIS.Num_Post = Info_PC_IRIS.N_Post_IRIS WHERE Adresse_Mac ='.$ma_valeur.'");
echo $ChoixAffichage;
echo "<br>AVANT WHILE<br>";
while ($LectureAffichage=mysql_fetch_array($ChoixAffichage))
{
echo "<br>AVANT<br>";
echo "<table border=outset><td>";
echo $LectureAffichage[Nom];
echo "<br>APRES</td></table><br>";
}
echo "<br>APRES WHILE<br>";
?>
</TABLE></TABLE></div>
<center>
<input type="button" onclick="history.go(-1)" value="Choisir une autre Adresse Mac"></center>
<?php
}
mysql_close();
?>
J'obtient :
Affichage des info a propos de 00:1c:c0:f2:98:3a
AVANT AVANT WHILE
Resource id #3
AVANT WHILE
APRES WHILE
Si je remplace Adresse_Mac ='.$ma_valeur.' par 00:1c:c0:f2:98:3a j'obtient ca :
Affichage des info a propos de 00:1c:c0:f2:98:3a
AVANT AVANT WHILE
Resource id #3
AVANT WHILE
AVANT
Spriet
APRES
APRES WHILE
Dernière modification par ElevedIRIS (04-02-2010 15:48:52)
Hors ligne
Le message
Resource id #
signale que tu essayes d'utiliser un pointeur de résultat au lieu de parcourir ce résultat avec une fonction de la famille mysql_fetch_
D'autre part, les index string des tableaux associatifs doivent être mis entre quotes $LectureAffichage['Nom']
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pour le $LectureAffichage['Nom'] cela change vremment quelque chose ? Car avec ou sans cela ne change rien, mais je prefere suivre tes conseils et les mettre ^^
Pour ce qui es des mysql_fetch, j'ai suivi le cours sur :
http://www.php.net/manual/fr/function.m … -assoc.php
Je trouve ce site trés bien, j'avais testé tout les types qu'ils me proposaient, mais je pense que celui qui me convenait le mieux était :
mysql_fetch_assoc($ChoixAffichage) ou mysql_fetch_assoc($ChoixAffichage, MYSQL_ASSOC) je suis pas sur
Mais dans tout les cas cela ne fonctionne pas =/
Cela fonction que si je met par exemple:
Je créer une Adresse_Mac dans la base de donnée qui à pour valeur : '1:5 ' .
$ChoixAffichage=mysql_query("SELECT Nom FROM eleve_IRIS INNER JOIN Info_PC_IRIS ON eleve_IRIS.Num_Post = Info_PC_IRIS.N_Post_IRIS WHERE Adresse_Mac ='$ma_valeur'");
echo $ChoixAffichage;
echo "<br>AVANT WHILE<br>";
while ($LectureAffichage=mysql_fetch_assoc($ChoixAffichage))
{
echo "<br>AVANT<br>";
echo "<table border=outset><td>";
echo $LectureAffichage['Nom'];
echo "<br>APRES</td></table><br>";
}
echo "<br>APRES WHILE<br>";
?>
La ca fonctionne .. mais uniquement je réafecte une valeur à ma variable avant de l'utiliser dans :
Enfin je sais pas trop comment expliquer ceci :X
Hors ligne
Peux-tu remplacer echo $LectureAffichage['Nom'];
par
var_dump($LectureAffichage);
et me dire ce que tu obyiens.
Pour l'ecapsulation des valeurs littérales d'index avec des quotes ou des guillemets, prends-en la bonne habitude dès maintenant, car le jour ou PHP décidera d'être moins laxiste (cf ce qui s'est passé le jour ou register_globals est passé à off par défaut), tes scripts ne poseront pas de problème.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je testerais ca des que j'aurais accé à la base de donné du lycée, c'est à dire Lundi, mais encore merci pour vos réponses
J'espere sincérement que a va marcher, et merci pour les conseils ^^
Hors ligne
Donc j'ai remplacé
echo $LectureAffichage['Nom']; par var_dump($LectureAffichage);
Pour qu'on voye la difference, j'ai supprimé le while et j'ai mis :
$ChoixAffichage=mysql_query("SELECT Nom FROM eleve_IRIS INNER JOIN Info_PC_IRIS ON eleve_IRIS.Num_Post = Info_PC_IRIS.N_Post_IRIS WHERE Adresse_Mac ='$ma_valeur'");
echo $ChoixAffichage;
echo "<br>AVANT WHILE<br>";
$LectureAffichage=mysql_fetch_assoc($ChoixAffichage);
echo "<br>AVANT<br>";
echo "<table border=outset><td>";
echo $LectureAffichage['Nom'];
var_dump($LectureAffichage);
echo "<br>APRES</td></table><br>";
echo "<br>APRES WHILE<br>";
?>
Et voici ce qu'il me met :
----------------------------------
Affichage des info a propos de 00:1c:c0:f2:98:3a Resource id #3
AVANT WHILE
AVANT
bool(false)
APRES
APRES WHILE
----------------------------------
Mais ca ne fonctionne toujours pas ='(
Hors ligne
bool(false) signifie que le mysql_fetch_assoc() a fini de lire la ressource de résultat qui devait donc être vide.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
C'est ca le souci, j'arrive a lire la valeur que l'on selectionne dans la liste, je l'affecte a une variable et j'arrive à l'afficher .., mais il ne fait que l'afficher .. il ne "garde" pas cette valeur si je veux l'utiliser.
Et franchement je vois pas quoi faire .. J'ai essayé de réafecter cette variable a une autre variable, mais c'est le meme souci.
Ca fonction que si je met :
$ma_variable=00:55:etc..;
Que si je la réafecte en gros =/
Et j'ai besoin de ca, puisque en fonction de l'adresse mac que j'aurais rentré dans la base de donnée (D'ailleur je vais recreer un topic pour ca car je dois faire en sorte que je puisse recevoir toute les adresse mac des pc du reseaux local afin de ne pas faire un ifconfig sur chaque post pour rentrer tout a la main).
Enfin si vous pouvez encore m'aider .. car la je suis un peu perdu x)
Hors ligne
Je ne comprends strictement rien à ton dernier message.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Ok je recommence désolé.
J'ai ceci :
$ChoixAffichage=mysql_query("SELECT Nom FROM eleve_IRIS INNER JOIN Info_PC_IRIS ON eleve_IRIS.Num_Post = Info_PC_IRIS.N_Post_IRIS WHERE Adresse_Mac ='$ma_valeur'");
echo $ChoixAffichage;
echo "<br>AVANT WHILE<br>";
$LectureAffichage=mysql_fetch_assoc($ChoixAffichage);
echo "<br>AVANT<br>";
echo "<table border=outset><td>";
echo $LectureAffichage['Nom'];
var_dump($LectureAffichage);
echo "<br>APRES</td></table><br>";
echo "<br>APRES WHILE<br>";
?>
</TABLE></TABLE></div>
<center>
<input type="button" onclick="history.go(-1)" value="Choisir une autre Adresse Mac"></center>
La ca ne fonctionne pas, comme si $ma_valeur ne contient rien, comme si elle n'était pas déclarée en faites.
Et si je rajoute ceci :
$ma_valeur=00:1c:c0:f2:98:3a;
Avant cette ligne :
$ChoixAffichage=mysql_query("SELECT Nom FROM eleve_IRIS INNER JOIN Info_PC_IRIS ON eleve_IRIS.Num_Post = Info_PC_IRIS.N_Post_IRIS WHERE Adresse_Mac ='$ma_valeur'");
Dans ce cas, il m'affichera bien le Nom correspondant à cette Adresse Mac.
J'en conclue que je ne peut qu'afficher $ma_valeur, mais je ne peut pas l'utiliser, a moin de la redéclarer juste avant. (Je me trompe peut etre sur toute la ligne et je sais pas si je suis clair =/)
-----------------------
Mon autre souci, c'est que je suis responsable de mon reseaux local, et je dois savoir toute les adresses mac de chaque post qui utilisent mon reseaux, pour savoir qui es connectés dessus en temps voulu.
Et cela doit fonctionner sur Windows, Unix etc.
Donc je cherche un script qui permet de le faire. On ma conseillé Soft Perfect Network Scanner (Fonctionne que sur Windows je crois),jdk/jre < 1.6 (En java je crois) etc, je voulais voir ce que vous me conseillez.
(Je sais pas si je dois refaire un post pour ca, ou si je peut poster sur mon post)
Dernière modification par ElevedIRIS (08-02-2010 16:27:19)
Hors ligne
La ca ne fonctionne pas, comme si $ma_valeur ne contient rien, comme si elle n'était pas déclarée en faites.
Tu parles d'or.
Quand une valeur est-elle affectée à cette variable dans le script ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Justement elle n'est pas déclarée puisque je ne fais qu'afficher la valeur qu'on à séléctionné dans ma liste déroulante.
Le fait est que je ne peut pas la déclarer puisque sa valeur change en fonction du choix qu'on va selectionner dans la liste déroulante.
J'ai essayé de faire un truc du genre :
$CaseTest=$ma_valeur;
Puis d'utiliser $CaseTest dans cette ligne :
$ChoixAffichage=mysql_query("SELECT Nom FROM eleve_IRIS INNER JOIN Info_PC_IRIS ON eleve_IRIS.Num_Post = Info_PC_IRIS.N_Post_IRIS WHERE Adresse_Mac ='$CaseTest'")
Mais cela ne change rien du tout
Donc il faudrait que je déclarer ma variable aprés le choix de la selection .. Hum je vois pas comment faire :X
Hors ligne
Et comment veux-tu que PHP devine cette valeur ?
L'époque du register_global étant heureusement révolue, il te faut regarder du côté de $_POST ou $_GET en fonction de la méthode de ton formulaire.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Le souci, c'est que je clique pas sur un bouton pour valider mon choix, c'est juste le fais de choisir une adresse dans la liste déroulante, un $_POST ou un $_GET s'impose comme meme ?
Je testerais au lycée, j'ai pu mes identifiants sur l'unix de mon portable là x)
Merci encore des réponses
Hors ligne
Si c'est par lien il vaut passer la variable par l'URL (HTTP://URL?valeur=adresseMAC)
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Ok j'essaye ca demain à la premiere heure au lycée, ca fais plaisir d'etre aider aussi rapidement et de pouvoir avancer, encore merci
Hors ligne
Quand on passe une variable par URL on la récupère par $_GET, ici $_GET['valeur']
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
J'ai ceciii pour afficher ma liste déroulante :
<center>
<TABLE border=outset width=600 bgcolor="grey">
<td colspan=4 bgcolor="white">
<h3><center>Vous avez choisi de gérer les BTS IRIS</center></h3></td>
<tr>
<td><center>Choisissez l adresse MAC d un Poste :
<form method="POST">
<select name="mon_champ" onchange="change(this.options[this.selectedIndex].innerHTML)">
<?php
$result = mysql_query("SELECT Adresse_Mac FROM Info_PC_IRIS ORDER BY Adresse_Mac ASC;");
while ( $r = mysql_fetch_array( $result ))
{
?>
<OPTION VALUE="1">
<?
echo $r['Adresse_Mac'];
}
?>
</select>
<input type="hidden" name="ma_valeur" id="new_valeur" />
<input type="submit" value="Ok"/>
</form>
</TABLE></TABLE></div>
Donc j'ai ceci en haut de ma page comme script :
Et donc pour recuperer la variable j'avais mis ceci dans la page que je recois :
Et donc si j'ai compris, je devrait utiliser la méthode GET et non POST ?
Hors ligne
Le problème est que c'est la méthode submit() de ton formulaire qui transmet les couples nom de champ=> valeur à PHP via HTTP, avec la méthode POST choisie dans l'attribut de la balise <form>.
Toutefois, j'observe que cette même balise <form> n'a pas d'attribut action qui devrait désigner la cible, le script qui doit traiter ledit formulaire.
Je vois, en outre, que tu as un bouton submit alors que tu as écrit
ça semble, à tout le moins, contradictoire.
Dans ta boucle while tu crées des <option>s qui ont toutes la même value="1", c'est plutôt ballot.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Dans ta boucle while tu crées des <option>s qui ont toutes la même value="1", c'est plutôt ballot.
Awi désolé, erreur de ma pars. C'est bien le fait de cliquer sur le bouton qui va valider mon choix.
______________________
En faite ma liste déroulante se trouve dans le fichier : index.php et plus précisement dans la partie : if ($Choix=="Choix2") {}
Le fait de cliquer sur le bouton [Ok] va envoyer les informations dans ce meme fichier : index.php et donc pour afficher uniquement ce que je souhaite, j'ai mis une value="1" et en bas de la page index.php j'ai : if ($mon_champ >=1) {}
Je vois pas si tu vois pourquoi je fais ca, mais tu pense que le souci vienne du faite que j'affecte la meme valeur à toutes les options que j'aurais ? ( Désolé si je comprend mal ce que tu essaye de me dire)
J'ai rajouté l'action, mais comme c'était dans le meme fichié je pensais que c'était négligeable ;O
Enfin cela ne change pas, je n'obtient toujours pas le nom :X
<center>
<TABLE border=outset width=600 bgcolor="grey">
<td colspan=4 bgcolor="white">
<h3><center>Vous avez choisi de gérer les BTS IRIS</center></h3></td>
<tr>
<td><center>Choisissez l adresse MAC d un Poste :
<form name='formulaire' method='post' action='index.php'>
<select name="mon_champ" onchange="change(this.options[this.selectedIndex].innerHTML)">
<?php
$result = mysql_query("SELECT Adresse_Mac FROM Info_PC_IRIS ORDER BY Adresse_Mac ASC;");
while ( $r = mysql_fetch_array( $result ))
{
printf("<option value=\"%s\">%s</option>",$r['Adresse_Mac'],$r['Adresse_Mac']);
}
?>
</select>
<input type="hidden" name="ma_valeur" id="new_valeur" />
<input type="submit" value="Ok"/>
</form>
</TABLE></TABLE></div>
Hors ligne
Euh désolé je n'ai pas tout lu mais que veux-tu obtenir de ton formulaire ?
Car actuellement quelque soit le choix dans ta liste déroulante le résultat sera '1' vu que tous les options (fermes la balise d'ailleurs... </option>) possèdent la même valeur (value='1').
Hors ligne
Pour resumer mon probleme :
J'affiche dans une liste déroulante la base de donnée ou son stocké les adresses mac.
Donc dans la liste déroulante on aura toute les adresses qui s'affichent. En séléctionnant celle qu'on veut, puis en cliquant sur un bouton Ok, je veux obtenir cette adresse dans une variable.
Cette variable j'arrive a l'afficher et j'obtient bien l'adresse mac séléctionné.
Mais des que je veux l'utiliser dans une requete pour ma base de donnée, comme ceci :
Avec $ma_valeur qui correspond à mon adresse mac, ca me met que cette variable ne contient rien.
=> Je veux afficher le Nom de la personne qui possede cette adresse mac.
je sais pas si tu vois mieux le context.
Hors ligne