Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 27/06/2006, 11h00   #1
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
Par défaut [SQL] Modification de champs d'un tableau dynamique dans une base de données

Bonjour,

J'ai déjà fait un post car j'avais des soucis pour insérer. Maintenant l'insertion marche mais je n'arrive pas à modifier...

J'ai une page modif où il ya les champs à modifier. Voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
<?php 
$i = 0;
$nb = sizeof($row_interventions['motif_intervention']);
 
do{
 
?>
<tr>
 
  <td><input type="text" name="motif_intervention[$i]" maxlength="60" size="30" value="<?php echo $row_interventions['motif_intervention'];?>"></td>
  <td><textarea name="description_intervention[$i]" cols="30" rows="4"><?php echo $row_interventions['description_intervention'];?></textarea></td>
 
  </tr>
 <?php 
     $i++;
 
}while($row_interventions = mysql_fetch_array($interventions));
 ?>
 
<input type="hidden" name="MM_update" value="form1">
<input type="submit" name="Submit" value="Valider">
Ce code est dans un formulaire en méthode post.

La requête pour modifier les champs dans la base de données est située dans une autre page. Voici le code de ma requête sql :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
 
$i = 0;
$nb = sizeof($_POST['motif_intervention']);
while ($i < $nb)
{
	echo $i;
	echo $_POST['motif_intervention'][$i];
	$updateSQL2 = sprintf("UPDATE detail_intervention SET motif_intervention=%s, description_intervention=%s WHERE id_intervention = '".$_POST['id_intervention']."'",
 
					   GetSQLValueString($_POST['motif_intervention'][$i], "text"),
GetSQLValueString($_POST['description_intervention'][$i], "text")
                      );
 
 
$Result2 = mysql_query($updateSQL2, $aloa) or die(mysql_error());
 
$i ++;
 
}
Le problème est que quand je modifie, il vide mes champs existant et me met les messages d'erreurs suivant :

Notice: Undefined offset: 0 in c:\program files\easyphp1-8\www\site aloa\confirm_modif.php on line 286

Si quelqu'un voit d'où peut venir cette erreur...
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h05   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Si on pouvait savoir quelle ligne est la #286 ça pourrait déjà avancer un chouilla
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h07   #3
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
Il met ce message d'erreur pour toutes les lignes où il y a $_POST['motif_intervention'][$i] ou $_POST['description_intervention'][$i].
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h09   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Tu fais bien un $row_interventions = mysql_fetch_array($interventions); avant ta boucle do...while ?
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h12   #5
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
oui, j'ai une requête comme ça :

$query_interventions = "SELECT ..."
$interventions = mysql_query($query_interventions, $aloa) or die(mysql_error());
$row_interventions = mysql_fetch_array($interventions);
$totalRows_interventions = mysql_num_rows($interventions);
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h21   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Si tu fais un

Code :
echo $_POST['motif_intervention'];
qu'est-ce que ça donne ?
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h23   #7
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
ça me donne Array
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h27   #8
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Arf excuse moi c'est un var_dump qu'il faut faire.

Code :
var_dump($_POST['motif_intervention']);
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h31   #9
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
Ca me donne ça :

Code :
1
2
 
array(1) { ["$i"]=>  string(23) "Remplacement du routeur" }
"Remplacement du routeur" est ce que j'ai saisi dans le deuxième champ motif_intervention.
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h40   #10
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Dans ton formulaire essaie en enlevant $i lors de l'insertion des tableaux.

Comme ça :

Code :
<td><input type="text" name="motif_intervention[]" maxlength="60" size="30" value="<?php echo $row_interventions['motif_intervention'];?>"></td>
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 11h48   #11
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
Maintenant il me met plus de message d'erreur mais le problème c'est qu'il recopie il remplace la deuxième ligne du tableau par la première. J'ai donc deux ligne identiques...

Le var_dump($_POST['motif_intervention']); donne :

