paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005
-
10 août 2005 à 16:27
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 2007
-
11 août 2005 à 17:26
Bonjour,
j'ai déja posté à propos de ce code mais la, le problème est autre.
je voudrais faire un check dans les checkbox suivant une boucle.
j'ai une liste d'employés qui travaillent sur une machine et je souhaite modifier cette liste. pour cela, une page s'ouvre avec la liste de tous les employés de l'établissement et des checkbox en face.
je veux cocher les employés qui sont dejà associés à la machine en question.
aucun message d'erreur n'apparait mais le check n'apparait que sur le premier des employés d'une machine.
merci d'avance
voici mon code,
Tous les employes disponibles
Les employes de votre machine <?php echo $nom_machine ; ?> sont cochés
<?php
// Appel le fichier connect.php
require_once("Connect.php");
// Connexion au serveur et accès à la base
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);
// Ecriture de la 1ere Requete pour sélectionner tous les fournisseurs
$employes_tous=mysql_query("SELECT * FROM Employe",$connexion);
//Ecriture de la 2ème Requete pour sélectionner tous les fournisseurs de la machine
$employes_machine=mysql_query("SELECT Employe.id_employe FROM Employe, EmployeMachine, Machine WHERE Machine.nom_machine LIKE '%$nom_machine%' AND Machine.nom_machine=EmployeMachine.nom_machine AND EmployeMachine.id_employe=Employe.id_employe",$connexion);
echo "<CENTER>\"
//.\"<CAPTION ALIGN=bottom>Table Données Principales </CAPTION>\"
.\"----
ID |NomPrénom |FonctionTéléphone |Email<TH>Check\n\";
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 10 août 2005 à 16:44
Pourtant ça doit être àa peu près ça...
Au passage, auu lieu de , écrit plutôt , mais le pb ne vient pas de là.
Je pense que ça vient plutôt de ta boucle ou de ton if...
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 10 août 2005 à 16:57
ben oui en fait je ne pense pas en etre loin mais je ne sais pas pourquoi, quand il y a plusieurs employes sur une machine, il ne coche pas le deuxième. j'ai tourné le truc et je ne vois pas... ca m'embete !!!
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 10 août 2005 à 17:23
la meme chose sauf qu'il manque tous les autres employes...
il n'y a donc que le premier employe de cocher à cahque fois ... le problème vient donc de l'intérieur du if ???
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 10 août 2005 à 17:32
Je pense qu'il doit être possible de ne faire qu'une seule requête.
Sinon, peuessaie simplement d'afficher le résultat de tes requêtes :
echo '';
while($machines_employes=mysql_fetch_object($employes_machines)) {
print_r($machines_employes);
while ($tous_employes=mysql_fetch_object($employes_tous)) {
print_r($tous_employes);
}
}
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 11 août 2005 à 08:40
Bonjour,
faire une seule requete : honnetement, je calle !
j'ai affiché le résultat comme tu me l'as conseillé... et voila le résultat. le deuxième employé se retrouve à la fin... c'est pour cela qu'il ne doit pas etre pris en compte...
mais je ne sais pas non plus comment faire la...
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 11 août 2005 à 10:07
Je ne suis pas sur, mais peut-être qu'un GROUP BY te permettrai de ne faire qu'une requête :
SELECT Employe.id_employe, Employe.nom_employe, Employe.prenom_employe, Employe.fonction_employe, Employe.tel_employe, Employe.email_employe, Machine.nom_machine
FROM Employe, EmployeMachine, Machine
WHERE Machine.nom_machine LIKE '%$nom_machine%'
AND Machine.nom_machine=EmployeMachine.nom_machine
- AND EmployeMachine.id_employe=Employe.id_employe - Peut-être faut-il enlever cette condition, puisque tu la testes ensuite avec le if...
GROUP BY Machine.nom_machine
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 11 août 2005 à 10:18
si j'enlève la condition EmployeMachine.id_employe=Employe.id_employe, la case cochée est toujours la première ! donc ca ne va pas...
le group by ne fonctionne pas mieux... mais je ne comprends pas pourquoi une seule requete. qu'est-ce que tu veux faire exactement avec cette requete unique ?
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 11 août 2005 à 10:44
Logiquement, avec une seule requête sur les 3 tables en même temps
(1 jointure entre Machine et EmployeMachine, et un pdt cartésien entre EmployeMachine et Employe),
tu dois pouvoir récupérer toutes les infos qui t'intéresse :
Et à chaque ligne, tu testes
if ($resRequeteEmploye->id_employe == $resRequeteMachineEmploye->id_employe)
et en fonction, tu coches (ou pas), comme tu à déjà fait...
paulinett
Messages postés51Date d'inscriptionlundi 1 août 2005StatutMembreDernière intervention17 octobre 2005 11 août 2005 à 11:02
ben en fait, j'ai deux requetes qui fonctionnent bien (je les ai testé avec MySQL et ma base):
-l'une qui correspond à ton $resRequeteMachineEmploye
-l'autre à ton $resRequeteEmploye
et je compare les deux... je trouve que cela revient au même mais je peux me tromper... ???
je trouve ca simple de comparer les deux résultats de requêtes et je pense que nos idées se rejoignent. (ton if est bien à l'intérieur de boucle, je me trompe ?)
essayons de chercher avec deux requetes, je suis plus à l'aise. en fait je ne vois pas du tout comment faire autrement.
// Ecriture de la 1ere Requete pour sélectionner tous les employes
$employes_tous=mysql_query("SELECT * FROM Employe",$connexion);
//Ecriture de la 2ème Requete pour sélectionner tous les employes de la machine
$employes_machine=mysql_query("SELECT Employe.id_employe FROM Employe, EmployeMachine, Machine WHERE Machine.nom_machine LIKE '%$nom_machine%' AND Machine.nom_machine=EmployeMachine.nom_machine AND EmployeMachine.id_employe=Employe.id_employe GROUP BY Machine.nom_machine",$connexion);
// traitement des infos (désolée je n'ai pas changé encore les MAJ du HTML
while($machine_employes=mysql_fetch_object($employes_machine))
{
while ($tous_employes=mysql_fetch_object($employes_tous))
{
if ($tous_employes->id_employe == $machine_employes->id_employe)
{
echo '<TR><TD>'.$tous_employes->id_employe.'</TD><TD>'
.$tous_employes->nom_employe.'</TD><TD>'
.$tous_employes->prenom_employe.'</TD><TD>'
.$tous_employes->fonction_employe.'</TD><TD>'
.$tous_employes->tel_employe.'</TD><TD>'
.$tous_employes->email_employe.'</TD><TD>'
.'id_employe.'" CHECKED></TD></TR>';
}
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 11 août 2005 à 11:30
Oui, le "if" que j'avais mis, c'était celui de la boucle...
Ok, essaie ça :
// Ecriture de la 1ere Requete pour sélectionner tous les employes
$employes_tous=mysql_query("SELECT * FROM Employe",$connexion);
//Ecriture de la 2ème Requete pour sélectionner tous les employes de la machine
$employes_machine=mysql_query("SELECT EmployeMachine.id_employe FROM EmployeMachine, Machine WHERE Machine.nom_machine LIKE '%$nom_machine%' AND Machine.nom_machine=EmployeMachine.nom_machine ",$connexion);
// traitement des infos (désolée je n'ai pas changé encore les MAJ du HTML
while($machine_employes=mysql_fetch_object($employes_machine)) {
while ($tous_employes=mysql_fetch_object($employes_tous)) {
$check='';
if ($tous_employes->id_employe == $machine_employes->id_employe) {
$check=' checked="checked"';
}
echo '<TR><TD>'.$tous_employes->id_employe.'</TD>
<TD>'.$tous_employes->nom_employe.'</TD>
<TD>'.$tous_employes->prenom_employe.'</TD>
<TD>'.$tous_employes->fonction_employe.'</TD>
<TD>'.$tous_employes->tel_employe.'</TD>
<TD>'.$tous_employes->email_employe.'</TD>
<TD>id_employe.'".$check.' /></TD></TR>';
}
}
}