Fonction compteur

Résolu/Fermé
Debutant en webmastering Messages postés 401 Date d'inscription lundi 6 juin 2011 Statut Membre Dernière intervention 27 janvier 2021 - Modifié par jordane45 le 8/01/2016 à 01:13
Debutant en webmastering Messages postés 401 Date d'inscription lundi 6 juin 2011 Statut Membre Dernière intervention 27 janvier 2021 - 10 janv. 2016 à 05:32
Bonjour, bonsoir,
je poste sur ce forum puisque dans le cadre d'un projet informatique, j'essaie de créer un compteur de vues un peu plus élaboré que la moyenne puisqu'il a pour but de fonctionner pour plusieurs articles avec évidemment pour chacun, un nombre de vues différent.

Concrètement je ne change pas les bases de création d'un compteur, je travaille toujours avec un fichier texte mais il contiendra des données du style :
slug_article=nb_vues

Le problème c'est que je ne maîtrise pas encore bien la syntaxe php : alors concrètement, avec ce que je sais faire en php et le reste en français ça donnerait :

function compteur_plus_un($string)
{
$temp = $string;
 $count = fopen('chemin\compteur.txt', 'r+');
  fseek($count, 0);

    là je souhaiterais boucler sur toutes mes lignes [while(! feof($count)){]

     et rechercher $temp //slug récupéré 

     si celui-ci est trouvé, la valeur après le '=' //format slug_article=nb_vues
     est incrémentée de 1 [if strstr($temp,$count){]

      sinon aller à la ligne et ajouter $temp=1 [fputs($count,$temp . '=1');]

 fclose($count);


j'aimerais tout d'abord savoir si ma façon de raisonner est correcte et si oui comment compléter cette fonction pour la rendre utilisable,
merci d'avance pour vos réponses.




Edit : Ajout du LANGAGE dans la balise de code.

Cordialement,  Debutant en webmastering
A voir également:

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
8 janv. 2016 à 01:18
Bonjour,

Pas besoin de "up" .... si personne ne répond... c'est que (plusieurs réponses possibles...)
- Personne ne sait
- Personne n'a compris la question
- Personne n'a envie de répondre
- Personne n'a le temps de répondre (ben oui... les gens on parfois un métier et d'autres occupations que de TE venir en aide...)

Bref... ça mis à part....


Concrètement je ne change pas les bases de création d'un compteur, je travaille toujours avec un fichier texte

ouais..... et bien plus souvent encore... les gens travaillent avec une base de données...


j'aimerais tout d'abord savoir si ma façon de raisonner est correcte

Oui dans les grandes lignes.


et si oui comment compléter cette fonction pour la rendre utilisable,

As tu au moins pris le temps de chercher un minimum ?
Lire un fichier ligne par ligne en php .. ce n'est pas les exemples qui manquent sur le net !

Faire une comparaison... ben ça se fait avec un IF ... et un "==" (ou "===")


Reviens avec après avoir fait un minimum d'efforts (donc avec du code un peu plus complet......) et si ça ne fonctionne toujours pas je me ferais un plaisir de t'aider.



1
Debutant en webmastering Messages postés 401 Date d'inscription lundi 6 juin 2011 Statut Membre Dernière intervention 27 janvier 2021
Modifié par Debutant en webmastering le 9/01/2016 à 18:17
Un peu sèche la réponse, je débute et j'ai déjà du mal avec les commandes PHP mais bon passons, j'ai un souci avec la commande file_put_contents et mon code donne ceci :
/*Incrémente le nombre de vues de l'article passé en argument*/
function compteur_plus_un($string)
{
$temp = $string;
$open = fopen('./views/views.txt', 'r+');
if ($open){
if (file_get_contents('./views/views.txt') != ''){
$lines = file('./views/views.txt');
foreach ($lines as $lineNb => $lineContent){
if (strstr($lineContent,$temp)){
$lineFound = $lineNb;
break;
}
}
if (isset($lineFound)){
$views = explode("=", $lines[$lineFound]);
$viewsInt = (intval($views[1]));
$viewsInt = $viewsInt+1;
$addFile = "\r\n".$temp."=".$viewsInt."";
file_put_contents($lines[$lineFound], $addFile);
}else{
$lines[] = "\r\n".$temp."=1";
}
}else{
fputs($open, "".$temp."=1");
}
fclose($open);
}else{
echo "Error";
}
}


J'ai vérifié avec un echo $addFile, et celle-ci est bien crée comme je le souhaite, mais sur un forum (oui je sais, se méfier des forums)
file_put_contents('lien_fichier[ligne_à_remplacer], nouvelle_valeur)
et c'est vraiment ce remplacement de la ligne par ma nouvelle qui me pose problème
0
Debutant en webmastering Messages postés 401 Date d'inscription lundi 6 juin 2011 Statut Membre Dernière intervention 27 janvier 2021
10 janv. 2016 à 05:32
Bon voilà, j'ai réussi après pas mal de recherches, je ne pense pas que ce soit optimisé mais ça fonctionne (première fonction incrémente de 1 les vues d'un article passé en argument ou l'instancie à 1 si non existant) et (la deuxième fonction récupère le nombre de vues correspondant à l'article passé en argument) le code ça donne :
/*Incrémente le nombre de vues de l'article passé en argument*/
function compteur_plus_un($string)
{
$temp = $string;
$open = fopen('./views/views.txt', 'a');
if ($open){
if (file_get_contents('./views/views.txt') != ''){
$lines = file('./views/views.txt');
foreach ($lines as $lineNb => $lineContent){
if (strstr($lineContent,$temp)){
$lineFound = $lineNb;
break;
}
}
if (isset($lineFound)){
$views = explode("=", $lines[$lineFound]);
$viewsInt = (intval($views[1]));
$viewsInt = $viewsInt+1;
$addFile = "".$temp."=".$viewsInt."\r\n";
$lines[$lineFound] = $addFile;
file_put_contents('./views/views.txt', implode($addFile, $lines));
$lines[] = "";
file_put_contents('./views/views.txt', implode("", $lines));
}else{
$lines[] = "".$temp."=1\r\n";
file_put_contents('./views/views.txt', implode($addFile, $lines));
}
}else{
fputs($open, "".$temp."=1\r\n");
}
fclose($open);
}else{
echo "Error";
}
}

/*Affiche le nombre de vues de l'article passé en argument*/
function affiche_views($string)
{
$temp = $string;
$open = fopen('./views/views.txt', 'r');
if ($open){
if (file_get_contents('./views/views.txt') != ''){
$lines = file('./views/views.txt');
foreach ($lines as $lineNb => $lineContent){
if (strstr($lineContent,$temp)){
$lineFound = $lineNb;
break;
}
}
if (isset($lineFound)){
$views = explode("=", $lines[$lineFound]);
return $views[1];
}else{
return 0;
}
}else{
return 0;
}
}else{
echo "Error";
}
}

1
Debutant en webmastering Messages postés 401 Date d'inscription lundi 6 juin 2011 Statut Membre Dernière intervention 27 janvier 2021
7 janv. 2016 à 23:00
up svp
-1