IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

mode d'emploi (compteur de telechargement)


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut mode d'emploi (compteur de telechargement)
    Bonjour,

    j'ai suivi à la lettre le tuto ici : http://www.php-astux.info/script-com...hargements.php
    malheuresement cela ne marche pas chez moi, et ça fait des heures que je cherche

    quand je test
    http://localhost/sdz/download.php?f=test.rar
    il y a la fenêtre de téléchargement (enregistré/exécuté/annuler) chose qui est normal mais l'incrémentation dans la bd ne se fait pas :s
    si quelqu'un peu m'aidez n'hésitez pas

    Voila le script de la page download.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    	// Mini config
    	$MYSQL_HOST = 'localhost';
    	$MYSQL_DB = 'test';
    	$MYSQL_USR = 'root';
    	$MYSQL_PWD = '';
    	$filesdir = ''; // le chemin relatif où sont stockés les fichiers (si pas mis dans la base)
     
    	// Connexion MySQL
    	$conn = mysql_connect($MYSQL_HOST, $MYSQL_USR, $MYSQL_PWD) or die(mysql_error());
    	mysql_select_db($MYSQL_DB, $conn) or die(mysql_error());
     
     
    	// Récupération du fichier passé en paramètre
    	$filename = (isset($_GET['f'])) ? trim(sprintf("%s", $_GET['f'])) : '';
     
    	if ($filename != '') // non vide
    	{
    		// IMPORTANT : avant quoi que ce soit, on vérifie que le fichier existe bien
    		if ((file_exists($filesdir . $filename)) && (is_file($filesdir . $filename)))
    		{
    			// Le fichier existe bien : on va incrémenter son compteur de téléchargements
    			$req_augmenterdownload = "UPDATE downloads_files SET downloaded = (downloaded+1) WHERE filename='.$filename.'";
     
    			// maintenant on exécute la requête
    			mysql_query($req_augmenterdownload) or die($req_augmenterdownload.'<br />'.mysql_error());
     
    			// requête effectuée : on envoie le fichier
    			header("Location: ".$filesdir . $filename);
    			exit();
    		};
    	};
    ?>
    page test.htm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h2>Zone téléchargements</h2>
     
    	<h3>Test 2</h3>
    	<p><a href="download.php?f=test.rar">Télécharger</a></p>

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Points : 68
    Points
    68
    Par défaut
    Ca doit etre la le probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_augmenterdownload = "UPDATE downloads_files SET downloaded = (downloaded+1) WHERE filename='".$filename."'";
    Rajoute les double quote car php interprete comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE downloads_files SET downloaded = (downloaded+1) WHERE filename='.monfichier.zip.'
    les deux points sont en trop

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    le problème viens de la db je crois voila la table

    CREATE TABLE downloads_files (
    filename VARCHAR(255) NOT NULL, -- je suppose que chaque fichier est unique
    downloaded INT(5) NOT NULL DEFAULT 0, -- par défaut, téléchargé 0 fois

    PRIMARY KEY(filename)
    ) Type = MyISAM;



    quand j'ai testé la requête sql

    Nombre d'enregistrements affectés : 0 (traitement: 0.0015 sec.)
    requête SQL:
    UPDATE downloads_files SET downloaded = ( downloaded +1 ) WHERE filename = 'test'



    dernière modification sur le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
    	// Mini config
    	$MYSQL_HOST = 'localhost';
    	$MYSQL_DB = 'test';
    	$MYSQL_USR = 'root';
    	$MYSQL_PWD = '';
     
    	// Connexion MySQL
    	$conn = mysql_connect($MYSQL_HOST, $MYSQL_USR, $MYSQL_PWD) or die(mysql_error());
    	mysql_select_db($MYSQL_DB, $conn) or die(mysql_error());
     
     
    	// Récupération du fichier passé en paramètre
    	$filename = (isset($_GET['f'])) ? trim(sprintf("%s", mysql_real_escape_string($_GET['f']))) : '';
     
    	if ($filename != '') // non vide
    	{
    		// IMPORTANT : avant quoi que ce soit, on vérifie que le fichier existe bien
    		if ((file_exists($filename)) && (is_file($filename)))
    		{
    			// Le fichier existe bien : on va incrémenter son compteur de téléchargements
    			$req_augmenterdownload = "UPDATE downloads_files SET downloaded = (downloaded+1) WHERE filename='.monfichier.zip.'";
     
    			// maintenant on exécute la requête
    			mysql_query($req_augmenterdownload) or die(htmlspecialchars($req_augmenterdownload) . '<br />' . mysql_error());
     
    			// requête effectuée : on envoie le fichier
    			header("Location: ".$filename);
    			exit();
    		};
    	};
    ?>

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    personne peu m'aidez :s ?

  5. #5
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Ta requête n'est pas bonne, prend celle que t'as mis djaih (le 1er morceau de code).

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    mon problème c'est au niveau de la requete :s j'ai essayer plusieurs truck mais ca ne fonctionne pas :s


    francoisIT explique si possible S.V.P j'ai pas compris :s

  7. #7
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Dans ton dernier post tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_augmenterdownload = "UPDATE downloads_files SET downloaded = (downloaded+1) WHERE filename='.monfichier.zip.'";
    Seulement cela n'est correcte. La requête va rechercher la chaine de caractère suivante :
    .monfichier.zip.

    Il y a peut de chance que tu es cela dans ta base.
    Par contre ce qu'avait indiqué djaih est correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_augmenterdownload = "UPDATE downloads_files SET downloaded = (downloaded+1) WHERE filename='".$filename."'";
    Une dernière chose il faut bien que tu vérifies que ta base ne soit pas vide. Si elle vide, ton script ne fera jamais d'insertion et donc encore moins d'incrémentation.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    merci ca marche x)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le grand mode d'emploi du forum, à lire si vous souhaitez tout savoir !
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 03/06/2013, 17h36
  2. [débutante][Concept] Destruction d'objet, mode d'emploi?
    Par skea dans le forum Général Java
    Réponses: 4
    Dernier message: 12/06/2004, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo