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 :

UPDATE depuis un fichier php


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut UPDATE depuis un fichier php
    Bonjour,

    A partir d'un fichier csv je souhaite mettre à jour le champ d'une de mes tables.
    Je récupère bien les infos souhaités dans mon csv.
    D'après les sorties d'ecrans, tout se passe bien au niveau de ma requête mais il y a aucune modification effectuée dans ma base de données.

    Quand je copie-colle directement la requête générée depuis mon fichier dans ma base de données les modifications se font bien.

    Voici ma requête en question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE ps_attribute_lang al, ps_product_attribute pa, ps_product_attribute_combination pac 
    SET al.redoute='0WRXDL62' WHERE al.name='50 ' 
    and pa.id_product='2' and pa.id_product_attribute=pac.id_product_attribute and pac.id_attribute=al.id_attribute
    Le problème pourrait venir de la jointure des tables dans le Where?
    Je n'ai vraiment aucune idée.

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    Ci dessous mon 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <?php
    //Le chemin d'acces a ton fichier sur le serveur
    $fichier = fopen("test2.csv", "r");
     
    //tant qu'on est pas a la fin du fichier :
    while (!feof($fichier))
    {
    // On recupere toute la ligne
    $uneLigne = fgets($fichier, 1024);
    //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';')
    $tableauValeurs = explode(';', $uneLigne);
     
    if(is_array($tableauValeurs) && isset($tableauValeurs[2])) {
    $sql = "UPDATE ps_attribute_lang al, ps_product_attribute pa, 
    ps_product_attribute_combination   pac 
    SET al.redoute='".$tableauValeurs[2]."' 
    WHERE al.name='".$tableauValeurs[5]."' 
    and pa.id_product='".$tableauValeurs[3]."' 
    and pa.id_product_attribute=pac.id_product_attribute 
    and pac.id_attribute=al.id_attribute";
     
    echo $sql."<br />";
     
    $req=mysql_query($sql)or die (mysql_error());
     
     
    // la ligne est finie donc on passe a la ligne suivante (boucle)
    	}
    }
    //vérification et envoi d'une réponse à l'utilisateur
    if ($req)
    {
     
    echo"Ajout dans la base de données effectué avec succès <br />";
    echo mysql_errno($liendb) . ": " . mysql_error($liendb) . "<br />";
    echo "Nombre de Lignes Affectées: " .mysql_affected_rows()."<br />";
    }
    else
    {
    echo"Echec dans l'ajout dans la base de données <br />";
    }
     
    echo "traitement terminé";
     
    ?>
    Merci d'avance

  3. #3
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    un truc simple remplace ton update par un "select count(*)" avec le même where et regarde combien de lignes sont concernées

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    Salut Ericd69,

    J'ai 3 lignes concernées quand je fais la requête dans mysql mais que je l'appelle depuis mon script

    Il me sort -1


    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
     
    if(is_array($tableauValeurs) && isset($tableauValeurs[2])) {
     
    $sql = "SELECT COUNT(*) FROM ps_attribute_lang al, ps_product_attribute pa, ps_product_attribute_combination pac WHERE pa.id_product_attribute=pac.id_product_attribute 
    and pac.id_attribute=al.id_attribute 
    and al.name='".$tableauValeurs[5]."' 
    and pa.id_product='".$tableauValeurs[3]."'";
     
    echo $sql."<br />";
    echo "Nombre de Lignes Affectées: " .mysql_affected_rows()."<br />";
    $req=mysql_query($sql)or die (mysql_error());
     
     
     
    	}
    Y'a bien un problème depuis mon script que je n'arrive pas à comprendre.

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    déjà pour lire un csv c'est fgetcsv
    qui te sort le tableau correspondant à une ligne de ton csv...

    ça va simplifier ton code... essaye déjà avec ça sans faire la requête

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    Ericd69, j'ai jugé inutile de passer par fgetcsv parce que je récupère parfaitement les données souhaitées.

    Le soucis que j'avais c'est que j'avais un blanc après mes valeurs. J'ai corrigé ce problème.

    Un problème en amenant un autre maintenant mon update ne se fait pas dans son intégralité pourtant les requêtes executées sont correctes et fonctionne en direct dans Phpmyadmin.

    En isolant les requêtes posant problème et en les mettant dans un nouveau csv ça fonctionne mais dès 40 lignes dans mon csv l'update ne se fait plus dans son intégralité.

    Ci-joint mon fichier csv d'origine.

    Merci d'avance pour votre compréhension

Discussions similaires

  1. recuperer des informations depuis un fichier php
    Par doud180878 dans le forum jQuery
    Réponses: 2
    Dernier message: 21/07/2011, 15h28
  2. Réponses: 0
    Dernier message: 07/02/2008, 11h26
  3. Exécuter un fichier PHP depuis un .bat
    Par zalalus dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 26/11/2007, 13h44
  4. Ouvrir un fichier.txt avec Notepad depuis un script PHP
    Par legastu dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/07/2007, 11h40
  5. généré un fichier excel depuis un formulaire php
    Par wadoux dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 08/03/2007, 17h12

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