Tableau Formulaire et Case à cocher

Résolu
sokai Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
 Slim -
Bonjour,

Alors voilà mon problème.

INTRODUTION
J'ai créée une base de données avec une table fournisseur qui contient : id,nom, adresse,tél, etc...
Je voudrai afficher toutes ces données ( un fournisseur par ligne avec tout les attributs). Jusqu'a ce point je me débrouille.

PROBLEME
AINSI qu'une case à cocher devant chaques lignes ( ou chaques fournisseurs selon comment l'on voit les choses ) qui permettra à l'utilisateur de mon application de choisir un fournisseur. (pour le suprimer ou le modifier).

1) Donc comment dois-je faire pour ajouter ces cases à cocher ?
2) Comment les " relier " au fournisseur qui se trouve à coté ( sur la même ligne )? Afin de pouvoir le supprimer ou le modifer par la suite.




Autre petite question à part: sur un petit tableau HTML de 2 colones sur 2 ligne ( 4 cellules ). Comment dois-je faire si je veux afficher le contenu de la cellule en bas a droite (qui est sencé avoir les coordonnées 2,2) par exemple.

Existe-t-il un système de coordonée ou de nom attribué ?

J'espère avoir été asser claire!
Merci d'avance!
A voir également:

13 réponses

pitxu Messages postés 689 Date d'inscription   Statut Membre Dernière intervention   95
 
une case à cocher dynamique déclenche la requête SQL dès que l'utilisateur coche la case, c'est un peu plus complexe au niveau du code

le truc pour insérer une case à cocher associée à chaque entrée SQL, c'est d'attribuer un nom de checkbox différent :

<?
$id=0;
$sql ="select * from table";
$req=mysql_query($sql);
while($data=mysql_fetch_assoc($req)) {
$id++;
echo "
<tr>
<td><input type='checkbox' name='casesuprr".$id."'></td>
<td><input type='checkbox' name='casemodif".$id."'></td>
<td>".$data['champ1']."</td>
<td>".$data['champ2']."</td>
<td>".$data['champ3']."</td>
<td>".$data['champ4']."</td>
<td>".$data['champ5']."</td>
</tr>
";
}
1
Dj Nam Messages postés 327 Date d'inscription   Statut Membre Dernière intervention   41
 
Bonjour,
Pour que ton bouton supprimier fonction, et bien tu as parfaitement la solution, ta case à cocher doit avoir pour nom l'id de la ligne à effacer ensuite lorsque la personne clique sur le bouton supprimier il faut récupérer les informations par methode POST
Voici un petit exemple

<input type='checkbox' name='".$id."'>

Supposons que l'id soit égale à 6 :

Lorsque la personne clique sur supprimer ca le renvoie sur une page contenant ce code :

<?php
if ($_POST['6'] == 1) {
//connexion à la BDD
//suppresstion de la ligne concernée WHERE id=6
}
?>

Il va de soit que si il y a une multitude de case à vérifier le mieux reste d'utiliser une boucle toujours en php.

J'espère avoir été clair, en cas de besoin n'hésite pas à me recontacter
1
pitxu Messages postés 689 Date d'inscription   Statut Membre Dernière intervention   95
 
ta case à cocher sera-t-elle dynamique ou existe-t-il un bouton sur la page qui permettra de valider toutes les sélections ?
0
sokai Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
je pensais avoir 2 bouton:

un pour supprimer le fournisseur qui a la case cochée a son coté
l'autre pour modifier le fournisseur qui a la case cochée a son coté


PS: Je veux bien également connaitre ton point de vue avec une case dynamique ( faudra mexpliquer je n'y connais rien )
histoire de comparer quelle solution est la meilleure ;) ui je suis un peu perfectioniste -_-;;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sokai Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
okay ! je vais tester tout ca cette après-midi ! je te dirai ce soir si cela marche !
En tout cas merci beaucoup pour ton aide pitxu ;) !
0
sokai Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Bon cela maffiche bien la liste des fournisseurs avec une case a cocher ( suprr et modif ) devant.
Maintenant supposons que l'utilisateur coche une case quelconque (suprr ) et appuye ensuite sur un bouton " supprimer "

Comment faire pour retrouver le fournisseur correspondant à la case à cocher selectionnée et le supprimer ?
(La primary key de mes fournisseurs sont leur Numéro "numFou")

J'ai donc penser à retrouver le numFou du fournisseur dont la case à été cochée.
De mettre ce résultat dans un variable que je pourrai récupérer dans la page appelée par le bouton " supprimer "
Et qui me permettra donc de supprimer ce fournisseur.

J'ai des idées très claire mais...
Par contre comme je débute je ne sais pas trop comment m'y prendre niveau code.




PS: Autre petite question à part: sur un petit tableau HTML de 2 colones sur 2 ligne ( 4 cellules ). Comment dois-je faire si je veux afficher le contenu de la cellule en bas a droite (qui est sencé avoir les coordonnées 2,2) par exemple.

Existe-t-il un système de coordonée ou de nom attribué ?
0
sokai Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
bon c totalement correct mais j'ai un autre problème à présent.

