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

Langage SQL Discussion :

Problème d'UPDATE : tous les enregistrements ne passent pas


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut Problème d'UPDATE : tous les enregistrements ne passent pas
    Bonjour à tous !

    Comme je viens de l'annoncer dans l'intitulé, je souhaite faire des enregistrements dans ma bdd via un update, mais certains champs disparaissent.

    Je m'explique :
    Lors de l'update, seuls les champs contenance_boisson01 et ID semblent passer. Les champs nom_boisson et prix_boissons01 sont effacés et aucun update ne se fait à leur niveau !!!

    Voici mon code pour que vous puissiez m'aider :

    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
    50
    51
    52
    53
    54
    55
    56
    57
     
    $<div>
    $<?php
    $if (!isset($_POST['envoyer'])) {
            $chargeModifSofts = mysql_query('SELECT * FROM `boissons` WHERE `famille_boisson` = "softs"');
    	while ($afficheModifSofts = mysql_fetch_array($chargeModifSofts)) {
    ?>
    	<form method="post" action="#">
    		<input type="hidden" name="IDForm" value="<?php echo $afficheModifSofts['ID']; ?>" />
    		<table style="margin: 10px; width: auto;">
    			<tr>
    				<td style="padding: 5px; text-align: right;">
    				        Nom du Soft : 
    			        </td>
    			        <td style="padding: 5px;">
    				        <input type="text" name="nomSoft" value="<?php echo $afficheModifSofts['nom_boisson']; ?>" />
    			        </td>
    			</tr>
    			<tr>
    				<td style="padding: 5px; text-align: right;">
    					Contenance du Soft : 
    				</td>
    				<td style="padding: 5px;">
    					<input type="text" name="contenanceSoft" value="<?php echo $afficheModifSofts['contenance_boisson01']; ?>" />
    				</td>
    			</tr>
    			<tr>
    				<td style="padding: 5px; text-align: right;">
    					Prix du Soft : 
    				</td>
    				<td style="padding: 5px;">
    					<input type="text" name="prixSoft" value="<?php echo $afficheModifSofts['prix_boisson01']; ?>" />
    				</td>
    			</tr>
    			<tr>
    				<td style="padding: 5px;" colspan="2">
    					<input type="submit" name="envoyer" value="Modifier" style="background-color: #510003; border: 1px solid #ffffff; color: #ffffff;" />
    				</td>
    			</tr>
    		</table>
    	</form>
    	<?php
    	}
    }
    	else {
    	if (isset($_POST['envoyer'])) {
    		$nomSoft = mysql_real_escape_string(htmlentities($_POST['nomSoft']));
    		$contenanceSoft = mysql_real_escape_string(htmlentities($_POST['contenanceSoft']));
    		$prixSoft = mysql_real_escape_string(htmlentities($_POST['prixSoft']));
    		$IDForm = mysql_real_escape_string(htmlentities($_POST['IDForm']));
    		$updateModifSofts = mysql_query("UPDATE `boissons` SET `nom_boisson` = '$nomSoft', `contenance_boisson01` = '$contenanceSoft', `prix_boisson01` = '$prixSoft' WHERE `ID` = '$IDForm'") or die (mysql_error());
    		echo 'Tout Bon !';
    		echo $nomSoft, $contenanceSoft, $prixSoft;
    	}
    }
    ?>
    </div>
    Merci d'avance à tous ceux qui voudront bien se pencher sur cette énigme !

  2. #2
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    Afin de s'assurer que le problème ne vient pas du php, je vous conseille de tester directement votre requête UPDATE sur la BDD.

    Il est également de bon ton d'isoler seulement le code SQL dans un forum dédié au langage SQL...

    Cordialement,

    Arkhena

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Bonjour et merci Arkhena !

    Tout d'abord, désolé pour tout le code que j'ai placé. Il aurait effectivement été plus simple de ne placer que la requête !

    Pour ce qui est de la requête, je l'ai testée sous phpmyadmin et elle fonctionne lorsque je remplace les variables par les valeurs en dur !

    C'est d'ailleurs pour cela que je ne comprends absolument pas que mon upadate ne fonctionne pas pour tous les champs dans mon code.

    Mon incompréhension est totale !!! D'autant que l'echo sur les variables (voir code ci-dessus) fonctionne bien : les valeurs s'affichent bien...

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    J'extrais la requête de ton code et je la mets en forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE `boissons` 
    SET `nom_boisson` = '$nomSoft', 
      `contenance_boisson01` = '$contenanceSoft', 
      `prix_boisson01` = '$prixSoft' 
    WHERE `ID` = '$IDForm'
    ID n'est-il pas un entier auto-incrémenté ? ==> inutile de lui passer une valeur entre apostrophes.
    prix_boisson01 n'est-il pas un nombre ? ==> Idem !

    Fait un echo de la requête avant de l'envoyer au serveur pour vérifier son texte exact.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Merci à toi aussi, CinePhil, de m'aider dans ma quête !

    Je viens de faire l'echo sur ma requête et il me ressort bien les valeurs que je rentre dans mon formulaire !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE `boissons` 
    SET `nom_boisson` = 'Coca-Cola', `contenance_boisson01` = '33cl', `prix_boisson01` = '3,00' 
    WHERE `ID` = 20
    Tous mes champs de bdd sont des varchar, sauf comme tu l'as remarqué, l'ID qui lui est bien un entier en auto-incrément. J'ai donc enlevé les apostrophes autour de la variable $IDForm.

    L'incompréhension demeure quant à l'update !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Petite précision :
    Le même phénomène étrange continue de se produire ; à savoir que nom_boisson et prix_boisson01 ne sont pas updatés, contrairement à contenance_boisson01 dans l'ID concerné !


Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 09h33
  2. update count pour tous les enregistrements
    Par gloppy dans le forum Requêtes
    Réponses: 0
    Dernier message: 30/03/2011, 11h06
  3. état avec tous les enregistrements d'un formulaire
    Par Arkalys dans le forum Access
    Réponses: 9
    Dernier message: 30/09/2005, 11h45
  4. Afficher tous les enregistrements d'une table
    Par bertrand_declerck dans le forum QuickReport
    Réponses: 2
    Dernier message: 08/07/2005, 08h35
  5. faire somme de tous les enregistrements identiques
    Par Keraccess dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/07/2005, 11h03

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