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 :

[Conception] Mettre a jour tout les champs d'un table lors d'un update


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Points : 38
    Points
    38
    Par défaut [Conception] Mettre a jour tout les champs d'un table lors d'un update
    Bonjour, Je suis un peu ennuyé pour mettre a jour une table.
    Dans ma page tri.php, j'affiche chaque PID en fonction de chaque nom , avec la possibilité de modifier le PID de chaque nom:

    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
    24
    25
    26
    27
    28
    29
    <?php
    echo '<form method="post" action="insert_tri.php">';
    echo '<table width="505"  border="1">';
     
    // on se connecte à MySQL
    $db = mysql_connect('localhost', 'root', '');
     
    // on sélectionne la base
    mysql_select_db('phplistdb',$db);
     
    // on crée la requête SQL
    $sql = 'SELECT DISTINCT name,pid FROM phplist_listattr_marque';
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
        {
        // on affiche les informations de l'enregistrement en cours
     
        echo '<tr height="41"><td>Marque : '.$data['name'].'</td>';
    	echo '<td>PID : <input type="text" name="pid" value="'. $data['pid'] . '" size="40"></td></tr>';
        }
    	echo '</table>';
    	echo '<br><br><input type=submit name="subscribe" value="Subscribe">';
    	echo '</form>';
     
    ?>



    dans insert_tri.php, j'aimerai recuperer tout les noms et PID, et les inserer dans la table. Il me dit que les infos sont bien ajoutées, mais rien de modifié dans la base.

    insert_tri.php :

    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
    24
    25
    26
    27
    28
    29
    <?php
    // On commence par récupérer les champs
    if(isset($_POST['name']))      $name=$_POST['name'];
    else      $name="";
     
    if(isset($_POST['pid']))      $pid=$_POST['pid'];
    else      $pid="";
     
    echo  'nom :'.$name.'<br><br>';
    echo 'pid :'.$pid.'<br><br>' ;
     
     
    // connexion à la base
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
    mysql_select_db('phplistdb',$db)  or die('Erreur de selection '.mysql_error());
     
        // on écrit la requête sql
        $sql = "UPDATE  phplist_listattr_marque SET pid ='$pid' WHERE name='$name' ";
     
        // on insère les informations du formulaire dans la table
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
        // on affiche le résultat pour le visiteur
        echo 'Vos infos on été ajoutées.';
     
        mysql_close();  // on ferme la connexion
     
    ?>

    Quand je fais un UPDATE phplist_listattr_marque SET pid ='4' WHERE name='voiture' direct dans PhpMyAdmin par exemple, tout les champs voiture sont bien modifiés.
    Voyez vous ce qui ne va pas dans mon code ? j'ai l'impression que l'ensemble des noms et PID ne sont pas passés a insert_tri.php, car dans le echo il maffiche juste PID = 1...

    Auriez vous une idée ? Merci d'avance de votre aide.

  2. #2
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    fait un echo $sql; pour voir ce que ca donne

  3. #3
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Dans tri.php je ne vois pas dans ton formulaire le champ 'name'. Or tu récupères cette variable dans ton autre fichier ($_POST['name']) et tu t'en sert comme condition dans ta requête (...WHERE name = '.$name.'
    Est-ce normal? Peut-être n'as tu pas mis tout ton code?

    Dans tri.php à un moment tu écris:
    value="'. $data['pid'] . '"
    Je pense que les espaces à coté des points sont en trop. Il vaudrait mieux écrire:
    value="'.$data['pid'].'"

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Points : 38
    Points
    38
    Par défaut
    wep nico, je viens de modif, la pour info un echo $sql m'affiche bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nom :abc
    pid :1
     
    UPDATE phplist_listattr_marque SET pid ='1' WHERE name='abc' 
    Vos infos on été ajoutées.
    Voila et en fait je voudrai que cette mise a jour se fasse sur TOUT les noms de la table ? pourriez vous me dire quel type de code je dois inserer pour faire boucler (je pense) la recuperation des valeurs et la requete ? Merci d'avance de votre precieuse aide.

  5. #5
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Y'a un truc que je saisi pas trop...Si tu fais un formulaire dans lequel tu entres la valeur à mettre à jour, tu ne peux pas mettre à jours toutes les lignes de ta table, à moins d'utiliser la même valeur pour toutes les lignes...
    Et si inversement tu veux modifier chaque ligne en fonction d'un valeur saisie, tu es obligé de le faire ligne par ligne (à moins d'avoir l'info à insérée dans une autre table ou dans un fichier).

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Points : 38
    Points
    38
    Par défaut
    bien dans le code generé par le fichier php, j'ai ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type=hidden name="name" value="A.C.M"> 
    A.C.M
    <input type="text" name="pid" value="1" size="20">
    qui se repete pour chaque nom. Si je modifie la valeur de plusieurs PID puis valide, il n'est pas possible de mettre a jour toutes les valeurs qui etaient presentes dans le form ?

  7. #7
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Points : 66
    Points
    66
    Par défaut
    Est-ce que tu peux modifier seulement un PID à la fois, ou tu fais un POST de plusieurs champs ?

    Si tu peux seulement modifier un PID à la fois, tu dois fermer ton form pour chaque PID, si tu POST toute le form, et qu'il y a plusieurs input avec le nom "pid", et bien tu vas avoir un problème..

    Je ne sais pas si tu comprends ce que je veux dire, ou peut-être que c'est moi qui comprend mal ton problème !

Discussions similaires

  1. [AC-2003] mettre a jour toutes les valeurs d'un colonne dans une zone de liste
    Par yieiyiei dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/04/2015, 21h41
  2. Mettre à jour toutes les lignes d'une table
    Par huzard dans le forum MySQL
    Réponses: 6
    Dernier message: 25/02/2015, 19h05
  3. Mettre à jour toutes les colonnes d'une table avec MERGE INTO
    Par Andre.lissarrague dans le forum SQL
    Réponses: 9
    Dernier message: 10/12/2013, 10h13
  4. Effacer tout les champs d'une table
    Par rrbenez dans le forum C++Builder
    Réponses: 1
    Dernier message: 10/04/2008, 20h42
  5. Utilisation de Tout les champs d'une table
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/07/2006, 20h55

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