par
Cyrano » 29 mars 2006, 09:19
Report de message :
Bonjour,
Je recrée un post pour améliorer la compréhension de ma demande et la lisibilité...
Voici donc la fonction de mon code et mon problème :
Mon code lis un fichier (
http://dtom.hd.free.fr/fichiers/TEMP/club.html ), et récupere les informations contenu de la ligne 49 a 74.
Ensuite je met les données (total, date, rang) dans une table ou la crée si elle existe pas.
Bref le code marchait a merveille, sauf quand un pseudo à un lien. Le problème c'est que le code va a la ligne. Retirer ce lien avec striptag ne sert à rien.
Voici le code php
<?
$pass=md5($_GET['pass']);
$passMD5="ab24dce4*****353a13330757e******";
//protége le générateur par un mot de passe
if ($pass==$passMD5){
include ("config.php");
//Verifie si on peut se connecter a la base sql
$connect=mysql_connect($host,$user,$pass) or die ("Impossible de se connecter");
mysql_select_db($base, $connect) or die ("Impossible de selectionner la base de donnees");
//vérifie la date du dernier enregistrement
$result=mysql_query ("SELECT * FROM derniere_date WHERE ID='1'") or die ("Impossible d'executer la requete");
$row = mysql_fetch_array($result);
$lastdate = $row ["lastdate"];
$date=date("Y-m-d");
// ouverture du fichier
$txt = file_get_contents('http://dtom.hd.free.fr/nf/club.html');
// extraction du bloc RESULTATS
preg_match('#Total\s+(.*?)\r\n\r\n#s', $txt, $out);
// extractions des lignes
$lignes = explode("\r\n", $out[1]);
// préparation tableau pour injection dans bdd
$aInserer = array();
foreach($lignes as $k => $v){
$v = str_replace('*', null, $v);
$aInserer[] = preg_split("#\t#", $v, -1, PREG_SPLIT_NO_EMPTY);
}
// $k est l'indice d'une ligne du tableau (pas utilisé ici) et $v sa valeur
foreach($lignes as $k => $v){
$v = str_replace('*', null, $v);
list($rang, $pseudo, $bons, $liquide, $total) = explode("\t", $v);
$pseudo = strip_tags($pseudo);
$rang = str_replace(' ', null, $rang);
$bons = str_replace(' ', null, $bons);
$liquide = str_replace(' ', null, $liquide);
$total = str_replace(' ', null, $total);
/*##### écriture bdd #####*/
$table="points_".$pseudo;
$sql_create = "CREATE TABLE IF NOT EXISTS $table (id INT (10) not null AUTO_INCREMENT, doublons VARCHAR (255) not null, rang VARCHAR (255) not null, date DATE NOT NULL default '0000-00-00', PRIMARY KEY (id))";
$req_create = mysql_db_query($base, $sql_create) or die(mysql_error());
//recupere la derniere id
$id=0;
$result1=mysql_query ("SELECT * FROM $table ORDER by ID") or die ("Requete impossible");
while ($row1 = mysql_fetch_array($result1)) {
$id = $row1["id"];
$date_bdd = $row1["date"];
}
$id=$id+1;
//
if($date_bdd!=$date){
//envoie des données
$query = mysql_query ("insert into $table (id, doublons, rang, date) values ('$id', '$total', '$rang', '$date')");
$status="<font color="#008000">OK</font>";
}else{$status="<font color="#FF0000">ECHEC!</font>"; }
echo "<br>Rang: $rang -- Pseudo: $pseudo -- Bons: $bons -- Liquide: $liquide -- Total: $total $status<br>\n";
/*##### fin écriture bdd #####*/
}
}
else{
echo("<b><center>Mot de passe erroné!</b></center>");}
?>
Merci d'avance.
ps : voici ce que ça donne online :
http://dtom.hd.free.fr/nf/
dtom, il est inutile de créer un nouveau post, ça ne fait que perdre ceux qui n'ont pas suivi ici, je reporte donc ici et supprime l'autre.
Report de message :
[quote="dtom"]Bonjour,
Je recrée un post pour améliorer la compréhension de ma demande et la lisibilité...
Voici donc la fonction de mon code et mon problème :
Mon code lis un fichier ( http://dtom.hd.free.fr/fichiers/TEMP/club.html ), et récupere les informations contenu de la ligne 49 a 74.
Ensuite je met les données (total, date, rang) dans une table ou la crée si elle existe pas.
Bref le code marchait a merveille, sauf quand un pseudo à un lien. Le problème c'est que le code va a la ligne. Retirer ce lien avec striptag ne sert à rien.
Voici le code php
[php]<?
$pass=md5($_GET['pass']);
$passMD5="ab24dce4*****353a13330757e******";
//protége le générateur par un mot de passe
if ($pass==$passMD5){
include ("config.php");
//Verifie si on peut se connecter a la base sql
$connect=mysql_connect($host,$user,$pass) or die ("Impossible de se connecter");
mysql_select_db($base, $connect) or die ("Impossible de selectionner la base de donnees");
//vérifie la date du dernier enregistrement
$result=mysql_query ("SELECT * FROM derniere_date WHERE ID='1'") or die ("Impossible d'executer la requete");
$row = mysql_fetch_array($result);
$lastdate = $row ["lastdate"];
$date=date("Y-m-d");
// ouverture du fichier
$txt = file_get_contents('http://dtom.hd.free.fr/nf/club.html');
// extraction du bloc RESULTATS
preg_match('#Total\s+(.*?)\r\n\r\n#s', $txt, $out);
// extractions des lignes
$lignes = explode("\r\n", $out[1]);
// préparation tableau pour injection dans bdd
$aInserer = array();
foreach($lignes as $k => $v){
$v = str_replace('*', null, $v);
$aInserer[] = preg_split("#\t#", $v, -1, PREG_SPLIT_NO_EMPTY);
}
// $k est l'indice d'une ligne du tableau (pas utilisé ici) et $v sa valeur
foreach($lignes as $k => $v){
$v = str_replace('*', null, $v);
list($rang, $pseudo, $bons, $liquide, $total) = explode("\t", $v);
$pseudo = strip_tags($pseudo);
$rang = str_replace(' ', null, $rang);
$bons = str_replace(' ', null, $bons);
$liquide = str_replace(' ', null, $liquide);
$total = str_replace(' ', null, $total);
/*##### écriture bdd #####*/
$table="points_".$pseudo;
$sql_create = "CREATE TABLE IF NOT EXISTS $table (id INT (10) not null AUTO_INCREMENT, doublons VARCHAR (255) not null, rang VARCHAR (255) not null, date DATE NOT NULL default '0000-00-00', PRIMARY KEY (id))";
$req_create = mysql_db_query($base, $sql_create) or die(mysql_error());
//recupere la derniere id
$id=0;
$result1=mysql_query ("SELECT * FROM $table ORDER by ID") or die ("Requete impossible");
while ($row1 = mysql_fetch_array($result1)) {
$id = $row1["id"];
$date_bdd = $row1["date"];
}
$id=$id+1;
//
if($date_bdd!=$date){
//envoie des données
$query = mysql_query ("insert into $table (id, doublons, rang, date) values ('$id', '$total', '$rang', '$date')");
$status="<font color="#008000">OK</font>";
}else{$status="<font color="#FF0000">ECHEC!</font>"; }
echo "<br>Rang: $rang -- Pseudo: $pseudo -- Bons: $bons -- Liquide: $liquide -- Total: $total $status<br>\n";
/*##### fin écriture bdd #####*/
}
}
else{
echo("<b><center>Mot de passe erroné!</b></center>");}
?>[/php]
Merci d'avance.
ps : voici ce que ça donne online : http://dtom.hd.free.fr/nf/[/quote]
[b]dtom[/b], il est inutile de créer un nouveau post, ça ne fait que perdre ceux qui n'ont pas suivi ici, je reporte donc ici et supprime l'autre.