Page 1 sur 2

pb de mis a jour sql

Posté : 11 janv. 2011, 11:31
par joejac
bonjour,

j'ai réalisé ce petit script pour mettre à jour une base de donnée SQL par un fichier CSV.

Le requette sql ne fonctionne pas; il n'y pas d'erreur affiché mais pas de mis à jours des données.


<?php

// connection à la base

@mysql_connect('localhost','root','')or die("Impossible de se connecter à la base de données");
@mysql_select_db('lmb') or die("ça marche toujours pas");

// Lecture du fichier Test.csv "ref_article";"prix_public_ht";"prix_achat_ht"

$row = 1;
$fp = fopen ("test.csv","r");
while ($data = fgetcsv ($fp, 1000, ";"))
{
$num = count ($data);
// Update les valeurs du fichier dans la base SQL

$sql = 'UPDATE articles '
. ' SET prix_public_ht = $data[1]'
. ' WHERE ref_article = "$data[0]"';

ECHO $data[0], " ", $data[1],"<br>";

$row++;
}
fclose ($fp);

mysql_close();

?>

le fichier csv ressemble à ça :

"A-000000-00012";"7,03";"4,1"
"A-000000-00013";"7,03";"4,1"
"A-000000-00014";"9,43";"5,5"
"A-000000-00015";"9,43";"5,5"

merci d'avance de votre aide !!!

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 11:37
par jojolapine
J'ai cru voir un .... Ah tiens? Non en fait, il n'y a pas de mysql_query() oO
;)

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 12:13
par joejac
j'ai modifié comme suis :

// Update les valeurs du fichier dans la base SQL

$query='UPDATE articles
SET prix_public_ht = $data[1]
WHERE ref_article = $data[0]';

mysql_query($query) ;

mais ça marche toujours pas :cry:

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 12:15
par jojolapine
fait un echo de ta requête et tu verras ton erreur!
Et au passge utilise les balises
 pour posté du code, ça te montrera en partie tes erreurs avec la coloration syntaxique!

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 12:29
par joejac
J'ai corrigé comme ceci, au passage c'est très pratique les balises.
Maintenant il reconnait $data mais ma base reste inchangée...
<?php

// connection à la base

@mysql_connect('localhost','root','')or die("Impossible de se connecter à la base de données"); 
@mysql_select_db('lmb') or die("ça marche toujours pas");

// Lecture du fichier Test.csv    "ref_article";"prix_public_ht";"prix_achat_ht"

$row = 1;
  $fp = fopen ("test.csv","r");
  while ($data = fgetcsv ($fp, 1000, ";")) 
    {
    $num = count ($data);
// Update les valeurs du fichier dans la base SQL   

$query="UPDATE articles 
            SET prix_public_ht = $data[1]
            WHERE ref_article = $data[0]";

mysql_query($query) ;

ECHO $data[0], " ", $data[1],"<br>";
 
$row++;
    }
  fclose ($fp);

mysql_close(); 

?>

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 12:38
par jojolapine
Bonjour,
Essaye ce code pour voir:
<?php

// connection à la base

mysql_connect('localhost','root','')or die("Impossible de se connecter à la base de données"); 
mysql_select_db('lmb') or die("ça marche toujours pas");

// Lecture du fichier Test.csv    "ref_article";"prix_public_ht";"prix_achat_ht"

$row = 1;
  $fp = fopen ("test.csv","r");
  while ($data = fgetcsv ($fp, 1000, ";")) 
    {
    $num = count ($data);
// Update les valeurs du fichier dans la base SQL   

$query="UPDATE articles 
            SET prix_public_ht = ".(double)$data[1]."
            WHERE ref_article = '".mysql_real_escape_string($data[0])."'";

mysql_query($query) or die("Erreur de requête : ".$query);

ECHO $data[0], " ", $data[1],"<br>";
 
$row++;
    }
  fclose ($fp);

mysql_close(); 

?>
 

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 12:50
par joejac
yes ça marche !!!!

merci, c'est super je cherche depuis 2 jours !!

Je vais étudié de près cette fonction

