script / maj de table
Bonjour,
Je suis débutant et je cherche à réaliser une mis à jour sur une table sql. (en php)
L'idée est que j'ai un tarif dans ma table sql, et je souhaite écraser les anciens prix sans perdre les autres données. Eventuellement même pouvoir rajouter facilement des données.
Le fichier "mis à jour" est au format CSV. sous la forme "ref";"PV";"PA"
Merci d'avance
Jacques
salut,
je suppose que la ref est unique, dans ce cas je pense que la requete REPLACE de mysql devrait aider.
tu peut aussi utiliser une requete préparée pour faire bonne mesure ;)
Par exemple si tu a php 5 et PDO
<?php
try
{
$dbh = new PDO('mysql:host:localhost:dbname=test','utilisateur mysql ','mot de passe');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
catch(PDOException $e)
{
exit($e->getMessage());
}
$file = new SplFileObject('test.csv');
$file->setFlags(SplFileObject::READ_CSV | SplFileObject::SKIP_EMPTY);
$file->setCsvControl(';');
$stmt = $dbh->prepare("REPLACE INTO latableproduit (PV,PA) VALUES (?, ?) where ref=?");
foreach($file as $row)
{
$stmt->execute(array($row[1],$row[2],$row[0]));
}
?>
a tester mais le principe est la
Pour plus d'info
sujet de base
@+
Il en faut peu pour être heureux !!!!!
Merci Moogli,
Je vais tester ceci
@+
J'ai fais mon bou de code avec plusieurs exemple trouvé sur le net. Voila ce que ça donne :
<?php
// connection à la base
mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("lmb")or die(mysql_error());
// 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
mysql_query("UPDATE lmb SET prix_pulbic_ht=$data[1], where ref_article=$data[0]")or die(mysql_error());
$row++;
}
fclose ($fp);
mysql_close();
?>
Mon fichier CSV resemble à ç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"
J'ai une erreur :
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 '03, where ref_article=A-000000-00012' at line 1
Et je trouve pas le pb... help please !
@+
oui tu a un problème de syntaxe SQL, je suppose que le prix_public est un champ texte et tu n'a pas mis de '' autour de $data[1]
@+
Il en faut peu pour être heureux !!!!!
Bonjour,
ça y est j'ai corrigé l'erreur qui était une syntax différente voici le script qui fonctionne et ne me donne pus d'erreur :
<?php
// connection à la base
mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("lmb")or die(mysql_error());
// 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 lmb
SET prix_pulbic_ht = REPLACE(prix_public_ht,$data[1])
where ref_article=$data[0]
"or die(mysql_error());
ECHO $data[0], " ", $data[1],"<br>";
$row++;
}
fclose ($fp);
mysql_close();
?>
Sauf ... qu'il marche pas
Il n'y a aucun changement dans ma table SQL.
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"
la bd s'appel "lmb (285)" et la table "articles" je pense que c'est à ce niveau là que j'ai un pb.
Autre question je travail en hors connection avec EasyPHP pour développer et Xamp pour LMB ils ont chacun leur répertoir MYSQL le problème pourrait venir d'ici non ???
merci de tes lumières !
@+
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: