Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/07/2011, 00h42   #1
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Par défaut Modifier des enregistrements affichés dans un tableau HTML

Bonjour,

Dans le cadre de mon application, je dois mettre en place des formulaires de modification sur certaines tables.

Pour cela, j'ai prévu de donner la possibilité de modifier plusieurs lignes à la fois, donc d'extraire un certain nombre de lignes dans un <table> et à l'aide de bouton radio par exemple , modifier ou supprimer les lignes cochées.

Je sais extraire et afficher mais j'ai des problèmes pour modifier plusieurs lignes à la fois c'est à dire les identifier dans le tableau HTML.

Merci de vos solutions et pistes pour réaliser ce procédé ?

Cordialement
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 11h21   #2
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 776
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 776
Points : 2 340
Points : 2 340
Bonjour madina,

Si tu fais avec des boutons radio, dans ta page de traitement ( une fois que tu as envoyé ton formulaire donc ) tu récupères les $_POST['id_bouton_radio'] qui ne sont pas vides, et tu auras tes lignes à modifier.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/07/2011, 17h10   #3
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Merci FirePrawn,

En fait mon problème c'est surtout comment parcourir le tableau pour récupérer la valeur de chaque champ dans chaque ligne.

Cordialement
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 18h50   #4
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 776
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 776
Points : 2 340
Points : 2 340
Il n'y a aucun parcours à faire.
Sur ton bouton radio, bouton, peu importe, tu mets comme valeur la valeur de ta cellule, et tu auras donc directement la valeur que tu cherches avec $_POST['nom_bouton']
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/07/2011, 23h32   #5
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
sur le principe voici comment je ferais
suffit de modifier la boucle for
$i sera l'id de l'élément dans la base
le résultat des checkbox correspond aux ids (index ici)
on recupere les champs avec comme nom "<name>$i"

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Array
(
    [index] => Array
        (
            [0] => 0
            [1] => 1
        )
 
    [name0] => un
    [desc0] => 
    [name1] => deux
    [desc1] => 
    [name2] => trois
    [desc2] => 
    [name3] => quatre
    [desc3] => 
    [name4] => cinq
    [desc4] => 
)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
/**
 * @filesource champs.php
 * @version 1.0
 * Date 28 juil. 2011
 */
 
include_once 'template.php';
 
$out = new template('index.tpl');
$out->addVar('title', 'Essai champ');
 
$table = '<table>';
$table.= '<tr>';
$table.= '<td></td>';
$table.= '<td>Nom</td>';
$table.= '<td>Description</td>';
$table.= '</tr>';
 
for($i=0;$i<5;$i++){
	$table.= '<tr>';
	$table.= '<td><input type="checkbox" name="index[]" value="'.$i.'"></td>';
	$table.= '<td><input type="text" name="name'.$i.'"></td>';
	$table.= '<td><input type="text" name="desc'.$i.'"></td>';
	$table.= '</tr>';
}
 
$table.= '/<table>';
 
$out->addVar('body', $table);
 
$out->compile();
$out->display();
 
$out->debug($_POST);
index.tpl
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>{$title}</title>
</head>
<body>
<form action="" method="POST">
{$body}
<input type="submit" value="Envoyer">
</form>
</body>
</html>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
/**
 * @filesource template.php
 * @version 1.0
 * Date 28 juil. 2011
 */
 
class template {
	const PATTERN='({[$]([^}]*)})';
 
	protected $vars = null;
 
	protected $template = null;
 
	protected $content = null;
 
	protected $matches = null;
 
	/**
	 * Construteur
	 * @param unknown_type $template
	 */
	public function __construct($template){
		$this->vars = array();
		$this->template = $template;
	}
 
	/**
	 * Ajoute une variable
	 * @param string $name
	 * @param string $value
	 */
	public function addVar($name, $value){
		$this->vars[$name] = $value;
	}
 
	/**
	 * Compilation
	 */
	public function compile(){
		$content = $this->readFile($this->template);
		$this->searchVars($content);
		foreach ($this->matches[1] as $match){
			$search[] = '({[$]'.$match.'})';
			$replace[] = $this->vars[$match];
		}
		$content = preg_replace($search, $replace, $content);
		$this->content = $content;
	}
 