Code :
1
2
3
 
 
array(2) { [0]=>  string(23) "Remplacement du routeur" [1]=>  string(19) "Problèmes de réseau" } 0Remplacement du routeurarray(2) { [0]=>  string(23) "Remplacement du routeur" [1]=>  string(19) "Problèmes de réseau" } 1Problèmes de réseau
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 12h08   #12
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Tu l'as aussi fait pour l'autre tableau ?

Peux-tu remettre le code de ton premier post mis à jour stp.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 12h19   #13
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
Voilà le code modifié :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
<?php
do{
?>
<tr>
 
<td><input type="text" name="motif_intervention[]" maxlength="60" size="30" value="<?php echo $row_interventions['motif_intervention'];?>"></td>
<td><textarea name="description_intervention[]" cols="30" rows="4"><?php echo $row_interventions['description_intervention'];?></textarea></td>
</tr>
 
<?php 
}while($row_interventions = mysql_fetch_array($interventions));
?>
Et le code de la requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
$i = 0;
$nb = sizeof($_POST['motif_intervention']);
while ($i < $nb)
{
	var_dump($_POST['motif_intervention']);
	$motif = addslashes($_POST['motif_intervention'][$i]);
	$description = addslashes($_POST['description_intervention'][$i]);
 
	$updateSQL2 = sprintf("UPDATE detail_intervention SET motif_intervention=%s, description_intervention=%s WHERE id_intervention = '".$_POST['id_intervention']."'",
 
  GetSQLValueString($motif, "text"),
  GetSQLValueString($description, "text")
                 );
 
 
$Result2 = mysql_query($updateSQL2, $aloa) or die(mysql_error());
 
$i ++;
 
}
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 12h26   #14
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Ah Ok je comprens mieux le résultat du var_dump qui m'a fait peur, peux-tu le sortir de la boucle while et donner lé résultat stp (et dire si c'est bien ce que tu attends, en fait j'ai pas bien compris où était le nouvueau problème).

Code :
1
2
3
4
5
$i = 0;
$nb = sizeof($_POST['motif_intervention']);
var_dump($_POST['motif_intervention']);
while ($i < $nb)
{
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 12h32   #15
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
Voilà ce que donne le vardump :

Code :
1
2
3
 
 
array(2) { [0]=>  string(19) "Problèmes de réseau" [1]=>  string(23) "Remplacement du routeur" }
"Problèmes de réseau" est ce que je viens de modifier dans le champ motif de la première ligne.
"Remplacement du routeur" est ce qui est était dans le champ motif de la deuxième ligne.

Mon problème est qu'il met le motif de la deuxième ligne dans celui de la première ligne. Il recopie la dernière ligne du tableau pour remplacer les autres lignes...

Je ne comprends pas pourquoi.
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 13h31   #16
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Mon problème est qu'il met le motif de la deuxième ligne dans celui de la première ligne. Il recopie la dernière ligne du tableau pour remplacer les autres lignes...
Ou ça ? Dans ton formulaire ? Au moment du UPDATE ? C'est là où je comprends pas le nouveau problème...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 14h04   #17
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
Ben il change ça dans la base de données, juste après le update
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 14h22   #18
Membre à l'essai
 
Inscription : juin 2006
Messages : 94
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 94
Points : 22
Points : 22
En fait j'ai trouvé.

J'ai un rajouté dans le formulaire, dans la boucle :

Code :
1
2
3
 
 
 <input type="hidden" name="id_detail[]" value="<?php echo $row_interventions['id_detail'];?>">
Et j'ai rajouté une condition dans ma requête :

Code :
1
2
3
 
 
id_detail = '".$_POST['id_detail'][$i]."'
Merci pour ton aide, tu m'as bien aidé!
loreleï85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 16h55   #19
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Il en va sans peine.



Bon courage.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara 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 23h47.


 
 
 
 
Partenaires

Hébergement Web