encore merci

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 12:52
par stealth35
yes ça marche !!!!

merci, c'est super je cherche depuis 2 jours !!

Je vais étudié de près cette fonction

encore merci
t'as quelle version de PHP ?, t'as PDO mysql ? ou mysqli ?

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 13:06
par joejac
j'ai MySQL: 5.0.67

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 13:59
par joejac
Re bonjour,

Petite question si je veux mettre à jours du texte ou un utre style de variable quel est la syntax

Merci d'avance

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 14:02
par jojolapine
... ? oO

Je vais chercher ma boule de cristal! #-o

Tu as essayé quoi comme code?
Quelle est la structure de tes données (csv+sql)? quelles sont les erreurs?

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 14:17
par stealth35
j'ai MySQL: 5.0.67
j'ai pas demandé la version de mysql :mrgreen:

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 14:28
par joejac
alors j'ai pas fait compliqué j'ai rajouté brute de fonderie les éléments que je souhaite metre à jour voici le code :
<?php

// connection à la base

mysql_connect('localhost','root','')or die("Impossible de se connecter à la base de données"); 
mysql_select_db('lmb') or die("ça marche toujours pas");

// Lecture du fichier Test.csv    "ref_article";"prix_public_ht";"prix_achat_ht"

$row = 1;
  $fp = fopen ("test.csv","r");
  while ($data = fgetcsv ($fp, 1000, ";")) 
    {
    $num = count ($data);

// Update les valeurs du fichier dans la base SQL   

$query="UPDATE articles 
        SET desc_courte=".(double)$data[1].",  
            prix_public_ht = ".(double)$data[2].",  
            paa_ht = ".(double)$data[3]." 
        WHERE ref_article = '".mysql_real_escape_string($data[0])."'";

mysql_query($query) or die("Erreur de requête : ".$query);

ECHO $data[0], " -> ", $data[1]," - ", $data[2]," - ", $data[3],"<br>";
 
$row++;
    }
ECHO "Tout le tarif est à jours";
  fclose ($fp);

mysql_close(); 

?>
et voici le CSV
"A-000000-00012";"Plafonnier 220V 13W 2700K page 136";"7.03";"4.1"
"A-000000-00013";"Plafonnier 220V 13W 6400K page 136";"7.03";"4.1"
"A-000000-00014";"Plafonnier 220V 21W 2700K page 136";"9.43";"5.5"
"A-000000-00015";"Plafonnier 220V 21W 6400K page 136";"9.43";"5.5"
"A-000000-00016";"Plafonnier page 139";"12.35";"7.2"
"A-000000-00017";"Plafonnier page 139";"9.95";"5.8"
"A-000000-00018";"Plafonnier page 141";"17.83";"10.4"

j'ai pas réussi à inséré un "printscreen" de PMA alors j'ai copié ce qui me semble utile :
Champ Type Interclassement
ref_article varchar(32) latin1_swedish_ci
ref_oem varchar(64) latin1_swedish_ci
ref_interne varchar(32) latin1_swedish_ci
lib_article varchar(250) latin1_swedish_ci
lib_ticket varchar(64) latin1_swedish_ci
desc_courte mediumblob BINARY
desc_longue mediumblob BINARY
ref_art_categ varchar(32) latin1_swedish_ci

Le script fonction il ne me renvoie pas d'erreur mais dans le champ desc_courte j'ai 0 au lieu d'un texte.

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 14:31
par jojolapine
Et si tu essayais de comprendre ce que j'avais fait?
=> http://www.php.net/manual/en/language.t ... ypecasting

Re: pb de mis a jour sql

Posté : 11 janv. 2011, 15:03
par joejac
Effectivement avec un peu de lecture ... et de traduction ! ça marche beaucoup mieux

et voila !
// Update les valeurs du fichier dans la base SQL   

$query="UPDATE articles 
        SET desc_courte='".(string)$data[1]."', 
        prix_public_ht = ".(double)$data[2].", 
        paa_ht = ".(double)$data[3]." 
        WHERE ref_article = '".mysql_real_escape_string($data[0])."'";
merci pour ton aide ! =D>