PHP boucle formulaire tableau 2 dimensions

Fermé
pekwy Messages postés 11 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 4 juin 2012 - 4 juin 2012 à 14:02
doctormad Messages postés 430 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 2 avril 2015 - 4 juin 2012 à 17:44
Bonjour à tous,

J'ai un problème de bouclage PHP sur un formulaire.

J'ai un tableau HTML contenant :
1ère ligne : mois de janvier à décembre
1ère colonne : nom de l'employé

Evidemment la largeur du tableau (nombre de colonnes) est fixe mais la hauteur (nombre de lignes) s'agrandit en fonction du nombre d'employé.

Dans ce tableau, j'ai un chiffre associé à un employé X pour le mois Y... de la même manière pour tous les employés et tous les mois...

J'aimerai associer chacun de ces chiffres au numéro de colonne et au numéro de ligne pour faire de l'insertion en base de données. (chaque chiffre serait modifiable via un input text dans ce formulaire) et le traitement de formulaire me permettrait donc de savoir à quel mois et à quel employé est lié chaque chiffre.

J'espère être clair ? Désolé si je ne le suis pas :/


Mon code est le suivant :



<?php
$requete = mysql_query("Select * from mois");
$requete2 = mysql_query("Select * from employes");

echo "<table><FORM method='post' action='mur.php'>";
echo "<tr><th colspan='13' class='title'>Mur</th></tr>";
echo "<tr><th class='mois'>Employé</th>";

while ($resultat = mysql_fetch_array($requete))
{
echo "<td class='mois'>".$resultat['nom_mois']."</td>";
}
echo "</tr>";

while ($resultat2 = mysql_fetch_array($requete2))
{

$id = $resultat2['id_employes'];

echo "<tr><th>".$resultat2['nom_employes']."</th>";

for ($i = 1; $i <= 12; $i++) {
$used = mysql_query("select * from mur, employes, mois where employe_id = id_employes and id_mois = mois_id and id_mois = '".$i."' and id_employes = '".$id."'");
$result = mysql_fetch_array($used);
if (mysql_num_rows($used) != 0)
{
echo "<td><input type='text' name='pourcentage[]' value='".$result['occupation']."' />%</td>";
	echo "<input type='hidden' name='mois[$i]' value='".$i."'>";
	echo "<input type='hidden' name='noms[$id]' value='".$id."'>";
}
else
{
	echo "<input type='hidden' name='mois[$i]' value='".$i."'>";
	echo "<input type='hidden' name='noms[$id]' value='".$id."'>";
    echo "<td><input type='text' name='pourcentage[]' value='0.00'>%</td>";
	}
}


echo "<tr>";
}


echo "<input type='submit' name='mur' value='mur'></form></table>";
?>




A partir de là je ne sais pas comment boucler sur la page cible pour avoir les informations que je souhaite.


Quelqu'un pourrait m'éclairer ?

Merci beaucoup,
Bien à vous,

pekwy
A voir également:

1 réponse

doctormad Messages postés 430 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 2 avril 2015 99
4 juin 2012 à 17:44
Salut,

Si j'ai bien compris tu cherches à identifier tes chams pourcentage ?

Si c'est ça il te suffit de leur donner justement un identifiant :
echo '<td><input type="text" name="pourcentage_'.$i.'_'.$id.'" value="'.$result['occupation'].'" />%</td>';

Que tu pourras alors récupérer en faisant la même double boucle que celle que tu utilises pour afficher le tableau.
// pseudo code : 
for(i<12) {
  foreach(employe) {
    if(isset($_POST['pourcentage_'.$i.'_'.$id])) {

    // save in database 
    
    }
  }
}


Au passage quelques remarques :

- Toujours tester les retours de fonctions (ex : mysql_query ne retourne pas forcément une ressource.
- Utiliser autant que faire se peut les objets php qui vont bien : https://www.php.net/manual/en/book.pdo.php
- Utiliser les simples quotes pour encadrer les chaînes de caractères (performances).
- Est-tu obliger de faire une jointure sur la table mois ?
- Selon le nombre d'employés à récuper il peut être plus intéressant de faire une requête par employé ou une requête pour tous, en tout cas surtout pas 12 requêtes par employé.
1