IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Modification de champs d'un tableau dynamique dans une base de données


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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)

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    Il met ce message d'erreur pour toutes les lignes où il y a $_POST['motif_intervention'][$i] ou $_POST['description_intervention'][$i].

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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)

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    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);

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Si tu fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  7. #7
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    ça me donne Array

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Arf excuse moi c'est un var_dump qu'il faut faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  9. #9
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    Ca me donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Dans ton formulaire essaie en enlevant $i lors de l'insertion des tableaux.

    Comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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)

  11. #11
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  12. #12
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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)

  13. #13
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    Voilà le code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ++;
     
    }

  14. #14
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  15. #15
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    Voilà ce que donne le vardump :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  16. #16
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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)

  17. #17
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    Ben il change ça dans la base de données, juste après le update

  18. #18
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    En fait j'ai trouvé.

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    id_detail = '".$_POST['id_detail'][$i]."'
    Merci pour ton aide, tu m'as bien aidé!

  19. #19
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    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)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/06/2012, 17h19
  2. [Conception] Insertion de champs d'un tableau dynamique dans une base de données
    Par loreleï85 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 12/05/2011, 14h39
  3. Réponses: 2
    Dernier message: 21/08/2009, 16h36
  4. Réponses: 1
    Dernier message: 23/06/2006, 11h19
  5. Réponses: 9
    Dernier message: 22/06/2006, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo