Probleme Tableau PHP HTML

Résolu/Fermé
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008
-
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008
-
Bonjour,

J'ai une page php qui me permet d'afficher les salariés présents dans une base de donnée.
Mon soucis est que je voudrais mettre à gauche 2 icônes, l'une pour modifier un salarié(donc modification dans la BDD) et l'autre pour supprimer le salarié(donc suppression dans la BDD).
Voila ce que j'ai fait, mais je voudrais en fait que lorsque je clique sur l'une des deux icônes elle prenne bien en compte le salarié concerné et je ne sais pas comment faire.
Merci d'avance.

Voici le code:

<HTML>
<HEAD>
<TITLE>Liste des Salariés</TITLE>
<STYLE type="text/css">
BODY
{
color:black; font-family:Tahoma;
}
.menu
{
color:black; font-size:11pt; text-align:center; font-family:Tahoma; font-weight:bold
}
</STYLE>
</HEAD>
<BODY BGCOLOR="#BAD4FC">
<IMG SRC="http://127.0.0.1/ASM/LogoASM2.jpeg"><BR /><BR />
<CENTER><B><FONT SIZE=3>LISTE DES SALARIES PRESENTS</FONT></B></CENTER><BR />
<TABLE width="100%" bgcolor="#BAD4FC" cellpadding="5" cellspacing="2" border="2" bordercolor="#DDDDDD">
<tr>
<td width="25%">
<span class="menu"><a href="http://127.0.0.1/ASM/login.php"><center>Acceuil</center></a></span></td>
<td width="25%">
<span class="menu"><a href="http://127.0.0.1/ASM/affichage_salarie.php"><center>Gestion des Salariés</center></a></span></td>
<td width="25%">
<span class="menu"><center>Planning</center></a></span></td>
<td width="25%">
<span class="menu"><center>Tableaux de résultats</center></span></td>
</tr>
</TABLE><BR /><BR />
<DIV style="BORDER-RIGHT: hidden 1px inset; BORDER-TOP: hidden 1px inset; OVERFLOW-Y: scroll; OVERFLOW-X: hidden; BORDER-LEFT: hidden 1px inset; WIDTH: 100%; BORDER-BOTTOM: hidden 1px inset; HEIGHT: 750px; background-color: #BAD4FC; scrollbar-face-color: #336699; scrollbar-shadow-color: #9CE5FD; scrollbar-highlight-color: #336699; scrollbar-3dlight-color: #9CE5FD; scrollbar-darkshadow-color: #9CE5FD; scrollbar-track-color: #336699; scrollbar-arrow-color: #9CE5FD;">
<p>
<TABLE width="100%" bgcolor="#BAD4FC" cellpadding="5" cellspacing="2" border="2" bordercolor="#DDDDDD">
<tr>
<td width="1%"><B><FONT SIZE=2><CENTER>Modifier</CENTER></FONT></B></td>
<td width="1%"><B><FONT SIZE=2><CENTER>Supprimer</CENTER></FONT></B></td>
<td width="1%"><B><FONT SIZE=2><CENTER>Civilité</CENTER></FONT></B></td>
<td width="6%"><B><FONT SIZE=2><CENTER>Nom</CENTER></FONT></B></td>
<td width="6%"><B><FONT SIZE=2><CENTER>Prénom</CENTER></FONT></B></td>
<td width="4%"><B><FONT SIZE=2><CENTER>Date de Naissance</CENTER></FONT></B></td>
<td width="10%"><B><FONT SIZE=2><CENTER>Adresse</CENTER></FONT></B></td>
<td width="3%"><B><FONT SIZE=2><CENTER>Code Postal</CENTER></FONT></B></td>
<td width="5%"><B><FONT SIZE=2><CENTER>Ville</CENTER></FONT></B></td>
<td width="5%"><B><FONT SIZE=2><CENTER>Téléphone Fixe</CENTER></FONT></B></td>
<td width="5%"><B><FONT SIZE=2><CENTER>Téléphone Portable</CENTER></FONT></B></td>
<td width="3%"><B><FONT SIZE=2><CENTER>Nature du Contrat</CENTER></FONT></B></td>
<td width="2%"><B><FONT SIZE=2><CENTER>Date d'Entrée</CENTER></FONT></B></td>
<td width="2%"><B><FONT SIZE=2><CENTER>Date de Sortie</CENTER></FONT></B></td>
</tr>


