PB d'insertion dans une base.. suite des checkbox !!!

paulinett Messages postés 51 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 17 octobre 2005 - 16 août 2005 à 09:22
paulinett Messages postés 51 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 17 octobre 2005 - 17 août 2005 à 09:04
Bonjour,

J'ai déja posté à ce sujet mais je n'ai toujours pas de solution.

J'ai un premier formulaire qui me donne une liste d'employés dans une structure (table Employe). Ceux qui travaillent sur une machine donnée sont cochés.
Quand l'utilisateur clique sur le bouton 'modifier' , j'aimerai modifier la liste d'employés affectée à une machine, soit la liste de la table EmployeMachine.
Pour cela je fais deux requêtes :
1. Delete des lignes de la table EmployeMachine correspondantes à la machine donnée
2. Insert des lignes constituées du nom_machine et de l'id_employe dans la table EmployeMachine. les id_employe viennent du choix utilisateur, soit des cases qu'il a coché dans le formulaire initial.

La requete de delete fonctionne bien mais la requête d'insertion ne fonctionne pas. Il me dit qu'une contrainte m'empeche de la faire. Quand je fais ces requetes séparément avec MySQL, cela fonctionne bien. J'ai donc un souci dans ma boucle d'insertion.

Est-ce que quelqu'un pourrait m'aider. J'en serais très heureuse.

Paulinett'

Voici mon code :

formulaire_modif_employemachine.php

<html>
<head>
<title> Formulaire de modification des employés d'une machine </title>
<link rel= stylesheet href='film3.css' type='text/css'>
</head>




Formulaire de Modification des employés de la machine


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


<!--------------------------------------->
<!-- RECUPERATION DU NOM DE LA MACHINE -->
<!--------------------------------------->


<?php
$nom_machine =$_POST['nom_machine'];
?>


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);

// déclaration de l'entête du tableau
echo "<center>\"
.\"----
ID |NomPrénom |FonctionTéléphone |Email<th>Check\n\";

// déclaration d'un tableau pour les employés d'une machine
$tabEmployesMachine =array();

