Manipulation de fichier

ViPHP
ViPHP | 1380 Messages

28 mars 2006, 16:46

404 !
ripat

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 mars 2006, 16:51

c'est la balise [url] qui était prise en compte.
Je viens d'éditer le message pour la supprimer vu que quand on met une url dans un message, elle est automatiquement reconnue.

Le lien est OK
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 35 Messages

28 mars 2006, 20:55

up

Mammouth du PHP | 19672 Messages

28 mars 2006, 22:51

Modération : dtom, les "up" sont interdits, ça fait trois fois sur un seul et même sujet, ce n'est pas acceptable: si personne ne te donne de réponse, c'est soit parce que personne n'a de réponse à te proposer soit parce que tu poses mal le problème et personne ne comprend ce que tu veux.

Prochain "up", c'est direct à la poubelle.


Et quand tu affiches des informations en tableau, fais au moins l'effort de les présenter de façon lisible. J'avais déjà arrangé un peu le premier, voici le dernier remis en forme, tiens-en compte:

Code : Tout sélectionner

+-------+--------------------------------------------------+---------+------------+------------+ | Rang | Pseudo | Bons | Liquide | Total | +-------+--------------------------------------------------+---------+------------+------------+ | 2 | lthierry | 0 | 34 828 850 | 34 828 850 | | 3 | xaraud | 0 | 27 117 986 | 27 117 986 | | 8 | starfighter </profile/homepage.html?accId=21884> | 490 770 | 7 912 930 | 8 403 700 | | 19 | trickyz </profile/homepage.html?accId=15495> | 552 647 | 3 393 044 | 3 945 691 | | 28 | westward | 64 | 2 466 067 | 2 466 131 | | 47 | daze | 34 103 | 1 227 803 | 1 261 906 | | 49 | jean-no | 0 | 1 165 013 | 1 165 013 | | 65 | pharmoboy | 292 749 | 606 015 | 898 764 | | 78 | minolta | 0 | 611 405 | 611 405 | | 99 | michel2b | 0 | 462 673 | 462 673 | | 113 | tofio | 0 | 395 801 | 395 801 | | 129 | tchoute | 0 | 353 422 | 353 422 | | 143 | dok | 0 | 324 941 | 324 941 | | 234 | lack | 53 743 | 118 965 | 172 708 | | 253 | hoocker | 0 | 155 761 | 155 761 | | 997 | docteurslump </profile/homepage.html?accId=2765> | 0 | 34 902 | 34 902 | | 1 438 | motx | 0 | 25 348 | 25 348 | | 3 892 | aliastor </profile/homepage.html?accId=9605> | 0 | 9 988 | 9 988 | | 4 837 | ziggy | 0 | 6 532 | 6 532 | | 8 920 | monforty | 0 | 2 000 | 2 000 | +-------+--------------------------------------------------+---------+------------+------------+
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 35 Messages

28 mars 2006, 23:43

bien, désolé pour les up...

Si je n'ai pas mis les données en forme, c'est qu'elle se trouvent dans cette forme sur ma page html...

sinon comment tu as fais le tableau?

ViPHP
ViPHP | 1380 Messages

29 mars 2006, 07:50

sinon comment tu as fais le tableau?
Il a fait tout ça avec ses (nombreuses) petites mains pleines de doigts :wink:

Ma solution à moi est moins subtile, plus lourde quoi!
// ouverture du fichier (pas changé)
$txt = file_get_contents('http://dtom.hd.free.fr/fichiers/temp/club.html');

// extraction du bloc RESULTATS (pas changé)
preg_match('#Total\s+(.*?)\r\n\r\n#s', $txt, $out);

// extractions des lignes (rajouté le tab comme séparateur de fin de ligne)
$lignes = explode("\t\r\n", $out[1]);

// préparation tableau pour injection dans bdd (on remplace le \r\n par tab dans chaque ligne)
foreach($lignes as  $v){
  $v = str_replace(array("\r\n", "*"), array("\t", null), $v);
  list($rang, $pseudo, $bons, $liquide, $total) = explode("\t", $v);          
  echo "Rang: $rang -- Pseudo: $pseudo -- Bons: $bons -- Liquide: $liquide -- Total: $total<br>";
}
Bon, là il faudrait que tu fasses un petit effort de ton côté pour comprendre se que fait mon bout de code. Ca t'aidera pour la suite.
ripat

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: