Génerateur de tableau | index ?
Bonjour,
J'ai une table SQL "suivi", qui contient les interventions dites "en cours".
J'ai voulu créer un tableau selon le nombre d'élément de la table, et y mettre les fonctions d'ajout / suppression.
Un petit screen-shot pour que ce soit plus clair:
Le problème est que, pour mon script de suppression, j'utilise une référence pour lancer ma requête SQL mais la en l'occurrence j'utilise l'id, qui lui est dupliqué à chaque fois donc en toute logique il me supprime le dernière élément et non celui ciblé. Peut-on indexer un tableau créer dynamiquement ?
Autre problème pour la liste déroulante,
Toutes la création de la ligne ce trouve dans la boucle, et je comprends pas pourquoi la première ligne est bien rempli mais ensuite plus rien ...
D'avance merci
Salut.
Bon, ce serait plus simple avc au moins le detail de la structure de ton formulaire, mais je vais essayé de te donner une réponse :
tu as 2 options :
- un id_suivi unique (le moyens le plus propre), tu ajoute un id auto_increment (à chaque enregistrement, il va récupérer la valeur auto_incrementé de la table et l'utiliser comme ID), ainsi tu auras toujours un ID unique que tu pourra utiliser pour la suppression, l'update, ....
=> pour ne pas modifier ton design, et masquer (+/-) cette infos au vu de l'utilisateur, tu peux la placer dans un champs input de type "hidden".
- utiliser plusieurs champs dans ta close WHERE intervenant = "..." AND intervention="..." AND ... autant que tu veux ;) mais dans ce cas là, tu dois faire en sorte de connaitre les anciennes valeurs pour pouvoir les supprimer et éviter les doublons (si 2 interventions pour le même intervenant sont identique, tu vas te retrouver avec le même problème que précédemment)
@++&BonCode;)
Merci pour la réponse nours312,
Donc la, j'ai vérifié sur la page, chaque <td> porte comme name respectif l'id auto_increment, mais je ne comprends pas comment faire le lien lors de l'appui sur le bouton supprimer.
J'essaye juste d'afficher une des valeurs du tableau $row2 dans mon script, mais déjà ça, il ne me l'affiche pas :/ il veut pas récupérer la valeur de $row2
<code>
<?php
include('SCRIPT_CONNEXION_SQL.php');
extract($_POST);
$sql = " SELECT nom FROM employe;";
$sql2 = " SELECT * FROM suivi;";
$result = mysql_query($sql) or die("requête fail !");
$result2 = mysql_query($sql2) or die("requête fail !");
while ($row2=mysql_fetch_array($result2))
{
echo "<tr><td width=10% align=center>";
echo "<select name='intervenant'>";
while ($row=mysql_fetch_array($result))
{
echo"<option>$row[0]</option>";
}
echo"</select></td>
<td width=70%><input type=text name=$row2[0]
value='$row2[0]' style='width:831;'></td>
<td width=20% align=center>
<input type='button' value='Ajouter'>
<input type='submit' value='Supprimer'>
<input type='hidden' name='login' value='$row2'></td></tr>";
}
?>
</code>
Autant pour moi sa passe bien avec le Hidden, je m'étais trompé dans le name, mais par contre pour récupérer la valeur de l'index 0 du tableau par exemple, pour essayer, ça devrait être le même principe ? car quand je fait echo $row2 > Array, normal, mais quand je fait echo $row[0] il me renvois A ... :/ lol
arf, il même en affichant l'id, il m'affiche celui de la dernière ligne :/
Question plus précise maintenant, donc chaque <td> possède l'id auto_increment, mais maintenant comment faire pour que chaque bouton 'supprimer' de chaque <td> soit lié à la ligne td alors qu'elles se créent toutes dynamiquement :S . La dans mon script j'ai juste fait afficher la valeur de $row2[0], donc l'id, ce qui fait que ça devrait m'afficher l'id de la ligne ou je clique mais ça me revoie toujours 21, la dernière ligne générée :-/
Bon bah j'continue à m'auto-parler xD
J'ai trouvé, il fallait juste que je crée le formulaire à chaque ligne et la ça fonctionne nikel,
Maintenant j'me retrouve avec mon autre problème, celui de la liste qui se remplit qu'une seule fois. Si j'trouve avant une réponse je posterai le code pour ceux qui sont intéressés =)
Le probleme : la fonction mysql est appelée qu'une seule fois donc j'ai copié les valeurs dans un autre tableau et j'affiche mon autre tableau en boucle et la ça passe :
while ($row=mysql_fetch_array($result))
{
$arr[] = $row[0];
}
$i = 0;
while ($i <= count($arr))
{
echo"<option>$arr[$i]</option>";
$i = $i + 1;
}
Salut :
tu peux aussi faire ça ::
<?php
$options = "" ;
while ($row=mysql_fetch_array($result))
{
$options .= "<option>$row[0]</option>";
}
?>
<select >
<?php echo $options ; ?>
</select >
ça t'éviteras les boucles inutiles ;)c'est bon tout est résolu ?
Sinon, désolé de ne pas t'avoir aidé plus vite ... mais ya pas pas foule en ce moment, ça devrait changé, et nous serons plus réactif à ce moment là ;)
BonCode ;)
oui sujet résolu merci pour ta réponse :D
