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 PHP Discussion :

Problème d'insertion dans base de donnée


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 30
    Points
    30
    Par défaut Problème d'insertion dans base de donnée
    Bonjour à tous !

    J'ai un petit soucis concernant une requête sql dans mon script php ...
    Je vous expose le problème :

    Je dispose d'une bdd sous access, celle-ci est vide et je dois faire parvenir des données d'une autre base pour la remplir. La table de ma nouvelle base possède le même nom que celui de l'ancienne et les champs sont exactement identiques.

    J'ai donc crée une petite page en php qui exécute le transfert des données.
    Le problème : Certain champs notamment les adresses comprennent par endroit des apostrophes (') et donc l'insertion ne se fait pas. Evidemment pour régler le problème, il faut doubler les cotes pour que sa donne ceci : ('')

    Jusqu'ici c'est ok, j'utilise donc la fonction "strpos" et précise à php qu'il doit m'insérer une ' là où il trouve des '.
    Mais celà ne fonctionne pas et je pense que c'est parce qu'il me remplace que le premier ' et oublie les autres s'il y en a dans la même ligne.

    Exemple :
    'Rue d'Adam' donnera ---> ''Rue d'Adam'

    Voici mon code:
    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
    $sql7 = "SELECT Id, Titre, Nom, Prenom, Adresse, Tel_pro, Tel_pro_court, Bip, Tel_perso, Portable_pro, Portable_perso, Tel_colisee, Societe, Service, Unite, Fonction, Mot_cle, IGG, Matricule, Compte, Libelle, Actif, Direction, User_id, PC, Tel_collegue FROM Personnel";
    $res7 = exec_requete($con2, $sql7);
    while($arr=fetch_requete($res7))
    {
    $arr[1]=(int)$arr[1];
    $arr[4] = strpos($arr[4],"'","'");
    $arr[12]=(int)$arr[12];
    $arr[13]=(int)$arr[13];
    $arr[14]=(int)$arr[14];
    $arr[15]=(int)$arr[15];
    $arr[16]=(int)$arr[16];
    $arr[21]=(int)$arr[21];
     
    $sql_ins7="INSERT INTO Personnel (Id, Titre, Nom, Prenom, Adresse, Tel_pro, Tel_pro_court, Bip, Tel_perso, Portable_pro, Portable_perso, Tel_colisee, Societe, Service, Unite, Fonction, Mot_cle, IGG, Matricule, Compte, Libelle, Actif, Direction, User_id, PC, Tel_collegue) VALUES ($arr[0], '$arr[1]', '$arr[2]', '$arr[3]', '$arr[4]', '$arr[5]', '$arr[6]', '$arr[7]', '$arr[8]', '$arr[9]', '$arr[10]', '$arr[11]', '$arr[12]', '$arr[13]', '$arr[14]', '$arr[15]', '$arr[16]', '$arr[17]', '$arr[18]', '$arr[19]', '$arr[20]', '$arr[21]', '$arr[22]', '$arr[23]', '$arr[24]', '$arr[25]')";
    $res_ins7=exec_requete($con1,$sql_ins7);
    }
    Je pense qu'il faut créer une boucle mais voilà je bloque un peu...
    Donc si quelqu'un a une solution sa serait sympa de la partager lol !
    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    strpos ne remplace rien puisqu'elle renvoie l'indice dans la chaîne de la première occurence de la sous-chaîne (si elle la trouve) - d'autant plus que son troisième paramètre est mal utilisé ici (position à laquelle la recherche débute).

    str_replace peut être ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arr[4] = str_replace($arr[4], "'", "''");
    (il n'y aurait que cette ligne à remplacer)

    Vos casts en int, c'est normal ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 30
    Points
    30
    Par défaut
    Merci pour votre proposition...
    Je vais tester cette solution et vous tiendrais au courant !

    Pour les int oui c'est normal du moins je pense, car par défaut php renvoie les variables en type string. Donc j'avais des erreurs concernant les valeurs numériques à intégrer dans la base. Une fois la conversion réalisée comme vous pouvez le voir dans le petit bout de code, plus aucuns problèmes...

    Cela vous parait il illogique ? lol

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 30
    Points
    30
    Par défaut
    BOn bah j'ai essayé la solution proposée et celà ne fonctionne toujours pas ...

    Si quelqu'un a une autre solution ... ??

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 30
    Points
    30
    Par défaut
    C'est bon problème résolut !!

    J'ai fait ceci:

    $arr[4]=strtr($arr[4],"'","`");
    Et là sa marche haha ... Merci tt de même à la personne qui c'est donnée la peine de me répondre !

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

Discussions similaires

  1. Problème : Insertion dans base de donnée
    Par guillaume62 dans le forum Requêtes
    Réponses: 11
    Dernier message: 01/12/2010, 14h13
  2. [VB.NET]Requete INSERT dans base de données access
    Par mael94420 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/10/2006, 13h57
  3. Réponses: 6
    Dernier message: 09/06/2006, 12h17
  4. Réponses: 9
    Dernier message: 13/10/2005, 18h24
  5. Réponses: 8
    Dernier message: 11/05/2005, 14h48

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