	/**
	 * recherche les variables du template
	 */
	protected function searchVars($content){
		preg_match_all(self::PATTERN,$content,$this->matches);
	}
 
	/**
	 * Affiche le contenu
	 */
	public function display(){
		echo $this->content;
	}
 
	/**
	 * Lit un fichier
	 * @param string $filename
	 * @return string
	 */
	protected function readFile($filename){
		return file_get_contents($filename);
	}
 
	public function debug($var){
		echo '<pre>'.print_r($var,true).'<pre>';
	}
}
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 09h42   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
je pense que Medina a surtout besoin de connaitre la METHODOLOGIE.

A- FORMULAIRE
1/ tu as un formulaire contenant le tableau complet
2/ Tu affiches ton tableau (table) ligne par ligne. (ca, tu sais faire)
3/ sur chaque ligne, tu affiches :
- SOIT (toutes les lignes contiennent deja des input) :
(ligne-i) | inputi-a | inputi-b | inputi-c | ... | laboxi
- SOIT (on affiche d'abord les données, puis en cochant checkboxi, on change les data en input -> ca, ca peut se faire en javascript) :
(ligne-i) | datai-a | datai-b | datai-c | ... | laboxi
(ligne-i) | inputi-a | inputi-b | inputi-c | ... | laboxi (seules les lignes cochées contiennent des input)
4/ un bouton submit tout à la fin du formulaire
B- TRAITEMENT
1/ on recupere les données
2/ pour chaque ligne dont la checkbox est cochée : on traite la ligne (modification - enregistrement)

la question est : "comment identifier chaque ligne, pour pouvoir en modifier les données ?

Maintenant que la METHODOLOGIE a été définie, passons à la PROGRAMMATION :
L'astuce est d'utiliser des array dans le "name" : name="data1[]" name="data2[]" ..., name="checkbox[]"
On récupère alors des array : $_POST['data1'], $_POST['data2'], ..., $_POST['checkbox'] (chaque $_POST['xxx'] est un array)
On peut alors parcourir ces array, et pour chaque $i où $_POST['labox'][$i] est coché :
on modifie les données $_POST['data1'][$i], $_POST['data2'][$i], ...

Si les données viennent d'une BdD (ce que je suppose), on peut aussi supposé que chaque enregistrement a un ID (auto-increment)
sur chaque ligne du tableau, on peut mettre cet ID dans un <input type="hidden" name="ID[]" value="<?php echo $row['ID']; ?>" />
=> la modification se fera alors sur l'enregistrement dont l'ID est : ID='$_POST['ID'][$i]'

Dans le principe :
A- FORMULAIRE
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!-- FORMULAIRE -->
<form method="post" action="xxxxxxxxxx.php">
<table>
<?php // requete en BdD pour recuperer les donnees a afficher
$query 		= "SELECT * FROM latable;";
$result 	= mysql_query($query) or die('Erreur SQL :<br />'.$query.'<br />'.mysql_error());
while ($row = mysql_fetch_array($result))
{
	// pour chaque ligne :
?>
	<tr>
		<td><input type="text" name="data1[]" value="<?php echo $row['data1']; ?>" /></td>
		<td><input type="text" name="data2[]" value="<?php echo $row['data2']; ?>" /></td>
		<td><input type="text" name="data3[]" value="<?php echo $row['data3']; ?>" /></td>
		<!-- [......] -->
		<td>
			<input type="hidden" name="ID[]" value="<?php echo $row['ID']; ?>" />
			<input type="checkbox" name="labox[]" value="ON" />
		</td>
	</tr>
<?php
} // fin while
?>
	<tr>
		<td colspan="[nombre-de-colonnes]"><input type="submit" name="envoiform" value="Modifier les données" /></td>
	</tr>
</table>
</form>
B- TRAITEMENT
- on récupère d'abord l'array des checkbox,
- on ne traite que les lignes où la checkbox a été cochée.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php // TRAITEMENT
if(isset($_POST['envoiform'])  // (si le formulaire a été envoyé)
{
	// recuperation des checkbox (array !)
	$array_box = $_POST['labox'];
	// on parcours l'array
	foreach($array_box as $key => $val) {
		if($val == 'ON') { // LA CASE EST COCHEE -> on traite les donnees
			// on recupere les donnees (de la ligne correspondante)
			$ID = $_POST['ID'][$key];
			$data1 = $_POST['data1'][$key];
			$data2 = $_POST['data2'][$key];
			$data3 = $_POST['data3'][$key];
			// on protège la BdD contre les injections SQL
			$ID = mysql_real_escape_string($ID);
			$data1 = mysql_real_escape_string($data1);
			$data2 = mysql_real_escape_string($data2);
			$data3 = mysql_real_escape_string($data3);
			// on modifie l'enregistrement en BdD
			$query_update 		= "UPDATE latable SET ".
						" data1 	= '".$data1."', ".
						" data2 	= '".$data2."', ".
						" data3 	= '".$data3."', ".
						// [...]
						" dataxxx 	= '".$dataxxx."' ".
						" WHERE ID 	= '".$ID."';";
			mysql_query($query_update) or die('Erreur SQL :<br />'.$query_update.'<br />'.mysql_error());
		}
	}
	unset($_POST);
}
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/07/2011, 09h49   #7
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 776
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 776
Points : 2 340
Points : 2 340
J'ai du rater une étape parce que poru moi il n'y avait pas besoin d'un parcours
Ca ressemble à quoi ton tableau de données Medina ? On peut avoir un aperçu du code ?
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 15h21   #8
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Merci à tous pour la réponse

jreaux62 j'ai bien compris le principe abordé. Pour ma part, je vais adopter que toutes les lignes contiennent déjà des input.

En ayant d'abord la méthodologie, je perçois mieux le code.

Je vais tester ça d'un instant à l'autre et je vous en tiendrai compte.

Cordialement
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 15h28   #9
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Merci FirePrawn

Pour moi mon tableau de données c'est des <tr> et à chaque <tr>, un <td> renfermant un input contenant un champ d'une base de données extraite.
c'est comme en principe, le tableau élaboré par jreaux62.

Je crois qu'on a besoin d'une boucle pour parcourir toutes les lignes du tableau.


Cordialement
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 06h29   #10
Membre confirmé
 
Avatar de Korri
 
Homme Hugo Vacher
Étudiant
Inscription : mai 2008
Messages : 158
Détails du profil
Informations personnelles :
Nom : Homme Hugo Vacher
Âge : 23
Localisation : Canada

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2008
Messages : 158
Points : 224
Points : 224
madina, une fois que tu à affiché tes données dans un tableau HTML, tu ne peut pas (simplement ne tout cas) les récupérer. Le plus courant pour les modifier et soit de tout enregistrer dans des <input> et de récupérer le tout dans ton script après validation du formulaire. Soit de ré-extraire les donnés de ta base avant de les modifier.

Je m'excuse si ce n'est pas très clair, mais sans plus de détails sur ton code je peut difficilement faire mieux.
Korri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 18h12   #11
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Merci Korri,

En fait la modification des données extraites vers la base de données se fait à quel moment donc ?

Car une fois sur le tableau, je les récupères dans ma page de validation avant de modifier.

C'est pas encore tout à fait clair ta précision.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 18h38   #12
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
jreaux62, En fait la modification ne se fait que sur la première ligne.

Je crois que la récupération et le parcours des tableaux des input pose problème.

ça prends en compte que la première ligne cochée.

Code :
1
2
3
4
5
6
7
8
$array_box = $_POST['labox'];
	// on parcours l'array
	foreach($array_box as $key => $val) {
 
	      if($val =='ON') { // LA CAse est cochée
 
            .........
              .......
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 23h04   #13
Membre confirmé
 
Avatar de Korri
 
Homme Hugo Vacher
Étudiant
Inscription : mai 2008
Messages : 158
Détails du profil
Informations personnelles :
Nom : Homme Hugo Vacher
Âge : 23
Localisation : Canada

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2008
Messages : 158
Points : 224
Points : 224
madina, la modification se fera directement avec un appel à ta base de données, au moment ou tu reçois les données modifiées envoyées par l'utilisateur (typiquement quand tu reçoi en POST les données de ton formulaire que tu aura généré).
Korri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 23h45   #14
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Ok,

Mais c'est justement ce j’ai fais avec l'exemple de jreaux62.
C'est après l’envoi des données par le POST que je fais un update.

mais là jreaux62, la boucle ne prends pas les autres lignes, il s'arrête juste à la première ligne et ne modifie pas les autres lignes même si le checkbox est coché.

?
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 00h31   #15
Membre confirmé
 
Avatar de Korri
 
Homme Hugo Vacher
Étudiant
Inscription : mai 2008
Messages : 158
Détails du profil
Informations personnelles :
Nom : Homme Hugo Vacher
Âge : 23
Localisation : Canada

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2008
Messages : 158
Points : 224
Points : 224
Citation:
Envoyé par madina Voir le message
Ok,

Mais c'est justement ce j’ai fais avec l'exemple de jreaux62.
C'est après l’envoi des données par le POST que je fais un update.

mais là jreaux62, la boucle ne prends pas les autres lignes, il s'arrête juste à la première ligne et ne modifie pas les autres lignes même si le checkbox est coché.

?
Dans l'exemple de jreaux62, il met plusieurs checkbox avec name="labox[]", ce qui te permet d'avoir la liste des cases cochées dans une array();

Il enregistre ensuite chaque ligne dans le foreach qui parcoure chaque élément du tableau, je ne voie pas ce qui ne va pas.

Vérifie bien que tu reçois les bonnes infos en post avec un c'est toujours pratique !
__________________
  • Quand la discutions est terminée, cliquez sur , Pensez y !
  • Vous voyez un message pertinent et de qualité ? Votez pour ce message !
Korri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 10h29   #16
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Korri,

Le problème c'est que quand je coche les autres lignes , il les modifie pas.
Il ne modifie que la première ligne.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 11h15   #17
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
Code :
1
2
$array_box = $_POST['labox'];
print_r($array_box);
print_r va afficher le contenu de l'array : quel résultat donne-t-il ?
Ou comme ca :
Code :
1
2
3
4
5
$array_box = $_POST['labox'];
	// on parcours l'array
	foreach($array_box as $key => $val) {
	      echo 'checkbox n°'.$key.' : '.$val;
	}
Important : quand tu est coincé(e) dans un code, PENSE a tester/vérifier en AFFICHANT les résultats envoyés
- echo ...
- print_r(...);
Bien placés, il peuvent te fournir des indices pour résoudre TOI-MEME les problèmes.

Question en passant ... tu es sûre d'avoir mis ca dans ton formulaire :
Code :
	<input type="checkbox" name="labox[]" value="ON" />
Peux-tu au moins nous mettre TON code ? Ca peut aussi aider .....
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 18h52   #18
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Bonjour,

jreaux62, Bon avec le , il m'affiche que le premier élément du tableau array de "labox[]".

Exemple quand je coche deux lignes, il m'affiche :

Code :
Array ( [0] => ON [1] => ON ) Vous avez modifié 2 lignes
Voilà mon formulaire, mais c'est un fichier .php avec des echo :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
      <link rel="stylesheet" media="screen" type="text/css" title="Design" href="budget_css.css" />
 <title>Modifier une operations</title>
 </head>
   <body >
 <div id="formulaire">  
  <form name="test" action ="modif_echo_op.php"  method="post" >
<fieldset ><legend><b>Compte à modifier</b></legend>
</br>
<table border="1"  style="border-collapse:collapse" align="center"  width=60%>
<tr>
<th>Numéro compte</th>
<th>Libelle</th>
<th>Code_cr</th>
<th>Montant</th>
<th>Date</th>
<th>reference</th>
<th>fournisseur</th>
<th>A modifier</th>
</tr>';
 
include('fonctions.php');
  connect();
$sql='select * from operations';
$sql_result=mysql_query($sql);
while($row_op_mod=mysql_fetch_array($sql_result)) 
{
echo '<tr>  
<td width=10%><input type="text" name="Num_compte[]" size="15" value="'.$row_op_mod['Num_compte'].'" /></td> 
<td><input type="text" name="Libelle[]" size="40"  value="'.$row_op_mod['libelle'].'" /></td> 
<td class="cr"><input type="text" name="Code_cr[]" size="15" value="'.$row_op_mod['Code_cr'].'" /></td>  
<td width=10%><input type="text" name="Montant[]" size="15" value="'.$row_op_mod['montant_realise'].'" /></td>
<td width=10%><input type="text" name="Date[]" size="10"  value="'.$row_op_mod['date_realise'].'" /></td>
<td><input type="text" name="Reference[]"  value="'.$row_op_mod['reference'].'" /></td>
 <td><input type="text" name="Fournisseur[]"  value="'.$row_op_mod['fournisseur'].'" /></td>  
 <td><input type="checkbox" name="labox[]" value="ON" /></td>
<td style="display : none"><input type="hidden" name="ID[]" value="'.$row_op_mod['id_operation'].'" /></td>
</tr>';
}
echo '<tr align="center">
<td colspan="3"><input type="submit" name="envoiform" value="Modifier les données" /></td>
</tr>
</table>
</fieldset>
</form>
</div>
 </body>
</html>';
 
?>
Et voilà le fichier de traitement modif_echo_op.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
$nb_modif=0;
if(isset($_POST['envoiform']))  // (si le formulaire a été envoyé)
{
  if (isset($_POST['labox']))
  {
  include('fonctions.php');
 connect();
// recuperation des checkbox (array !)
$array_box = $_POST['labox'];
print_r($array_box);
// on parcours l'array
foreach($array_box as $key => $val) {
 if($val =='ON') { // LA CASE EST COCHEE -> on traite les donnees
// on recupere les donnees (de la ligne correspondante)
$ID = $_POST['ID'][$key];
$num_compte = $_POST['Num_compte'][$key];
$libelle = $_POST['Libelle'][$key];
$code_cr = $_POST['Code_cr'][$key];
$montant = $_POST['Montant'][$key];
$date_realise = $_POST['Date'][$key];
$reference = $_POST['Reference'][$key];
$fournisseur = $_POST['Fournisseur'][$key];
// on protège la BdD contre les injections SQL
$ID = mysql_real_escape_string($ID);
$num_compte = mysql_real_escape_string($num_compte);
$libelle = mysql_real_escape_string($libelle);
$code_cr = mysql_real_escape_string($code_cr);
$montant = mysql_real_escape_string($montant);
$date_realise = mysql_real_escape_string($date_realise);
$reference = mysql_real_escape_string($reference);
$fournisseur = mysql_real_escape_string($fournisseur);
// on modifie l'enregistrement en BdD
$query_update = 'UPDATE operations SET Num_compte="'.$num_compte.'",
 libelle= "'.$libelle.'", 
 code_cr ="'.$code_cr.'",
montant_realise='.$montant.',
date_realise="'.$date_realise.'",
reference="'.$reference.'",
fournisseur="'.$fournisseur.'"
 WHERE id_operation	= '.$ID.'';
$res_query=mysql_query($query_update) or die('Erreur SQL :<br />'.$query_update.'<br />'.mysql_error());
if (false!==$res_query ){
   $nb_modif=$nb_modif+1;
 
}
 
	}
 
	}
 
 
	}
 
 
	}
 
echo 'Vous avez modifié '.$nb_modif.' lignes';
unset($POST);
 
?>
Voilà, je sais pas pourquoi il m'affiche qu’une partie du tableau array du checkbox ?

Cordialement
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 19h09   #19
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
sais-tu que tu n'es pas obligée de mettre le code html dans du code php ?
Les 2 peuvent cohabiter séparément dans un fichier ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 19h16   #20
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Bonjour,

Oui je sais. Je vais les séparer dans le même fichier mais j’espère pas que ça une influence sur ce resultat de l'affichage du checkox.

je te dis toute site après.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h31.


 
 
 
 
Partenaires

Hébergement Web