Il se peut que l'id de la case à cochée ne corresponde pas au numFou à supprimer.
En effet disons que j'ai 3 fournisseurs dans ma table avec les numéros 1, 2, 3.
Je supprime le N° 2.
il me reste donc le N° 1 et le N°3 qui auront une case a coher devant.
Ces cases à cocher auront comme id : 1 et 2 ce qui ne correspond pas au numFou 1 et 3.

J'en arrive à la conculsion qu'il faut que chaque fois que je supprime un fournisseur j'enclanche une requête qui remettre tout les numFou dans l'ordre sans "trou" (celui supprimé) pour que les id des cases à cocher et les numFou correspondent

OU

que l'orsque j'affiche mes fournisseurs avec leurs case a cocher comme cela :

<?
$id=0;
$sql ="select * from table";
$req=mysql_query($sql);
while($data=mysql_fetch_assoc($req)) {
$id++;
echo "
<tr>
<td><input type='checkbox' name='casesuprr".$id."'></td>
<td><input type='checkbox' name='casemodif".$id."'></td>
<td>".$data['champ1']."</td>
<td>".$data['champ2']."</td>
<td>".$data['champ3']."</td>
<td>".$data['champ4']."</td>
<td>".$data['champ5']."</td>
</tr>
";
}

MAIS au lieu de mettre un id pour les cases à cocher je mette dirrectement le numFou comme id de case à cocher mais je ne sais pas comment l'ecrire en code... cela doit ressembler a quelque chose de la sorte ( si c'est possible de le faire ^_^ )
<?

$sql ="select * from table";
$req=mysql_query($sql);
while($data=mysql_fetch_assoc($req)) {

echo "
<tr>
<td><input type='checkbox' name='casesuprr".numFou."'></td>
<td><input type='checkbox' name='casemodif".numFou."'></td>
<td>".$data['champ1']."</td>
<td>".$data['champ2']."</td>
<td>".$data['champ3']."</td>
<td>".$data['champ4']."</td>
<td>".$data['champ5']."</td>
</tr>
";
}


Merci de me corriger ^________^;;;
0
sokai Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
O_o?
0
Dj Nam Messages postés 327 Date d'inscription   Statut Membre Dernière intervention   41
 
Bonjour,
Le code que je t'ai donné suffit car tu te base sur l'id, que celle-ci soit différente du numFou c'est sans importance, par exemple une case qui a pour id "12" même si elle correspond au numFou '50' ca effacera la ligne de ta table ou l'ID est de 12. Donc dans tous les cas ca reste bon, et ce serait bien trop laborieux si à chaques fois il faut remettre les id en places (Mouarf le jeu de mots à 2 balles).
0
sokai Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai bien compris le problème est que je n'ai pas d'id dans ma BDD j'ai juste : numFou, nomFou, adrFou, telFou
Donc pour supprimer une ligne ( celle qui a la case cochée ) je dois bien connaitre la clé primaire du fournisseur que je veus supprimer, c'est a dire le numFou.

Ca doit donner un truc du style

DELETE FROM fournisseur numFou, nomFou etc....
WHERE numFou = id


le problem est que l'id ne correspond pas toujours au fournisseur voir exemple du post N°7 jeudi 18 octobre 2007 à 15h13:37
si non c'est que j'ai mal compris ta technique ;( et je ne vois pas du tout quoi marquer niveau code... si tu px me donner un exemple

En tout cas merci de t'intéresser a mon cas Dj Nam !
0
nEm3sis Messages postés 710 Date d'inscription   Statut Membre Dernière intervention   113
 
while($data=mysql_fetch_assoc($req)) {
$id++;

a mon avis ceci est a éviter car comme tu l'a di tu te repere sur le numfou et pas sur une suite linéaire de nombres

a la place de
<td><input type='checkbox' name='casesuprr".numFou."'></td>
je mettrais
<td><input type='checkbox' name='casesuprr".$data['numFou']."'></td>

come ca tu récupère le numfou de la bdd et c'est directement lié





--->
Je veux bien également connaitre ton point de vue avec une case dynamique ( faudra mexpliquer je n'y connais rien )
histoire de comparer quelle solution est la meilleure ;) ui je suis un peu perfectioniste -_-;;
<---

je préfère la solution avec le bouton en dynamique moi ^^

<?php
mysql_connect("url_de_la_BDD","pseudo","pass"); //url, pseudo, pass
mysql_select_db("nom_de_la_base"); //nom
if (isset($_POST['effacer'])) {
mysql_query('DELETE FROM le_nom_de_table WHERE numFou="'.$_POST['effacer'].'"') or die('<p>'.mysql_error().'</p>');
}

$req=mysql_query("SELECT * FROM le_nom_de_table") or die('<p>'.mysql_error().'</p>');
while($data=mysql_fetch_assoc($req)) {
echo '<tr align="right" valign="bottom">
<td><input type="submit" name="effacer" value="'.$data['numFou'].'"></td>
<td>'.$data['nom'].'</td>
<td>'.$data['telephone'].'</td>
<td>'.$data['adresse'].'</td>
<td>'.$data['etc ...'].'</td>
</tr>';
}
?>


ps : j'ai rajouté ce qu'il fau pour que le contenu du tableau soi aligné en bas a droite
0
sokai Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
okay merci à tous j'ai finalement réussi ! ;)
0
Slim
 
Comment ta fais le questionnaire
0