<?
mysql_connect("localhost", "root") or die ("Impossible de se connecter à la base");
mysql_select_db("asm") or die ("Impossible de se connecter à la base");
$Resultat = mysql_query("SELECT * FROM salarie, contrat, nature_contrat
where salarie.ID_Salarie = contrat.ID_Salarie
and contrat.ID_Nature_Contrat = nature_contrat.ID_Nature_Contrat;");

$NombreEnregistrement = mysql_numrows($Resultat);

mysql_close();

for ($Compteur = 0 ; $Compteur < $NombreEnregistrement ; $Compteur ++)
{
echo "<TR>";
//COLONNE : MODIFIER
echo "<TD>";
echo "<a href=http://127.0.0.1/ASM/modification_salarie.php >";
echo "<CENTER><IMG SRC='http://127.0.0.1/ASM/modifier.png' title='modifier'></CENTER></a>";
echo "</TD>";
//COLONNE : SUPPRIMER
echo "<TD>";
echo "<a href=http://127.0.0.1/ASM/suppression_salarie.php>";
echo "<CENTER><IMG SRC='http://127.0.0.1/ASM/supprimer.png' title='supprimer'></CENTER></a>";
echo "</TD>";
// PREMIERE COLONNE : civilite
echo "<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Civilite_Salarie");
echo "</FONT>";
echo "</TD>";
// DEUXIEME COLONNE : nom
echo "<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Nom_Salarie");
echo "</FONT>";
echo "</TD>";
// TROISIEME COLONNE : prenom
echo "<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Prenom_Salarie");
echo "</FONT>";
echo "</TD>";
//QAUTRIEME COLONNE : date de naissance
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Date_Naissance_Salarie");
echo "</FONT>";
echo"</TD>";
//CINQUIEME COLONNE : adresse
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Adresse_Salarie");
echo "</FONT>";
echo"</TD>";
//SIXIEME COLONE : code postal
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Code_Postal_Salarie");
echo "</FONT>";
echo"</TD>";
//SEPTIEME COLONE : ville
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Ville_Salarie");
echo"</TD>";
//HUITIEME COLONE : telephone fixe
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Telephone_Fixe_Salarie");
echo "</FONT>";
echo"</TD>";
//NEUVIEME COLONE : telephone portable
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Telephone_Portable_Salarie");
echo "</FONT>";
echo"</TD>";
//DIXIEME COLONE : nature du contrat
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Libelle_Nature_Contrat");
echo "</FONT>";
echo"</TD>";
//ONZIEME COLONE : date d'entrée
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Date_Entree_Salarie");
echo "</FONT>";
echo"</TD>";
//DOUZIEME COLONE : date de sortie
echo"<TD>";
echo "<FONT SIZE=2>";
echo mysql_result($Resultat , $Compteur , "Date_Sortie_Salarie");
echo "</FONT>";
echo"</TD>";
echo "</TR>";
}
?>
</TABLE><BR /><BR />
</p>
</DIV>

<TABLE align="center"; width="80"; bgcolor="#BAD4FC"; cellpadding="5"; cellspacing="24";>
<tr>
<td width="20%"><B><a href="http://127.0.0.1/ASM/formulaire_salarie.html">AJOUTER</a></td>
<td width="20%"><B><a href="">IMPRIMER</a></td>
</tr>
</TABLE>

</BODY>
</HTML>

