pb de mis a jour sql

joejac
Invité n'ayant pas de compte PHPfrance

11 janv. 2011, 11:31

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 !!!

ViPHP
ViPHP | 3607 Messages

11 janv. 2011, 11:37

J'ai cru voir un .... Ah tiens? Non en fait, il n'y a pas de mysql_query() oO
;)

joejac
Invité n'ayant pas de compte PHPfrance

11 janv. 2011, 12:13

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:

ViPHP
ViPHP | 3607 Messages

11 janv. 2011, 12:15

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!

joejac
Invité n'ayant pas de compte PHPfrance

11 janv. 2011, 12:29

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(); 

?>

ViPHP
ViPHP | 3607 Messages

11 janv. 2011, 12:38

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(); 

?>
 

Petit nouveau ! | 5 Messages

11 janv. 2011, 12:50

yes ça marche !!!!

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

Je vais étudié de près cette fonction

encore merci

ViPHP
ViPHP | 5462 Messages

11 janv. 2011, 12:52

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 ?

Petit nouveau ! | 5 Messages

11 janv. 2011, 13:06

j'ai MySQL: 5.0.67

Petit nouveau ! | 5 Messages

11 janv. 2011, 13:59

Re bonjour,

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

Merci d'avance

ViPHP
ViPHP | 3607 Messages

11 janv. 2011, 14:02

... ? 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?

ViPHP
ViPHP | 5462 Messages

11 janv. 2011, 14:17

j'ai MySQL: 5.0.67
j'ai pas demandé la version de mysql :mrgreen:

Petit nouveau ! | 5 Messages

11 janv. 2011, 14:28

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.

ViPHP
ViPHP | 3607 Messages

11 janv. 2011, 14:31

Et si tu essayais de comprendre ce que j'avais fait?
=> http://www.php.net/manual/en/language.t ... ypecasting

Petit nouveau ! | 5 Messages

11 janv. 2011, 15:03

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>