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 :

Probleme entre INSERT et UPDATE [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut Probleme entre INSERT et UPDATE
    Bonjour à tous,

    Completement nouveau sur ce forum, je croise les doigts pour trouver réponses à mes problèmes qui me rendent fou depuis 2 semaines...

    Ayant quelques petites connaissances en php/sql, elles ne sont malheureusement pas suffisantes..

    Mon probleme parait simple mais je tourne en rond, peut etre aurez vous plus d'idées que moi...

    Voici mon probleme:
    Dans la partie admin de mon site, je cherche à :
    Soit AJOUTER une nouvelle entrée
    Soit MODIFIER une entrée existante
    Soit SUPPRIMER une entrée existante

    Le script rentre dans toutes les boucles correctement mais le probleme se passe dans la boucle AJOUTER.

    Mon script dans la boucle AJOUTER:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO `encheres` ( `id` , `titre` , `comment` , `prix`, `date`, `lien`, `url_lien`, `picture`, `publier` ) VALUES ('', '".addslashes($_POST['titre'])."', '".addslashes($_POST['comment'])."' , '".addslashes($_POST['prix'])."' , '".$date."' , '".addslashes($_POST['lien'])."' , '".addslashes($_POST['url_lien'])."' , '".$_POST['id'].$date.$_FILES['picture']['name']."',1)";
    Mon script dans la boucle MODIFIER:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $query = "	UPDATE `encheres` 
    				SET	`titre` = '".addslashes($_POST['titre'])."',
    					`date` = '".$date."',
    					`prix` = '".addslashes($_POST['prix'])."',
    					`lien` = '".addslashes($_POST['lien'])."',
    					`url_lien` = '".addslashes($_POST['url_lien'])."',
    					`comment` = '".addslashes($_POST['comment'])."',
    					`publier` = '".$publier."'
    				WHERE `id` = '".$_POST['id_modif']."' LIMIT 1 ;";

    Le problème est situé au niveau des ' que le script n’enlève pas dans la commande INSERT malgré les "addslashes" alors qu'il le fait dans la commande UPDATE.
    Ce qui est le plus fou c'est que juste avant d'effectuer les commandes, je fais un echo des $query et les ' sont protégés par des \....
    Ca me rend fou....

    Pouvez vous m'aider ?

    J'espère avoir été clair....

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton problème ne vient surement pas de la mais pour mysql, il vaut mieux utiliser mysql_real_escape_string() que addslashes().

    Que donne la requête quand tu l'affiches ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    Citation Envoyé par Polorototo Voir le message
    Le script rentre dans toutes les boucles correctement mais le probleme se passe dans la boucle AJOUTER.

    quel est le problème actuellement ? Script php tombe en erreur, pas d'erreur mais pas d'insertion en base ?

    As tu fais un

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = mysql_query(...) or die(mysql_error());

    afin de voir l'erreur ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 76
    Par défaut
    ce que moi je vois c'est que l'ID qui je suppose est la clé primaire de la table, n'a pas de valeur.SI c'est bien là l'origine de ton problème, supprime id de ta requete et des valeurs à insérer et mais dans ta table le champ ID en autoincrémentation. Ainsi ta bdd créera automatiquement un id quand tu insèreras les valeurs dans les autres champs.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut
    Tout d'abord, merci pour vos réponses.

    Alors plusieurs réponses a vous donner.

    1) Je suis chez Claranet donc ma version de php est 4.2.3, donc impossible d'utiliser mysql_escape_real_string. Merci Claranet. D'ailleurs, peut etre que je peux contourner le blocage de claranet ? Ca m'étonnerait...

    2) Pour les histoires d'ID, le ID sont autoincrémenter donc je ne pense pas que le probleme vienne de la...

    3) Sinon, voici le echo de ma query insert. On remarque bien les \ devant chaque quote. Mais il y a bien une erreur grace au mysql_die :


    INSERT INTO `publications` ( `id` , `nom` , `comment` , `auteur`, `date`, `picture`, `publier`, `description` ) VALUES ('', '\'\'test\'\'\'t', '
    dlksfjdlskfjlsdkqfjmsqdfjmsdfjqsmd

    ' , '\'eteteee\'\'' , '1281477600' , '1281477600',1, '
    sdmifgjsmghsmqdghmslgh\'\'\'\'\'

    ');Échec de la requête 1 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't' AND `date` = '1281477600' LIMIT 1' at line 1


    Des idées ???

    Merci encore pour votre aide

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    1 - tu peux te rabattre sur mysql_escape_string

    3 - L'erreur affichée concerne la requête UPDATE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut
    Comment peux tu savoir qu'il s'agit de la requete UPDATE ? alors qu'il s'agit de la boucle INSERT...

    Sinon je vais tester mysql_escape_string, je ne connaissais pas cette fonction...

    Merci

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

Discussions similaires

  1. Insert ou Update probleme avec on duplicate key
    Par orphen dans le forum MySQL
    Réponses: 2
    Dernier message: 16/10/2010, 11h42
  2. Probleme d'insertion dans la base de données
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 11/06/2004, 16h21
  3. [Débutant][PS] modifier un insert en update
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/05/2004, 16h33
  4. probleme d'INSERT INTO et JavaScript
    Par Matlight dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/03/2004, 15h36
  5. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32

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