// Requête donnant les employés d'une machine
$employes_machine= mysql_query(\"SELECT EmployeMachine.nom_machine, EmployeMachine.id_employe FROM EmployeMachine WHERE EmployeMachine.nom_machine LIKE '%$nom_machine%'\",$connexion);

// Stockage des employés d'une machine dans un tableau
while ($ligne = mysql_fetch_array($employes_machine, MYSQL_NUM))
{
array_push($tabEmployesMachine,$ligne[1]);
}

// Requête sélectionnant tous les employés
$employes_tous=mysql_query(\"SELECT * FROM Employe\",$connexion);

// Boucle permettant de parcouri la liste des employés et d'affecter à chaque employé un check s'il est associé à la machine en question
while ($tous_employes=mysql_fetch_object($employes_tous))
{
$check='';
if (in_array($tous_employes->id_employe,$tabEmployesMachine))
{
$check=' checked=\"checked\"';
}

// écriture du tableau
echo '----
'.$tous_employes->id_employe.', '
.$tous_employes->nom_employe.', '
.$tous_employes->prenom_employe.', '
.$tous_employes->fonction_employe.', '
.$tous_employes->tel_employe.', '
.$tous_employes->email_employe.', '
.'id_employe.'"'.$check.' />, ';
}
echo "
</center>\n";
?>


<!-- champ caché avec le nom de la machine pour le récupérer pour l'update des employes -->
>



<center>Confirmez-vous ces nouveaux employés ?
</center>
<center></center>


</form>



</html>

modif_employemachine.php

<html>
<head>
<title> Formulaire de modification des employés d'une machine </title>
<link rel =stylesheet href= 'film3.css' type='text/css'>
</head>




Formulaire de Modification des employés de la machine


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


<!--------------------------------------->
<!-- RECUPERATION DU NOM DE LA MACHINE -->
<!--------------------------------------->


<?php
$nom_machine =$_POST['nom_machine'];

?>



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);

// déclaration de l'entête du tableau
echo "<center>\"
.\"----
ID |NomPrénom |FonctionTéléphone |Email<th>Check\n\";

// déclaration d'un tableau pour les employés d'une machine
$tabEmployesMachine =array();

// Requête donnant les employés d'une machine
$employes_machine=mysql_query(\"SELECT EmployeMachine.nom_machine, EmployeMachine.id_employe FROM EmployeMachine WHERE EmployeMachine.nom_machine LIKE '%$nom_machine%'\",$connexion);

// Stockage des employés d'une machine dans un tableau
while ($ligne = mysql_fetch_array($employes_machine, MYSQL_NUM))
{
array_push($tabEmployesMachine,$ligne[1]);
}

// Requête sélectionnant tous les employés
$employes_tous=mysql_query(\"SELECT * FROM Employe\",$connexion);

// Boucle permettant de parcouri la liste des employés et d'affecter à chaque employé un check s'il est associé à la machine en question
while ($tous_employes=mysql_fetch_object($employes_tous))
{
$check='';
if (in_array($tous_employes->id_employe,$tabEmployesMachine))
{
$check=' checked=\"checked\"';
}

// écriture du tableau
echo '----
'.$tous_employes->id_employe.', '
.$tous_employes->nom_employe.', '
.$tous_employes->prenom_employe.', '
.$tous_employes->fonction_employe.', '
.$tous_employes->tel_employe.', '
.$tous_employes->email_employe.', '
.'id_employe.'"'.$check.' />, ';
}
echo "
</center>\n";
?>


<!-- champ caché avec le nom de la machine pour le récupérer pour l'update des employes -->
>



<center>Confirmez-vous ces nouveaux employés ?
</center>
<center></center>



</form>



</html>

1 réponse

paulinett Messages postés 51 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 17 octobre 2005
17 août 2005 à 09:04
J'ai trouvé la solution pour faire mes requetes correctement.
Le code, si certains sont intéressés :

<html>
<head>
<title> Modification des employés d'une machine </title>
<link rel=stylesheet href='film3.css' type='text/css'>
</head>




<!-- Récupération des variables pour l'update fournisseur -->
<?php
// Récupération de variables du formulaire
$nom_machine=$_POST['nom_machine'];
echo $nom_machine;

$id_employes[]=$_POST['employes'];
print_r($id_employes);

?>


Résultat de la mise à jour de vos employés pour la machine <?php echo $nom_machine;?>


<!-- REQUETES EN ATTENTE-->
<?php
// On a besoin de ce fichier pour la connexion
require("Connect.php");

// Connexion au serveur et accès à la base
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);

// Requete engendrée par la pression du bouton Modifier
if (isSet($_POST['modifier']))
{
// Requete de destruction $requete_destruction "DELETE FROM EmployeMachine WHERE EmployeMachine.nom_machine '$nom_machine'";
$resultat_destruction = mysql_query($requete_destruction,$connexion);

if ($resultat_destruction)
echo "<hr> La requête de destruction '$requete_destruction' a été effectuée.\n";
else
{
echo "La requête de destruction n'a pas pu être effectuée pour la raison suivante :"
.mysql_error($connexion);
}


for ($i=0; $i< count($id_employes[0]);$i++)
{
//echo $nom_machine;

$var='';
$var=$id_employes[0][$i];
//echo $var;

$requete_insertion = "INSERT INTO EmployeMachine(nom_machine, id_employe) VALUES('".$nom_machine."',".$var.")";

$resultat_insertion = mysql_query($requete_insertion,$connexion);

if($resultat_insertion)
echo "<hr> La requête d'insertion '$requete_insertion' a été effectuée.\n";
else
{
echo "La requête d'insertion n'a pas pu être effectuée pour la raison suivante :"
.mysql_error($connexion); }
}
}


?>





<h2>[http://localhost/liste_machine.php">Retour<h2>

</html>
0
Rejoignez-nous