Lecture d'un fichier

Répondre
Also know as
le 11/01/2007 à 20:27
Also know as
Bonjour,

Voilà je lis un fichier ou à chaque ligne il y'a tout simplement un nom qu'il doit recherché dans la BDD.

if (!$fp = fopen("monfichier.txt","r"))
{
echo "Echec de l'ouverture du fichier";
exit;
}
else
{
while(!feof($fp))
{
// On récupère une ligne
$Name = fgets($fp,4096);

// On affiche les lignes
$sql = 'SELECT * FROM downstreet WHERE name="'.$Name.'"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$data = mysql_NumRows($req);
echo '<li>'.$Name.' : '.$data.'</li>';
mysql_free_result($req);
mysql_close;
}
fclose($fp); // On ferme le fichier
}

ET j'aimerais donc qu'il m'écrive le nombre total d'occurrence trouvé, mais il ne m'écrit à chaque fois que le dernier.
J'ia déjà essayé avec une autre manière mais j'obtiens exactement le même résultat, quelqu'un pourrait m'aider s'il vous plait ?

Merci d'avance
bibi
le 11/01/2007 à 21:33
bibi
<?php
if($tab = file("monfichier.txt")) {
$total = 0;
echo '<ul>';
foreach($tab as $name) {
$sql = 'SELECT COUNT(*) AS nb_rep FROM downstreet WHERE name = "'.$name.'"';
$req = mysql_query($sql) or die('Erreur');
$data = mysql_fetch_array($req);
$nb = $data['nb_rep'];
$total += $nb;
echo '<li>'.$name.': '.$nb.'</li>';
}
echo '</ul>';
}
else {
echo "Echec";
exit;
}

?>
commit suicide
Also know as
le 12/01/2007 à 06:11
Also know as
Salut bibi et merci encore,

mais pour une raison que je ne connais pas, il m'affiche toujours la même chose, uniquement le dernier de ma liste est pris en compte.

Pourtant si je me tape bien 1 par 1 manuellement les requêtes cela se passe sans problème.

Donc je comprend toujours pas O_O...
bibi
le 12/01/2007 à 20:30
bibi
tu pourrais me donner les affichages pcke j'ai du mal a capter en fait ton probleme :)
commit suicide
Also know as
le 13/01/2007 à 12:05
Also know as
Voici deux adresse qui te permettront de voir la différence.

Voici ce que je dois obtenir :
http://architecte-warez.com/downland/nbvisiteurs.php

Et voici ce que j'obtiens :
http://architecte-warez.com/downland/nbvisiteurs2.php

En utilisant ce que tu as dit au dessus j'obtiens le 2e lien.

@+
bibi
le 13/01/2007 à 16:59
bibi
par pur hasard, les autres personnes ont bien des enregistrements dans la base ?

si tu exécutes ta requete dans phpmyadmin, elle te sort quel résultat ?

dans ton foreach, faire print_r($data); apres la requete.
commit suicide
Also know as
le 13/01/2007 à 23:03
Also know as
par pur hasard, les autres personnes ont bien des enregistrements dans la base ? ==> Pas trop compris ce que tu m'as dit... La seule chose que contient ma base de donnée c'est : IP et Name.
Avec cela j'obtiens un compteur en fonction du nom et du nombre d'IP pour chaque nom.

si tu exécutes ta requete dans phpmyadmin, elle te sort quel résultat ? ==> Tu veux que j'execute quoi exactement ?

dans ton foreach, faire print_r($data); apres la requete. ==> Voilà c'est fait, je l'ai fait à la fin et dans la boucle même.
bibi
le 13/01/2007 à 23:54
bibi
Ta table downstreet contient bien des données ?

Quand je te dis d'éxecuter les requetes dans phpmyadmin, fait ceci:

<?php
if($tab = file("monfichier.txt")) {
$total = 0;
echo '<ul>';
foreach($tab as $name) {
$sql = 'SELECT COUNT(*) AS nb_rep FROM downstreet WHERE name = "'.$name.'"';
echo '<li>'.$sql.'</li>';
}
echo '</ul>';
}
else {
echo "Echec";
exit;
}

?>


ca va t'afficher plusieurs requetes de type SELECT ... tu les copies une a une , tu vas sur phpmyadmin et tu les executes et tu vois le résultat retourné.
commit suicide
Also know as
le 14/01/2007 à 08:10
Also know as
Ok je viens de les afficher à cette adresse :

http://architecte-warez.com/downland/nbvisiteurs2.php

Et en fait je pense que cela vient de l'espace qu'il rajoute en fin de ligne, voilà pourquoi il ne trouve jamais rien.

Cet espace vient j'ai l'impression du retour à la ligne, comment est-ce que je pourrais faire alors pour enlever cet espace ?
J'ai essayé rapidement avec str_replace, mais cela ne fonctionne pas non plus.

J'ai bien évidemment vérifier si cela ne venait pas de mon fichier, mais je n'en rajoute pas.

@+
Also know as
le 14/01/2007 à 08:14
Also know as
Ah si c'est bon !

En faisant un str_replace("\n", "", $name), cela fonctionne parfaitement.

Merci beaucoup pour ton aide "bibi", je pense que j'aurais pu chercher encore longtemps pour trouver ça :)

@+
Répondre
LoadingChargement en cours