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 :

Pblm Caractères spéciaux [MySQL]


Sujet :

PHP & Base de données

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Par défaut Pblm Caractères spéciaux
    Bon, apres pas mal de recherches dans vos fora, je viens poster ici mon problème car je n'ai pas trouvé de solution

    Je souhaire faire une requete SQL à la suite d'un formulaire d'upload dans une page php. Comme un exemple vaut mieu qu'un long discours je vous présente la "bête" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $titre = $_POST['titre'];
    $type = get_type_id($_POST['type']);
    $desc = $_POST['desc'];
    $file = $_FILES['fichier_source']['name'];
     
    $query = "INSERT INTO hd_procedures (titre, desc, file, type_id) VALUES ('$titre', '$desc', '$file', '$type')";
     
    echo '<br>'.$query.'<br>';
     
    $result = mysql_query($query) or die(mysql_error());
    Bon ici c'est le code clean, j'ai viré la plupart des fonctions que j'avais testé pour plus de clarté (mysql_real_escape_string, addslahes etc..)

    Le problème ce situe au niveau de $file, qui est une chaine de caractèere que je recupère via mon formulaire. Et c'est quand mon $_FILES['fichier_source']['name'] prend une valeur du genre : test%ss oc[1].doc que tout ce complique

    Impossible donc d'enregistrer mon nom de fichier dans la base..
    Si quelqu'un a une idée pour que cette satanée chaine passe dans ma requete...

    Amicalement,

    Lost, un peu perdu il faut l'avouer

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 43
    Par défaut
    Je vais peut-être dire une connerie, mais essaye de remplacer l'apostrophe (') par une double apostrophe (") dans $file = $_FILES['fichier_source']['name'];

    Ce qui donne : $file = $_FILES["fichier_source"]["name"];

  3. #3
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    dsl myster mais ca changera rien

    Lost_mind, ce qu il faudrais c est identifier le ou les caractères fautifs !
    Dis nous déja quelles fonctions tu as testé, ca évitera qu on te les repropose

    Je te propose d essayer un urldecode dessus, voir un rawurldecode

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Par défaut
    Alors voici les erreurs rencontrées :

    Avec le fichier "fichier test.doc" (presence d'un espace) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO hd_procedures (titre, desc, file, type_id) VALUES ('dqsd', 'sqdqsdqs', 'fichier test.doc', '4')
     
    Erreur de syntaxe près de 'desc, file, type_id) VALUES ('dqsd', 'sqdqsdqs', 'fichie' à la ligne 1
    Avec le fichier "fichiertest[1].doc" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO hd_procedures (titre, desc, file, type_id) VALUES ('dqsd', 'sqdqsdqs', 'fichiertest[1].doc', '4')
     
    Erreur de syntaxe près de 'desc, file, type_id) VALUES ('dqsd', 'sqdqsdqs', 'fichie' à la ligne 1
    Avec "fichiertest%.doc" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO hd_procedures (titre, desc, file, type_id) VALUES ('dff', 'fgdff', 'fichiertest%.doc', '3')
     
    Erreur de syntaxe près de 'desc, file, type_id) VALUES ('dff', 'fgdff', 'fichiertes' à la ligne 1
    Pour ce qui est de l'espace je peut me debrouiller pour remplacer par "_", mais pour ce qui est des "[ ]" et "%", j'ai tester urlencode(rajoute encore plus de % qui passe encore moins ), mysql_real_escape_string (aucun effet), addslashes(ne marche pas non plus).

    Voila, si ça peut vous éclairer ^^

    Maintenant il me reste une solution radicale qui serait d'interdire tout caractères qui m'embetent mais bon... c'est pas top
    Par contre j'ai testé avec les nom de fichiers de test dans phpmyadmin, ça passe nickel et la requete sql est equivalente à celle que je fais !

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    urldecode pas encode !

    quel est le type de données de ton champ file dans ta base ?

  6. #6
    Membre Expert
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Par défaut
    bonjour,

    dis moi desc ne serait-il pas un mot reserve pour mysql????

  7. #7
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Bien vu

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    arf desc est un mot reservé de mysql, c est ca qui fais planter ta requete, renomme ton champ et ca devrais aller

    EDIT
    grilled

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Par défaut
    ARF :clap:
    Bien vu ! et moi qui cherche je en sais ou depuis hier! mdr

    Bon ben ça me rassure

    Merchi beaucoup 8)

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

Discussions similaires

  1. caractères spéciaux
    Par mat10000 dans le forum Flash
    Réponses: 16
    Dernier message: 23/10/2003, 13h22
  2. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54
  3. Transformation XSL et caractères spéciaux
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 4
    Dernier message: 28/04/2003, 10h38
  4. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49
  5. Traiter les caractères spéciaux
    Par ricola dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2003, 09h23

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