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 :

Mise à jour de bdd via UPDATE SET WHERE


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Perso
    Inscrit en
    Mars 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Mars 2022
    Messages : 2
    Par défaut Mise à jour de bdd via UPDATE SET WHERE
    Bonjour,
    pour mon site perso de course à pied, je suis en train de créer une page pour modifier les informations d'une ligne de bdd.

    Je n'arrive pas à modifier la ligne via l'ID récupéré avec GET sur la page précédente, et qui fonctionne bien (vérifié avec echo) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id_mod=$_GET["id_mod"];
    echo $id_mod;
    En fixant l'ID à la main, ça fonctionne parfaitement (exemple pour modifier la date seulement) :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <tr>
    <th>Date</th>
    <td align=center><?php echo $val['Date']; ?></td>
    <td align=center><input type="date" name="New_Date"></td>
    <td align=center><input type="submit" name="valider_date" value="Changer la date"/></td>
    <?php
                    if (isset ($_POST['valider_date'])){
                                    $New_Date=$_POST['New_Date'];
                                    mysqli_query($link, "UPDATE Table_Sessions SET Date = '$New_Date' WHERE ID=1012");
                                    }
    ?>
    </tr>

    Par contre, en modifiant la requête avec l'ID récupéré, la MAJ ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query($link, "UPDATE Table_Sessions SET Date = '$New_Date' WHERE ID='$id_mod'")
    J'ai essayé des ', des ", avec les . avant après, j'ai l'impression que la variable n'est pas reconnue dans la requête.

    Et pourtant, l'affichage via le même type de requête fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $a_modifier = mysqli_query($link, "SELECT ID, Date, Distance, Duree, VMA, FC_moy, FC_max, DP, DM, Remarques, 
    Int_Ext, Baskets, Type_Seance, t_10km, t_semi, Place, Participants, Place_H, Participants_H, 
    Categorie, Place_Cat, Participants_Cat FROM Table_Sessions WHERE ID='$id_mod'");
    Si vous pouviez m'aiguiller, ce serait sympa, je tourne un peu en rond...

    Merci

    David

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 427
    Par défaut
    Bonjour,
    Je ne connais pas PHP, mais je pense que tu as oublié de déclarer le paramètre pour l'id, comme tu l'as fait pour la date (new_date ligne 8).

    Tatayo.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Perso
    Inscrit en
    Mars 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Mars 2022
    Messages : 2
    Par défaut
    Merci pour ta réponse.
    Je pense l'avoir bien défini étant donné que j'arrive à le faire afficher via echo. Qu'entends-tu par là ?

    Ce qui marche (puisque j'arrive à afficher les infos de la table) :
    - ligne 4 : echo $id_mod
    - ligne 10 : WHERE ID='$id_mod'

    Nom : Capture1.JPG
Affichages : 310
Taille : 35,6 Ko

    Ce qui ne marche pas après la modif de la date et appui sur le bouton (alors que ça marche en mettant WHERE ID=1012) :
    - ligne 46 : WHERE ID='$id_mod'

    Nom : Capture2.JPG
Affichages : 297
Taille : 43,1 Ko

    Je mets le code complet :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
     
    $id_mod=$_GET["id_mod"];
    echo $id_mod;
    //connexion à la base de données
    include ("connexion.php");
     
    $a_modifier = mysqli_query($link, "SELECT ID, Date, Distance, Duree, VMA, FC_moy, FC_max, DP, DM, Remarques, 
    Int_Ext, Baskets, Type_Seance, t_10km, t_semi, Place, Participants, Place_H, Participants_H, 
    Categorie, Place_Cat, Participants_Cat FROM Table_Sessions WHERE ID='$id_mod'");
     
    $val = mysqli_fetch_array($a_modifier);
     
    ?>
     
     
    <form name="modifier" method="post" action="modifier.php" accept-charset="UTF-8">
     <table border="1">
    	<caption ></caption>
    	<colgroup>
        	<col span="1" width="200" />
    		<col span="1" width="120" />
        </colgroup>
    	<thead>
    		<tr>
    			<th>Champ</th>
    			<th>Valeur</th>
    			<th>Nouvelle valeur</th>
    			<th>Validation</th>
    		</tr>
    	</thead>
    	<tbody>
     
    		<tr>
    			<th>ID</th>
    			<td align=center><?php echo $val['ID']; ?></td>
    		</tr>
    		<tr>
    			<th>Date</th>
    			<td align=center><?php echo $val['Date']; ?></td>
    			<td align=center><input type="date" name="New_Date"></td>
    			<td align=center><input type="submit" name="valider_date" value="Changer la date"/></td>
    			<?php
    				if (isset ($_POST['valider_date'])){
    					$New_Date=$_POST['New_Date'];
    					mysqli_query($link, "UPDATE Table_Sessions SET Date = '$New_Date' WHERE ID='$id_mod'");
    				}
    			?>
    		</tr>

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    tatayo parlait de la 2e requête, quand vous cliquez sur le bouton.

    utilisez l'onglet "Réseau" de la console de développement de votre navigateur pour voir ce qui est envoyé.
    par exemple avec Firefox, faites Ctrl + Maj + E
    https://developer.mozilla.org/fr/doc...ur_r%C3%A9seau

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Hum, je pense comprendre.

    Chaque bouton, correspond à un <input type="submit" > ?

    Mais vous ne disposez que d'une seule fois la balise <form name="modifier" method="post" action="modifier.php" accept-charset="UTF-8"> ?

Discussions similaires

  1. Mise à jour entrée BDD fonction UPDATE
    Par Lechette dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/11/2015, 19h22
  2. Réponses: 3
    Dernier message: 11/01/2013, 14h28
  3. Problème de mise à jour (UPDATE)
    Par rvaouate dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/10/2008, 12h10
  4. Réponses: 3
    Dernier message: 15/09/2008, 08h32
  5. problème de mise à jour via un trigger
    Par clement42 dans le forum Sybase
    Réponses: 4
    Dernier message: 17/01/2007, 10h29

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