8791 sujets

Développement web côté serveur, CMS

Hi !

J'essais de creer un compteurs de clic (ou vue je sais pas trop comment dire sa) sur mon site web. Je stock dans ma base de donnée des articles, que j'appelent sur une page suivant leurs id (article.php?id=1 ...) et je voudrais afficher quelque chose du genre : Article vue ** fois.

J'ai crée dans ma table un nouveau champs : nb_clics en mediumint(8).

Ensuite dans ma page qui charge l'id, j'ai ecris le code suivant :

Vues :
<?php echo $resultat["nb_clics"];
if ($resultat["nb_clics"] <= 1)
{ ?>


Mais sa ne fonctionne pas je dois surment oublier un truc...

Si quelqu'un pouvait me filer un coup de main sa serait sympatique Smiley smile

Merci !
Modifié par Artefact (06 Jun 2008 - 16:37)
Salut,

Le code que tu viens de nous donner est incomplet je suppose, puisque la parenthèse"{" est ouverte, mais pas fermée.
Normalement, il doit ressemble à quelque chose du genre :



$nombre_de_clics = $resultat["nb_clics"] ; // tu sélectionne, dans la base de donnée, le nombre de clic actuel.
$nouveau_nombre_de_clic = $nombre_de_clics + 1 // tu rajoutes 1, tout simplement. Puis tu enregistres dans ta base de données ...
J'ai rajouté ceci :

<?php
mysql_connect("host", "login", "mdp"); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de ma base

// On ajoute une entrée avec mysql_query
mysql_query("UPDATE articles SET nb_clics='$nouveau_nombre_de_clics' WHERE ID='63'");
mysql_close();
?>


Pour l'articles dont le numero id est 63 sa a marché mais sa reste bloqué à 1 ?

<?php
mysql_connect("host", "login", "mdp"); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de ma base

// On ajoute une entrée avec mysql_query
[b]mysql_query("UPDATE articles SET nb_clics='".$nouveau_nombre_de_clics."' WHERE ID='63'");[/b]
mysql_close();
?>

Pour que ta variable $nouveau_nombre_de_clics soit bien pris en compte dans ta requête
Modifié par makata (05 Jun 2008 - 16:28)
Merci mais sa ne fonctionne toujours pas je dois faire quelque chose de travers Smiley ohwell Je te mets le code complet :

<?php 
$nombre_de_clics = $resultat["nb_clics"] ; // tu sélectionne, dans la base de donnée, le nombre de clic actuel.
$nouveau_nombre_de_clics = $nombre_de_clics + 1 // tu rajoutes 1, tout simplement. Puis tu enregistres dans ta base de données...
?>

<?php
mysql_connect("host", "login", "mdp"); // Connexion à MySQL
mysql_select_db("base"); // Sélection de ma base

// On ajoute une entrée avec mysql_query
mysql_query("UPDATE articles SET nb_clics='".$nouveau_nombre_de_clics."' WHERE ID='63'");
mysql_close();
?>


Et je l'appel comme sa :

<?php echo $row['nb_clics']; ?> fois

<?
mysql_connect("host", "login", "mdp"); // Connexion à MySQL

mysql_select_db("base"); // Sélection de ma base

$sql= mysql_query("SELECT nb_clics FROM articles WHERE ID='63'");//requête pour selectionner le nombre de clics
while ($nb_clics = mysql_fetch_row($sql))
{
$nouveau_nombre_de_clics = $nb_clics[0]+1; //on récupère le nombre de clics auquel on ajoute1
echo $nouveau_nombre_de_clics 'fois';//affichage
mysql_query("UPDATE articles SET nb_clics='".$nouveau_nombre_de_clics."' WHERE ID='63'");//actualisation de la table
}
mysql_close();
?>


Je pense que quelque chose comme ça devrai être pas mal.
Merci sa marche impec !

Encore une petite chose... Comment je fais pour modifier l'id sur laquel on clique ? Car la sa modifie juste celui de l'article dont l'id 63, mais pour les autres ?
Slt,

Sinon il y a une methode plus simple, et plus optimisée pour la BDD, puisqu'on peut le faire avec une seule requete:

mysql_query("UPDATE articles SET nb_clics=nb_clics+1 WHERE ID='63'");

C'est donc MySQL qui fait le calcul tout seul, et qui met à jour la base.


+++
makata a écrit :
Tu devrais voir du côté de $_POST ou méthode post et get je pense ^^
A la place de ta valeur 63 tu mettrai ta variable récupérée avec la méthode POST.


De cette façon ?

$id=$_POST{"commande"};


Et ensuite remplacer 63 par $commande ?

J'ai essayé mais sa n'a pas fonctionné Smiley sweatdrop .
Je viens de tester comme sa :

$id=$_POST['id'];


et en appeler le $id

Mais la même chose, pas de résultat.
Modifié par Artefact (06 Jun 2008 - 14:55)
ton article est lié à une url?
Si oui il te suffit de faire :

$id = $_GET['la_variable_dans_url'];

Et mettre $id dans ta requête comme expliqué dans le second lien

Si c'est un formulaire il faut que tu lui passe la méthode POST

<form method = "post">
$id=$_POST['la_variable'];
</form>


Un lien peut etre pour voir comment fonctionne tout ça? J'ai un peu de mal aujourd'hui ^^'
Problème résolu merci à tous !

Je place le code si sa peut aider certains :

<?
mysql_connect("host", "nom", "mdp"); // Connexion à MySQL
mysql_select_db("base"); // Sélection de ma base

$id=$_GET['id'];

$sql= mysql_query("SELECT nb_clics FROM articles WHERE ID='".$id."'");//requête pour selectionner le nombre de clics
while ($nb_clics = mysql_fetch_row($sql))
{

$nouveau_nombre_de_clics = $nb_clics[0]+1; // On récupère le nombre de clics auquel on lui ajoute 1

mysql_query("UPDATE videos SET nb_clics='".$nouveau_nombre_de_clics."' WHERE ID='".$id."'"); // Actualisation de la table
}
mysql_close(); // Déconnexion de MySQL
?>

Modifié par Artefact (06 Jun 2008 - 16:37)