Incrémentation dans une base de donnée

Fermé
Boskozz - 22 juil. 2008 à 00:02
 Boskozz - 25 juil. 2008 à 10:30
Bonjour,
Je me suis fais un site regroupant mes compositions, triées et classées ... et j'aimerais,
lorsqu'une personne télécharge un morceau, que le compteur soit incrémenté
d'un dans la base donc
Voici mon code et quelques tentatives ...

Code PHP :
<a href="music'.$data['chemin'].'" onclick="incdl('.$data['nbdl'].','.$data['id'].' )">Lien</a>

Code Javascript enfin plutot la tentative :) :
<SCRIPT language="Javascript">
<!--
function incdl(nb, iid){
$sql = "UPDATE `nbdl` = `nbdl`+1 WHERE `id` = ".&data['id'];
$resultat = mysql_query($sql);
}
-->
</SCRIPT>

D'avance merci ....

3 réponses

CIAnure Messages postés 41 Date d'inscription mercredi 15 août 2007 Statut Membre Dernière intervention 29 janvier 2010 29
22 juil. 2008 à 00:15
Là, tu mélange Javascript et PHP. c'est pas possible.

Sinon pour te répondre, il faut:

1) quand on télécharge ta musique, tu appelle une fonction javascript avec comme paramètre le numéro de ta musique et le nombre de téléchargement jusqu'à présent.
2) Ta fonction Javascript recharge la page avec les paramètres en méthode POST
3) Tu récupère les paramètres dans ta variable $_POST (donc en PHP)
4) Tu fait un appel MySQL pour incrémenter en base, la table qui comporte le nombre de téléchargement pour cette musique.

Est-ce clair pour toi? Bon courage. CIAnure
0
Merci et non pas assez clair :) Pour reprendre point par point.

1 et 2) <a href="music<?php echo $data['chemin']?>" onclick="incdl('<?php echo $data['nbdl']?>','<?php echo $data['id']?>' )">Lien</a>
Est ce que cette ligne est correcte ? j'imagine que non vu que je dois définir quelques part la méthode d'envoi POST, avec un formulaire je vois mais ici pas :s

3) pour récupérer les variable POST, ce serait comme ceci :
function incdl( nbdl , id ){
$sql = "UPDATE `nbdl` = ".$_POST['nbdl']."+1 WHERE `id` = ".$_POST['id'];
$resultat = mysql_query($sql);
}

4) lorsqu'on fait appelle a MySQL, faut il lui ouvrir la table dans le script lui même ? et la fermer ?

Moi non plus j'sais pas si j'ai été clair ;) J'espère ... et bon courage pour la réponse ;)
0
CIAnure Messages postés 41 Date d'inscription mercredi 15 août 2007 Statut Membre Dernière intervention 29 janvier 2010 29 > Boskozz
22 juil. 2008 à 12:33
1) ta ligne est bonne, mais met là entre les 2 balises <FORM name="form1"> </FORM>

2) Ta fonction Javascript doit recharger ton formulaire.

Ex :

function incdl( nbdl , id ){
document.form1.method = "POST";
document.form1.action = "Ton_URL?id="+id+"&nbdl="+nbdl
document.form1.submit();
}


3 et 4) Sur ta page, tu écrit un script PHP qui font un appel MySQL avec ce que tu veut (Tes parametres sont dans une variable $_POST)

Un problème que tu as, c'est que tu as l'air de ne pas bien maitrisé le PHP, MySQL et Javascript. Réfère toi aux cours. Bonne chance. CIAnure.
0
Boskozz > CIAnure Messages postés 41 Date d'inscription mercredi 15 août 2007 Statut Membre Dernière intervention 29 janvier 2010
23 juil. 2008 à 01:16
J'ai effectivement oublié pas mal de chose et je mélange tout, mais bon si t'as encore un peu de courage pour corriger ma tentative, cela me ferait très plaisir :)

