AIDE PHP
Résolu
SitHamster
-
SitHamster -
SitHamster -
Bonjour,
J'essaie de créer un compteur (par exemple pour le nombre de visiteurs d'un site). Dans le code qui suit, la phase 1 marche (a chaque ouverture du fichier php, je recupère un nombre stocké dans un .txt, je l'incrémente, affiche "vous etes le n-ieme visiteur et je remplace le nombre du .txt par sa nouvelle valeur.
Maintenant, j'essaie de lire dans le fichier, après l'incrémentation, ce qu'il contient caractère par caractère. Le but, c'est de récupérer la valeur de chaque caractère du .txt et d'afficher une image qui lui correspond (de 0 a 9, en .jpg)
PB : rien ne s'affiche!
mon code:
<?php /* Date de création: 30/09/2008 */ ?>
<html>
<body>
<?php
$i="";
$file=fopen("compteur.txt","r");
while (!feof($file))
$i.=fgets($file);
$i++;
?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
$k="";
$file=fopen("compteur.txt","r");
for($j=0;$j<(strlen($file));$j++)
{
$k=substr($file, $j,$j+1);
control();
?><img src="<?php print($image) ?>"/><?php
}
function control()
{
if($k==0)
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($k==1)
$image="C:/wamp/www/chiffres/un.jpg";
else
if($k==2)
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($k==3)
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($k==4)
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($k==5)
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($k==6)
$image="C:/wamp/www/chiffres/six.jpg";
else
if($k==7)
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($k==8)
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($k==9)
$image="C:/wamp/www/chiffres/neuf.jpg";
}
?>
</body>
</html>
Non seulement le navigateur m'affiche le symbole d'un fichier cassé (une feuille déchirée, alors que les images vont très bien) mais en plus il m'en mets 14 alors que dans mon essai le fichier txt contient '162' (3 chiffres donc)
Qui pourrait m'aider svp?
J'essaie de créer un compteur (par exemple pour le nombre de visiteurs d'un site). Dans le code qui suit, la phase 1 marche (a chaque ouverture du fichier php, je recupère un nombre stocké dans un .txt, je l'incrémente, affiche "vous etes le n-ieme visiteur et je remplace le nombre du .txt par sa nouvelle valeur.
Maintenant, j'essaie de lire dans le fichier, après l'incrémentation, ce qu'il contient caractère par caractère. Le but, c'est de récupérer la valeur de chaque caractère du .txt et d'afficher une image qui lui correspond (de 0 a 9, en .jpg)
PB : rien ne s'affiche!
mon code:
<?php /* Date de création: 30/09/2008 */ ?>
<html>
<body>
<?php
$i="";
$file=fopen("compteur.txt","r");
while (!feof($file))
$i.=fgets($file);
$i++;
?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
$k="";
$file=fopen("compteur.txt","r");
for($j=0;$j<(strlen($file));$j++)
{
$k=substr($file, $j,$j+1);
control();
?><img src="<?php print($image) ?>"/><?php
}
function control()
{
if($k==0)
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($k==1)
$image="C:/wamp/www/chiffres/un.jpg";
else
if($k==2)
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($k==3)
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($k==4)
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($k==5)
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($k==6)
$image="C:/wamp/www/chiffres/six.jpg";
else
if($k==7)
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($k==8)
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($k==9)
$image="C:/wamp/www/chiffres/neuf.jpg";
}
?>
</body>
</html>
Non seulement le navigateur m'affiche le symbole d'un fichier cassé (une feuille déchirée, alors que les images vont très bien) mais en plus il m'en mets 14 alors que dans mon essai le fichier txt contient '162' (3 chiffres donc)
Qui pourrait m'aider svp?
A voir également:
- AIDE PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
22 réponses
Bonjour,
Après la deuxième ouverture de ton fichier, tu ne lis pas le fichier, mais en fait tu n'as pas besoin de relire ton fichier car la variable $i contient le nombre de visiteur, donc ton code pourrait être
A plus
Après la deuxième ouverture de ton fichier, tu ne lis pas le fichier, mais en fait tu n'as pas besoin de relire ton fichier car la variable $i contient le nombre de visiteur, donc ton code pourrait être
$k=""; for($j=0;$j<(strlen($i));$j++) { $k=substr($i, $j,$j+1); control(); ?><img src="<?php print($image) ?>"/><?php }
A plus
Bonjour,
Voici une solution qui devrait peut être fonctionner :
A+.
<?php /* Date de création: 30/09/2008 */ ?>
<html>
<body>
<?php
$i=0; ==> du numérique
$file=fopen("compteur.txt","r");
==> balaie le fichier
while (!feof($file))
$i =( int) fgets($file); ==> casting en numérique
$i++;
?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
$file=fopen("compteur.txt","r");
==> positionnement sur le dernier enregistrement
for($j=0;$j<=$i ;$j++)
{
$k = fgets($file);
}
==> extraie chaque caractére et affiche l'image correspondante
for($j=0;$j<strlen($k);$j++)
{
$k=substr($k, $j,$j+1);
control();
?><img src="<?php print($image) ?>"/><?php
}
function control()
{
if($k=="0")
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($k=="1")
$image="C:/wamp/www/chiffres/un.jpg";
else
if($k=="2")
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($k=="3")
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($k=="4")
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($k=="5")
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($k=="6")
$image="C:/wamp/www/chiffres/six.jpg";
else
if($k=="7")
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($k=="8")
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($k=="9")
$image="C:/wamp/www/chiffres/neuf.jpg";
}
?>
</body>
</html>
Voici une solution qui devrait peut être fonctionner :
A+.
<?php /* Date de création: 30/09/2008 */ ?>
<html>
<body>
<?php
$i=0; ==> du numérique
$file=fopen("compteur.txt","r");
==> balaie le fichier
while (!feof($file))
$i =( int) fgets($file); ==> casting en numérique
$i++;
?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
$file=fopen("compteur.txt","r");
==> positionnement sur le dernier enregistrement
for($j=0;$j<=$i ;$j++)
{
$k = fgets($file);
}
==> extraie chaque caractére et affiche l'image correspondante
for($j=0;$j<strlen($k);$j++)
{
$k=substr($k, $j,$j+1);
control();
?><img src="<?php print($image) ?>"/><?php
}
function control()
{
if($k=="0")
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($k=="1")
$image="C:/wamp/www/chiffres/un.jpg";
else
if($k=="2")
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($k=="3")
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($k=="4")
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($k=="5")
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($k=="6")
$image="C:/wamp/www/chiffres/six.jpg";
else
if($k=="7")
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($k=="8")
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($k=="9")
$image="C:/wamp/www/chiffres/neuf.jpg";
}
?>
</body>
</html>
Re,
En tenant compte de l'avis éclairé de christounet avec des corrections à de chtites erreurs de ma part :
<?php /* Date de création: 30/09/2008 */ ?>
<html>
<body>
<?php
$i=0;
$file=fopen("compteur.txt","r");
while (!feof($file))
$i =( int) fgets($file);
$i++;
?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
$k = "";
==> casting en chaine de caractères du compteur (a vérifier quand même si c'est permis...)
$k = (string) $i;
for($j=0;$j<strlen($k);$j++)
{
$m = "";
$m=substr($k, $j,$j+1);
control();
?><img src="<?php print($image) ?>"/><?php
}
function control()
{
if($m=="0")
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($m=="1")
$image="C:/wamp/www/chiffres/un.jpg";
else
if($m=="2")
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($m=="3")
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($m=="4")
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($m=="5")
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($m=="6")
$image="C:/wamp/www/chiffres/six.jpg";
else
if($m=="7")
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($m=="8")
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($m=="9")
$image="C:/wamp/www/chiffres/neuf.jpg";
}
?>
</body>
</html>
En tenant compte de l'avis éclairé de christounet avec des corrections à de chtites erreurs de ma part :
<?php /* Date de création: 30/09/2008 */ ?>
<html>
<body>
<?php
$i=0;
$file=fopen("compteur.txt","r");
while (!feof($file))
$i =( int) fgets($file);
$i++;
?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
$k = "";
==> casting en chaine de caractères du compteur (a vérifier quand même si c'est permis...)
$k = (string) $i;
for($j=0;$j<strlen($k);$j++)
{
$m = "";
$m=substr($k, $j,$j+1);
control();
?><img src="<?php print($image) ?>"/><?php
}
function control()
{
if($m=="0")
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($m=="1")
$image="C:/wamp/www/chiffres/un.jpg";
else
if($m=="2")
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($m=="3")
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($m=="4")
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($m=="5")
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($m=="6")
$image="C:/wamp/www/chiffres/six.jpg";
else
if($m=="7")
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($m=="8")
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($m=="9")
$image="C:/wamp/www/chiffres/neuf.jpg";
}
?>
</body>
</html>
Merci a vous deux, le code tourne mieux: j'ai bien le nombre d'icones correspondant au nombre de chiffres de mon .txt. Y'a toujours un pb d'accès aux images...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Tests :
- Peux tu afficher la valeur de $k sur ta page car je suis pas sur du casting en (string)...et vérifier que tu a bien ce qui faut ?.
- Et afficher aussi la valeur de $m dans la boucle avant l'appel de control()....
A+.
Tests :
- Peux tu afficher la valeur de $k sur ta page car je suis pas sur du casting en (string)...et vérifier que tu a bien ce qui faut ?.
- Et afficher aussi la valeur de $m dans la boucle avant l'appel de control()....
A+.
A rollin'babe: echo ne change rien par rapport a print
A christounet: j'affiche bien $k mais a chaque réaffichage de la page il incrémente de deux
A christounet: j'affiche bien $k mais a chaque réaffichage de la page il incrémente de deux
<?php /* Date de création: 30/09/2008 */ ?>
<html>
<body>
<?php
$i=0;
$file=fopen("compteur.txt","r");
while (!feof($file))
$i =( int) fgets($file);
$i++;
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
$k = "";
?>
<p>Vous êtes le <?php
$k = (string) $i;
for($j=0;$j<strlen($k);$j++)
{
$m = "";
$m=substr($k, $j,$j+1);
control();
?><img src="<?php print($image) ?>"/><?php
}
function control()
{
if($m=="0")
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($m=="1")
$image="C:/wamp/www/chiffres/un.jpg";
else
if($m=="2")
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($m=="3")
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($m=="4")
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($m=="5")
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($m=="6")
$image="C:/wamp/www/chiffres/six.jpg";
else
if($m=="7")
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($m=="8")
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($m=="9")
$image="C:/wamp/www/chiffres/neuf.jpg";
}
?><sup>ème</sup> visiteur</p><?php
?>
</body>
</html>
<html>
<body>
<?php
$i=0;
$file=fopen("compteur.txt","r");
while (!feof($file))
$i =( int) fgets($file);
$i++;
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
$k = "";
?>
<p>Vous êtes le <?php
$k = (string) $i;
for($j=0;$j<strlen($k);$j++)
{
$m = "";
$m=substr($k, $j,$j+1);
control();
?><img src="<?php print($image) ?>"/><?php
}
function control()
{
if($m=="0")
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($m=="1")
$image="C:/wamp/www/chiffres/un.jpg";
else
if($m=="2")
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($m=="3")
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($m=="4")
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($m=="5")
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($m=="6")
$image="C:/wamp/www/chiffres/six.jpg";
else
if($m=="7")
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($m=="8")
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($m=="9")
$image="C:/wamp/www/chiffres/neuf.jpg";
}
?><sup>ème</sup> visiteur</p><?php
?>
</body>
</html>
Re,
Ok mais avec l'affichage de $k si possible et pas de l'image pour le moment.
Je voudrais comprendre pourquoi il incrémente de 2...
(:>)
Ok mais avec l'affichage de $k si possible et pas de l'image pour le moment.
Je voudrais comprendre pourquoi il incrémente de 2...
(:>)
<html>
<body>
<?php
$i=0;
$file=fopen("compteur.txt","r");
while (!feof($file))
$i =( int) fgets($file);
$i++;
/*?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php*/
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
?>
<p>Vous êtes le
<?php
$k = "";
$k = (string) $i;
for($j=0;$j<strlen($k);$j++)
{
$m = "";
$m=substr($k, $j,$j+1);
control();
?><img src="<?php echo($image) ?>"/><?php
}
?>
<sup>ème</sup> visiteur</p>
<?php
function control()
{
if($m=="0")
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($m=="1")
$image="chiffres/un.jpg";
else
if($m=="2")
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($m=="3")
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($m=="4")
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($m=="5")
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($m=="6")
$image="C:/wamp/www/chiffres/six.jpg";
else
if($m=="7")
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($m=="8")
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($m=="9")
$image="C:/wamp/www/chiffres/neuf.jpg";
}
echo ($k);
?>
</body>
</html>
<body>
<?php
$i=0;
$file=fopen("compteur.txt","r");
while (!feof($file))
$i =( int) fgets($file);
$i++;
/*?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php*/
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
?>
<p>Vous êtes le
<?php
$k = "";
$k = (string) $i;
for($j=0;$j<strlen($k);$j++)
{
$m = "";
$m=substr($k, $j,$j+1);
control();
?><img src="<?php echo($image) ?>"/><?php
}
?>
<sup>ème</sup> visiteur</p>
<?php
function control()
{
if($m=="0")
$image="C:/wamp/www/chiffres/zero.jpg";
else
if($m=="1")
$image="chiffres/un.jpg";
else
if($m=="2")
$image="C:/wamp/www/chiffres/deux.jpg";
else
if($m=="3")
$image="C:/wamp/www/chiffres/trois.jpg";
else
if($m=="4")
$image="C:/wamp/www/chiffres/quatre.jpg";
else
if($m=="5")
$image="C:/wamp/www/chiffres/cinq.jpg";
else
if($m=="6")
$image="C:/wamp/www/chiffres/six.jpg";
else
if($m=="7")
$image="C:/wamp/www/chiffres/sept.jpg";
else
if($m=="8")
$image="C:/wamp/www/chiffres/huit.jpg";
else
if($m=="9")
$image="C:/wamp/www/chiffres/neuf.jpg";
}
echo ($k);
?>
</body>
</html>
Bon,
(;>)...on v y arriver mais je crois qu'on se comprends pas.
Je voudrais ceci dans ton code en fait :
.......................................
$k = "";
$k = (string) $i;
<?php echo ($k);
?>
..........................................
Tu testes et tu me tiens au courant.
A++.
(;>)...on v y arriver mais je crois qu'on se comprends pas.
Je voudrais ceci dans ton code en fait :
.......................................
$k = "";
$k = (string) $i;
<?php echo ($k);
?>
..........................................
Tu testes et tu me tiens au courant.
A++.
<html>
<body>
<?php
$i=0;
$file=fopen("compteur.txt","r");
while (!feof($file))
$i =( int) fgets($file);
$i++;
/*?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php*/
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
?>
<p>Vous êtes le
<?php
$k = "";
$k = (string) $i;
echo ($k);
/*
for($j=0;$j<strlen($k);$j++)
{
$m = "";
$m=substr($k, $j,$j+1);
control();
?><img src="<?php echo($image) ?>"/><?php
}
?>*/
?>
<sup>ème</sup> visiteur</p><?php
/*
<?php
function control()
{if...}
*/
echo ($k);
?>
</body>
</html>
La avec les commentaires de part et d'autre de l'affichage des images, $k incrémente bien de 1
<body>
<?php
$i=0;
$file=fopen("compteur.txt","r");
while (!feof($file))
$i =( int) fgets($file);
$i++;
/*?>
<p>Vous êtes le
<?php echo ($i);
?>
<sup>ème</sup> visiteur</p>
<?php*/
fclose($file);
$file=fopen("compteur.txt","w");
fputs($file,"$i");
fclose($file);
?>
<p>Vous êtes le
<?php
$k = "";
$k = (string) $i;
echo ($k);
/*
for($j=0;$j<strlen($k);$j++)
{
$m = "";
$m=substr($k, $j,$j+1);
control();
?><img src="<?php echo($image) ?>"/><?php
}
?>*/
?>
<sup>ème</sup> visiteur</p><?php
/*
<?php
function control()
{if...}
*/
echo ($k);
?>
</body>
</html>
La avec les commentaires de part et d'autre de l'affichage des images, $k incrémente bien de 1
Ok,
C'est bon pour toi cette variable ??? (g po tout compris mais po grave..).
Alors :
- Enlève tous les "echo ($k)".
- Affiche et testes maintenant $m stp.
.....................................................
$m = "";
$m=substr($k, $j,$j+1);
echo($m);
control();
....................................................
Testes et vérifie que $m est correctement décomposé - compare avec le "echo ($k)".
A++.
C'est bon pour toi cette variable ??? (g po tout compris mais po grave..).
Alors :
- Enlève tous les "echo ($k)".
- Affiche et testes maintenant $m stp.
.....................................................
$m = "";
$m=substr($k, $j,$j+1);
echo($m);
control();
....................................................
Testes et vérifie que $m est correctement décomposé - compare avec le "echo ($k)".
A++.
le $m fonctionne bien, et affiche la même valeur que $k quand je les 'echo' tous les deux (j'ai réussi a foutre un beau bordel dans mon code avec mes /* et mes ?> X-p)
Non; j'ai toujours le logo avec la feuille en deux morceaux mais les url des images sont bons ("C:/wamp/www/chiffres/un.jpg" etc.)
Bonjour,
Dans quel répertoire se trouve ta page html, car si tes images sont dans le même répertoire, tu dois mettre comme chemin d'accès$image="un.jpg";, etc.
Si tes images sont dans un sous-répertoire, alors utilses$image="../chiffre/un.jpg"; car je pense qu'il ne faut pas mettre le chemin complet avec la lettre du disque.
A plus
Dans quel répertoire se trouve ta page html, car si tes images sont dans le même répertoire, tu dois mettre comme chemin d'accès$image="un.jpg";, etc.
Si tes images sont dans un sous-répertoire, alors utilses$image="../chiffre/un.jpg"; car je pense qu'il ne faut pas mettre le chemin complet avec la lettre du disque.
A plus