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 :

MySQL Update qui ne se fait pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut MySQL Update qui ne se fait pas
    Bonjour.

    Si j'insère dans un champ le mot "éléphant", pas de problème.
    Si je veux le modifier en mettant "l'éléphant", la requete de mise à jour ne se fait pas.
    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
    $monnom = "";
    $id_nom = "";
    $inserer1 = "";
    $afficher1 = "";
    $modifier1 = "";
     
    if (isset($_POST['monnom']))	$monnom = $_POST['monnom'];
    else $monnom = "";
    if (isset($_POST['id_nom']))	$id_nom = $_POST['id_nom'];
    else $id_nom = "";
    //enregistrement dans la table
    if (isset($_POST['inserer1'])) {
    	$monnom = mysql_real_escape_string($monnom);
        	$sql = "INSERT INTO couleurs(id_nom, nom, couleur, DateDebut, champ)
    		VALUES('', '$nom', '$couleur', '$date_debut', '$monnom')";
        		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    		//récupération de l'id pour réafficher
    		$id_nom = mysql_insert_id();
    		$_POST['id_nom'] = $id_nom;
    }
    //modification des données enregistrées
    if (isset($_POST['modifier1'])) {
    	$monnom = mysql_real_escape_string($monnom);
    	$sql = "UPDATE couleurs SET nom = '$nom', couleur = '$couleur', DateDebut = '$date_debut' champ = '$monnom' WHERE id_nom = $id_nom";
    		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    }
    //affichage des données 
    if (isset($_POST['id_nom'])) {
    	$sql = mysql_query("SELECT * FROM couleurs WHERE id_nom = $id_nom");
    	if (mysql_num_rows($sql) > 0){
    		$res = mysql_fetch_array($sql);
    		$id_nom = $res['id_nom'];
    		$monnom = $res['champ'];		
    	}
    }
    ?>
    <br />
    <form name="saisi" method="POST" action="index.php?page=page">
    <input type="text" name="id_nom" value="<?php echo $id_nom; ?>">
    <table border="1" style="margin-left:20px">
    	<tr>
    		<td><input type="text" name="monnom" value="<?php echo $monnom; ?>"></td>
    	</tr>
    	<tr>
    		<td><input type="submit" name="inserer1" value="insérer">
    		<input type="submit" name="afficher1" value="afficher">
    		<input type="submit" name="modifier1" value="modifier"></td>
    	</tr>
    </table>
    </form>
    Je dois être fatigué, je vois pas où est le problème

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Que te donne mysql_error ?

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur SQL !UPDATE couleurs SET nom = '', couleur = '', DateDebut = '--01' champ = 'l'ÉLÉPHANT' WHERE id_nom = 51
    Erreur de syntaxe près de 'champ = 'l'ÉLÉPHANT' WHERE id_nom = 51' à la ligne 1

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Le ' n'est pas échappé. Il faut que tu utilises mysql_real_escape_string sur les chaines que tu insere dans des requetes sql

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    J'ai essayé mais ça marche pas
    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
    //enregistrement dans la table
    if (isset($_POST['inserer1'])) {
    	$monnom = mysql_real_escape_string($monnom);
        	$sql = "INSERT INTO couleurs(id_nom, nom, couleur, DateDebut, champ)
    		VALUES('', '$nom', '$couleur', '$date_debut', '$monnom')";
        		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    		//récupération de l'id pour réafficher
    		$id_nom = mysql_insert_id();
    		$_POST['id_nom'] = $id_nom;
    }
    //modification des données enregistrées
    if (isset($_POST['modifier1'])) {
    	$monnom = mysql_real_escape_string($monnom);
    	$sql = "UPDATE couleurs SET nom = '$nom', couleur = '$couleur', DateDebut = '$date_debut' champ = '$monnom' WHERE id_nom = $id_nom";
    		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Tu as oublié une , avant champ.

    Donne les erreur sql a chaque fois ca sera plus simple.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Pour compléter ce que dit deadalnix, il faut savoir que lorsque MySQL dit :
    'Erreur xxx près de AAA', l'erreur est à chercher juste avant AAA dans la requête.

    Effectivement il manque une virgule avant champ dans ta requête.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  8. #8
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci.

    Mais j'ai encore un problème.
    En test ça marche bien mais quand j'adapte ça à mon projet la modif se fait bien mais voilà ce que j'ai à l'affichage dans mes input
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nom * :  L\'ÉLÉPHANT BLEU  
    Adresse * :    10 rue de abreuvoir\r\nZI des blanches
    Pourtant je crois avoir adopter le même principe de code
    fichier fonctions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function enregistrer_etablist($etablist, $etablist_nom, $etablist_adresse, $etablist_cp, $etablist_ville, $etablist_tel, $etablist_fax, $etablist_email, $etablist_effectif) 
    {
    	$etablist = mysql_real_escape_string($etablist);
     	$etablist_nom = mysql_real_escape_string($etablist_nom);
    ...
        	$sql = "INSERT INTO etablissement(id_etablist, type_etablist, nom_etablist, adresse_etablist, cp_etablist, ville_etablist, tel_etablist, fax_etablist, email_etablist, effectif_etablist) 
    		VALUES('','$etablist','$etablist_nom','$etablist_adresse','$etablist_cp','$etablist_ville','$etablist_tel','$etablist_fax','$etablist_email','$etablist_effectif')"; 
        	// insertion du formulaire dans la table 
        	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    }
    fichier dossier_candidature.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
    30
    31
    32
    33
    34
    35
    36
    37
    $etablist_nom = "";
    if (isset($_POST['etablist_nom']))		$etablist_nom = strtoupper($_POST['etablist_nom']);
    else $etablist_nom = "";
    if (empty($etablist_nom))			$message11 = "Page 1, le nom de l'établissement n'est pas renseigné.";
    
    $fonction ="";
    //clic sur le bouton "enregistrer les données"
    if (isset($_POST['valider'])){
    	$fonction = $_POST['valider'];
    	if (!empty($message1))		echo $message1;
    	else if (!empty($message11))	echo $message11;
    	else 	enregistrer_etablist($etablist, $etablist_nom, $etablist_adresse, $etablist_cp, $etablist_ville, $etablist_tel, $etablist_fax, $etablist_email, $etablist_effectif);
    		$id_etablist = mysql_insert_id();
    		$id_etablissement = $id_etablist;
    }
    //clic sur le bouton "valider les modifications"
    if (isset($_POST['modifier'])){
    	$fonction = $_POST['modifier'];
    	if (!empty($message1))		echo $message1;
    	else if (!empty($message11))	echo $message11;
    	else
    		$etablist_nom = mysql_real_escape_string($etablist_nom);
    		$etablist_adresse = mysql_real_escape_string($etablist_adresse);
    		$etablist_ville = mysql_real_escape_string($etablist_ville);
    		$sql = "UPDATE etablissement SET type_etablist = '$etablist' , nom_etablist = '$etablist_nom' , adresse_etablist = '$etablist_adresse' , cp_etablist = '$etablist_cp' , ville_etablist = '$etablist_ville' , tel_etablist = '$etablist_tel' , fax_etablist = '$etablist_fax' , email_etablist = '$etablist_email' , effectif_etablist = '$etablist_effectif' WHERE id_etablist = $id_etablissement"; 
    		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    //affichage ou réaffichage
    if (isset($id_etablist)){
    	$sql = mysql_query("SELECT * FROM etablissement WHERE id_etablist = $id_etablissement");
    	if (mysql_num_rows($sql) > 0){
    		$res = mysql_fetch_array($sql);
    		$id_etablist_table = $res['id_etablist'];
    		$etablist = stripslashes(htmlentities(trim($res['type_etablist'])));
    //que je mette l'un où l'autre le résultat est le même
    //		$etablist_nom = $res['nom_etablist'];
    		$etablist_nom = stripslashes(htmlentities(trim($res['nom_etablist'])));
    }
    fichier formulaire_candidature.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td>&nbsp;&nbsp;<input type="text" name="etablist_nom" value="<?php echo $etablist_nom; ?>" style="width:400px; font-size:13px" />
    Est ce que vous voyez où est le problème ?
    Moi je comprends pas.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    C'est les magic quote qui te font des blagues je penses.

  10. #10
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    J'ai pensé à ça mais après avoir fait des recherches sur le site j'ai vu qu'il ne fallait pas modifier les valeurs. ils à off

  11. #11
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Bonjour.

    Quelqu'un peut m'aider SVP.
    Je ne comprends pas pourquoi dans l'input j'ai L\'ÉLÉPHANT alors que dans la table j'ai L'ÉLÉPHANT
    J'utilise $etablist_nom = mysql_real_escape_string($etablist_nom); pour mes requetes INSERT INTO et UPDATE
    et $etablist_nom = stripslashes(htmlentities(trim($res['nom_etablist']))); dans la requete SELECT
    et dans le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="etablist_nom" value="<?php echo $etablist_nom; ?>" />
    Merci

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    code généré ?

  13. #13
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    comme je l'ai dit la bdd est correcte, le champ est L'ÉLÉPHANT , c'est l'affichage dans input type texte qui affiche L\'ÉLÉPHANT .

    Je fini par me demander si c'est pas la structure de mon fichier dossier_candidature.php qui ne pose pas problème.

    J'ai fait un fichier dossier_candidature.php pour la saisie et un pour les modifications, idem pour le formulaire, sans avoir modifié le code, et ça marche.
    mais je préferai avoir que 2 fichier au lieu de 4

  14. #14
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Je m'en suis sorti mais je ne suis pas satisfait

    Merci quand même pour l'aide

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

Discussions similaires

  1. UPDATE sur multiligne qui ne se fait pas
    Par Jiyuu dans le forum Langage SQL
    Réponses: 12
    Dernier message: 16/04/2015, 16h12
  2. [PDO] UPDATE qui ne se fait pas
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/02/2015, 23h57
  3. [Ajax.NET]UpdataPanel.Update() qui ne se fait pas
    Par rad_hass dans le forum ASP.NET
    Réponses: 4
    Dernier message: 12/03/2009, 09h27
  4. [MySQL] Mysql Update qui ne fonctionne pas
    Par panoramix2 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/03/2009, 16h05
  5. [MySQL] UPDATE qui ne se fait pas
    Par VoteForMe dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/09/2008, 13h42

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