1) Coté lien, j'ai donc ajouté <FORM name="form<?php echo $data['id']?>"><a href ... avec l'id comme numéro de form, sinon vu la création du tableau , je me retrouvais avec des tas de form1. Mais cela me pose un probleme ailleur ...
2) Ici, dans la fonction Javascipt :
function incdl( nbdl , id, menupage ){
document.form+id.method = "GET";
document.form+id.action = "index.php?menupage="+menupage+"&id="+id+"&nbdl="+nbdl;
document.form+id.submit();
}
Est ce correct ? .form+id. ? Ya t'il possibilité de faire des tests, voir si ya quelques chose qui bouge ... :)
3) Dernière chose, pour le script PHP, je doute avoir bien fais, j'ai inséré dans le <HEAD> les lignes suivantes :
if (isset($_GET['id']))
{ $sql = "UPDATE `nbdl` = ".$_GET['nbdl']."+1 WHERE `id` = ".$_GET['id'];
$resultat = mysql_query($sql);
}

Suis je complètement perdu ? Ou ,y a t'il encore un espoir ;) ?
Encore merci ...
PS : Voici mon site au cas ou tu voudrais voir du concret : www.boskozz.com
0
Ah oui j'ai oublié de dire aussi que tu m'avais dis la méthode POST mais étant donné que j'utilise déjà la méthode GET, j'ai tout passé en GET. Je ne sais pas si cela a vraiment des conséquences tant qu'il n'y a pas de données sécurisées ou privées. non ? :)

Encore merci ....
0
CIAnure Messages postés 41 Date d'inscription mercredi 15 août 2007 Statut Membre Dernière intervention 29 janvier 2010 29
23 juil. 2008 à 16:01
1) Faut que tu met qu'une fois la balise form ( haut de page qui englobe tout)
et ton form doit avoir un seul nom (Par exemple: form1)
donc <FORM name="form<?php echo $data['id']?> je ne voit pas l'intérêt

2) Ce qui fait que document.form+id.method = "GET"; ça ne peut pas marché
Met plutôt document.form1.method = "GET";

3)C'est bien la que tu dois faire ton appel MySQL. (Vérifie bien ta syntaxe quand même)

Sinon tu peut utiliser la méthode GET si tu veut, ça ne dérange pas. Bon courage
0
Salut, J'ai continué de chercher, j'ai mis quelques alert() pour vérifier les variables ... avec les alert(), pas de problème, tout va bien mais quand je veux exécuter ton script seul, je ne vois pas de modification dans l'URL tandis que lorsque je met la même URL que j'ai mise dans document.form1.action, là, il daigne me changer mon URL mais ne me permet plus le téléchargement :s et puis même l'incrémentation ne se fait quand même pas ... enfin ca c'est peut etre encore mon script qui n'est pas au point ... enfin je te remet mon code, si jamais tu pourrais encore m'éclairer :)
Encore merci ...

Javascipt : j'ai rien changé vu que ça semble être bon ... vu les tests.

<SCRIPT language="Javascript">
<!--
function incdl( nbdl , id, menupage ){
document.form1.method = 'GET';
document.form1.action = 'index.php?menupage='+menupage+'&id='+id+'&nbdl='+nbdl;
document.form1.submit();
}
// -->
</SCRIPT>

Script PHP : sachant que la base est ouverte au dessus et fermée en fin de page ...

if (isset($_GET['id']))
{
$sql = "UPDATE music SET nbdl = ".$_GET['nbdl']."+1 WHERE id = ".$_GET['id'];
$resultat = mysql_query($sql);
}

HTML : Ceci est une partie du code déja passé sur le serveur PHP ( extrait de l'exploreur internet )
Et j'ai bien mis qu'un seul Form ...

<form method="GET" name="form1">


<tr>

<td><a href="music/08/Absence.mp3" class="mnu" onClick="incdl('0','18','08' )">Absence</a></span></td>
<td><span class="texte0">2008-07-01</span></td>
<td><span class="texte1">0</span></td>
<td><a href="music/08/Absence.mp3" class="mnu" onClick="incdl('0','18','08' )">Lien</a></td>
</tr>
Encore un grand merci ...
0