par
BFH » 01 juin 2005, 09:42
Je ne crois pas vraiment que je possède des lignes de code qui ne servent à rien c'est juste que je n'ai pas affiché tout le code qui sert à l'insertion. Tiens le voila:
if(file_exists($FI))//si le fichier exist
{
$fichier=file("$FI");//parcours le fichier csv ligne par ligne et stocke chaque ligne dans un tableau
$heure = explode(',',$fichier[9]);//$heure divise la ligne n°9 en colone, chaque colone étant marqué par une virgule
$date = explode(',',$fichier[8]);
$user = explode(',',$fichier[6]);
$H=$heure[5];//$H= la 5ème colone crée par $heure
$D=$date[5];
$RHost=basename($FI, ".csv");//recupère juste le nom du fichier (ce qu'il y a après le dernier slash privé de .csv)
$RDateTime=$D.$H;
$RUser=$user[5];
$query="SELECT NextID FROM nextid";//permet de recuperer le prochain identifiant du fichier qui sera inséré dans la base
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);
$ID=$row["NextID"]; //permet de recuperer la valeur de NextID
NextID=$ID+1;//$NextID egale la valeur précédente de NextID augmenté de 1
$F1=addslashes($FI); //mets des slashs devant les les caractères spéciaux qui pourraient être contenus dans le chemin du fichier
$insert="LOAD DATA INFILE '".$F1."' INSERT INTO TABLE item FIELDS TERMINATED BY ','LINES TERMINATED BY '\\n\\r' IGNORE 9 LINES (INum,IPage,IDevice,IGroup,IValue,IID)";
$insert2="INSERT INTO TABLE report (ID_R,RHost) VALUES ('$ID','$RHost') ";
$insert3="INSERT INTO TABLE nextid (NextID) VALUES ('$NextID') ";
mysql_query($insert)or die(mysql_error());
mysql_query($insert2)or die(mysql_error());
mysql_query($insert3)or die(mysql_error());
}
Maintenant ce que je veux c'est :
_ Comprendre pourquoi la ligne suivante ne fonctionne pas :
$insert="LOAD DATA INFILE '".$F1."' INSERT INTO TABLE item FIELDS TERMINATED BY ','LINES TERMINATED BY '\\n\\r' IGNORE 9 LINES (INum,IPage,IDevice,IGroup,IValue,IID)";
_ Qu'on me dise comment faire pour :
Je voudrais remplir le champs ReportID avec $ID pour chaque ligne qui sera en provenance de $F1 qui sera insérée
Ma table item compte comme champs (INum,IPage,IDevice,IGroup,IValue,IID, ReportID)
Parce que la ma variable
$insert ne le fait pas
$fichier=file("$FI");//parcours le fichier csv ligne par ligne et stocke chaque ligne dans un tableau
Cette instruction ne fait pas ce que tu commentes
Si t'es pas d'accord avec mon commentaire tu peut t'adresser à monsieur
François-Xavier BOIS auteur du livre
PHP, un accompagnement pour maitriser les bases de la programmation pour lui adresser tes repproches!
Je ne crois pas vraiment que je possède des lignes de code qui ne servent à rien c'est juste que je n'ai pas affiché tout le code qui sert à l'insertion. Tiens le voila:
[php]if(file_exists($FI))//si le fichier exist
{
$fichier=file("$FI");//parcours le fichier csv ligne par ligne et stocke chaque ligne dans un tableau
$heure = explode(',',$fichier[9]);//$heure divise la ligne n°9 en colone, chaque colone étant marqué par une virgule
$date = explode(',',$fichier[8]);
$user = explode(',',$fichier[6]);
$H=$heure[5];//$H= la 5ème colone crée par $heure
$D=$date[5];
$RHost=basename($FI, ".csv");//recupère juste le nom du fichier (ce qu'il y a après le dernier slash privé de .csv)
$RDateTime=$D.$H;
$RUser=$user[5];
$query="SELECT NextID FROM nextid";//permet de recuperer le prochain identifiant du fichier qui sera inséré dans la base
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);
$ID=$row["NextID"]; //permet de recuperer la valeur de NextID
NextID=$ID+1;//$NextID egale la valeur précédente de NextID augmenté de 1
$F1=addslashes($FI); //mets des slashs devant les les caractères spéciaux qui pourraient être contenus dans le chemin du fichier
$insert="LOAD DATA INFILE '".$F1."' INSERT INTO TABLE item FIELDS TERMINATED BY ','LINES TERMINATED BY '\\n\\r' IGNORE 9 LINES (INum,IPage,IDevice,IGroup,IValue,IID)";
$insert2="INSERT INTO TABLE report (ID_R,RHost) VALUES ('$ID','$RHost') ";
$insert3="INSERT INTO TABLE nextid (NextID) VALUES ('$NextID') ";
mysql_query($insert)or die(mysql_error());
mysql_query($insert2)or die(mysql_error());
mysql_query($insert3)or die(mysql_error());
}[/php]
Maintenant ce que je veux c'est :
_ Comprendre pourquoi la ligne suivante ne fonctionne pas :
[php]$insert="LOAD DATA INFILE '".$F1."' INSERT INTO TABLE item FIELDS TERMINATED BY ','LINES TERMINATED BY '\\n\\r' IGNORE 9 LINES (INum,IPage,IDevice,IGroup,IValue,IID)";
[/php]
_ Qu'on me dise comment faire pour :
[quote="BFH"]Je voudrais remplir le champs ReportID avec $ID pour chaque ligne qui sera en provenance de $F1 qui sera insérée
Ma table item compte comme champs (INum,IPage,IDevice,IGroup,IValue,IID, ReportID)[/quote]
Parce que la ma variable [b]$insert [/b]ne le fait pas
[quote="sadeq"]
[php]$fichier=file("$FI");//parcours le fichier csv ligne par ligne et stocke chaque ligne dans un tableau [/php]
Cette instruction ne fait pas ce que tu commentes[/quote]
Si t'es pas d'accord avec mon commentaire tu peut t'adresser à monsieur [b]François-Xavier BOIS[/b] auteur du livre [b]PHP, un accompagnement pour maitriser les bases de la programmation[/b] pour lui adresser tes repproches!