6 réponses

Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
608
Bjr

Un truc tout bête ... ;-)

Passe l'identifiant du salarié en tant que paramètre

exe
$ID_Salarie = mysql_result($Resultat , $Compteur , "ID_Salarie");

echo "<a href=http://127.0.0.1/ASM/modification_salarie.php?ID_salarie=".$ID_Salarie.">";
...
echo "<a href=http://127.0.0.1/ASM/suppression_salarie.php?ID_salarie=".$ID_Salarie.">";


Ensuite tu récupères ID_salarie dans tes pages modification_salarie.php & suppression_salarie.php

Ex
<?php

if (isset($_GET["ID_Salarie"]))
{
  $ID_Salarie = $_GET["ID_Salarie"];
}
else
{
  // Oups pas de salarié : ici gestion des erreurs !
}

?>


Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

Alors j'ai compris ce que tu voulais dire, j'ai juste une question bête pour être sure. Quand tu veux mettre l'ID_Salarie en paramètre tu mets ou la ligne $ID_Salarie = mysql_result($Resultat , $Compteur , "ID_Salarie"); dans le tableau au niveau de "modifier" et "supprimer", faut-il que je fasse un echo car je ne veux pas l'afficher l'ID_Salarie.
Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
608
Dans la boucle for :

for ($Compteur = 0 ; $Compteur < $NombreEnregistrement ; $Compteur ++) 
{ 
$ID_Salarie = mysql_result($Resultat , $Compteur , "ID_Salarie"); 







j'utilise $ID_Salarie comme variable temporaire juste pour pas avoir à réécrire tout le temps mysql_result($Resultat , $Compteur , "ID_Salarie")


Bien sûr tu peux aussi écrire

echo "<a href=http://127.0.0.1/ASM/modification_salarie.php?ID_salarie=".mysql_result($Resultat , $Compteur , "ID_Salarie".">­"; 


au lieu de

echo "<a href=http://127.0.0.1/ASM/modification_salarie.php?ID_salarie=".$ID_Salarie.">­"; 

Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

OK c'est bon ça fonctionne, juste une dernière question dans mes pages suppression.php et modification.php les requêtes de suppression et de modification je les mets comme ça:

if (isset($_GET["ID_Salarie"]))
{
$ID_Salarie = $_GET["ID_Salarie"];

mysql_connect("localhost","root") or die ("Impossible de se connecter à la base de données.");
mysql_select_db("asm") or die("Impossible de se connecter à la base de données.");
$resultat = mysql_query("DELETE FROM salarie
WHERE ID_Salarie LIKE '$ID_Salarie'");
}
else
{
echo '<CENTER><B>Le salarié n\'existe pas!</B></CENTER>';
}
Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
608
Oui ça paraît correct sans pour le LIKE c'est "dangereux" surtout en suppression bien que j'ai horreur d'utiliser la fonction de substitution de variables de PHP et que je préfère écrire


$resultat = mysql_query("DELETE FROM salarie
WHERE ID_Salarie = '".$ID_Salarie."'");

au moins là on distingue bien la variable
plutôt que

$resultat = mysql_query("DELETE FROM salarie
WHERE ID_Salarie = '$ID_Salarie'");

Mais c'est affaire de goût
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

C'est plutôt bizarre ma requête ne fonctionne pas après avoir cliquer sur supprimer il m'affiche le salarié à bien été supprimé mais il ne se passe rien dans ma base je ne devrais pas faire un form avec method="get" dans mes pages suppression et modification?
Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
608
Ta page de départ (celle avec le tableau ne comporte pas de formulaire donc le problème ne provient pas de là)

Dans ta page suppression_salarie.php

ajoute avant

 if (isset($_GET["ID_Salarie"])) 
{ 
$ID_Salarie = $_GET["ID_Salarie"]; 


le code

<?php

echo "Contenu de $_GET[]<br />";
echo "<pre>";
var_dump($_GET);
echo "</pre>";

?>


Ca va t'afficher toutes les variables contenu dans $_GET[]
Pratique pour débugger
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

J'ai donc ecrit ça:

echo "Contenu de $_GET[ID_Salarie]<br />";
echo "<pre>";
var_dump($_GET["ID_Salarie"]);
echo "</pre>";

et j'ai comme affichage:

Contenu de 1

string(1) "1"

Je ne vois rien d'anormal car le salarié que j'ai tenté de supprimé a pour ID_Salarie 1.
Merci de m'éclairer encore une fois.
Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
608
Poste le code complet de ta page suppression_salarie.php
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

<HTML>
<HEAD>
<TITLE>Suppression d'un Salarié</TITLE>
<STYLE type="text/css">
BODY
{
color:black; font-family:Tahoma;
}
.menu
{
color:black; font-size:11pt; text-align:center; font-family:Tahoma; font-weight:bold
}
</STYLE>
</HEAD>
<BODY BGCOLOR="#BAD4FC">
<IMG SRC="http://127.0.0.1/ASM/LogoASM2.jpeg"><BR /><BR />
<CENTER><B><FONT SIZE=3>SUPPRESSION D'UN SALARIE</FONT></B></CENTER><BR />
<TABLE width="100%" bgcolor="#BAD4FC" cellpadding="5" cellspacing="2" border="2" bordercolor="#DDDDDD">
<tr>
<td width="25%">
<span class="menu"><a href="http://127.0.0.1/ASM/acceuil.html"><center>Acceuil</center></a></span></td>
<td width="25%">
<span class="menu"><a href="http://127.0.0.1/ASM/affichage_salarie.php"><center>Gestion des Salariés</center></a></span></td>
<td width="25%">
<span class="menu"><center>Planning</center></a></span></td>
<td width="25%">
<span class="menu"><center>Tableaux de résultats</center></span></td>
</tr>
</TABLE><BR /><BR />

<?
echo "Contenu de $_GET[ID_Salarie]<br />";
echo "<pre>";
var_dump($_GET);
echo "</pre>";

if (isset($_GET["ID_Salarie"]))
{
$ID_Salarie = $_GET["ID_Salarie"];

mysql_connect("localhost","root") or die ("Impossible de se connecter à la base de données.");
mysql_select_db("asm") or die("Impossible de se connecter à la base de données.");
$resultat = mysql_query("DELETE FROM salarie
WHERE ID_Salarie='".$ID_Salarie."'");
echo '<CENTER><B>Le salarié à été supprimé avec succés.</B></CENTER>';
}
else
{
echo '<CENTER><B>Le salarié n\'existe pas!</B></CENTER>';
}
?>

</BODY>
</HTML>
Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
608
Remplace
$resultat = mysql_query("DELETE FROM salarie 
WHERE ID_Salarie='".$ID_Salarie."'"); 


PAR



$resultat = mysql_query("DELETE FROM salarie 
WHERE ID_Salarie='".$ID_Salarie."'"); 
if (!$resultat)
{
  echo "Erreur MySQL n°".mysql_errno()." : ".mysql_error();
}
else
{
  echo "Nombre d'enregistrements supprimés : ".mysql_affected_rows(); 

}


ca doit t'afficher les erreurs MySQL au cas où sinon le nbr de lignes effacées dans ta table
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

J'ai pour affcihage
Erreur MySQL n°1217 : Impossible de supprimer un enregistrement père : une constrainte externe l'empèche

en fait j'ai 5 tables: contrat,salarie,nature_contrat,profil_contrat,type_contrat
Chacune d'entre elles sont reliées c-a-d que dans ma table contrat j'ai comme clés étrangères
ID_Salarie, ID_Nature_Contrat, ID_Profil_Contrat, ID_Type_Contrat que j'ai fait avec phpMyAdmin dans la gestion des relations, toutes ces tables sont en InnoDB.