Fonction compteur
Résolu
Debutant en webmastering
Messages postés
401
Date d'inscription
Statut
Membre
Dernière intervention
-
Debutant en webmastering Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Debutant en webmastering Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
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 :
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
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:
- Fonction compteur
- Compteur électrique - Guide
- Fonction si et - Guide
- Compteur contractions - Télécharger - Santé & Bien-être
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- Fonction miroir - Guide
3 réponses
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....
ouais..... et bien plus souvent encore... les gens travaillent avec une base de données...
Oui dans les grandes lignes.
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.
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.
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";
}
}
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