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

PHP & Base de données Discussion :

Créer un compteur de téléchargements en MySQL avec PHP [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut Créer un compteur de téléchargements en MySQL avec PHP
    Bonjour,
    je voudrais Créer un compteur de téléchargements en MySQL avec PHP
    je suis sous windows sous serveur wamp j'ai effectué la premiere etape je voudrais juste savoir est ce que je suis dans la bon chemin j'ai crée une table downloads_files dans la base de donnée

    qui s'appel gestion_abhm


    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
    34
    35
    36
    37
    <?php
    ****// Mini config
    ****$MYSQL_HOST = 'localhost';
    ****$MYSQL_DB = 'gestion_abhm';
    ****$MYSQL_USR = 'root';
    ****$MYSQL_PWD = '';
    ****$filesdir = 'C:\wamp\www\tests\Fichier'; // le chemin relatif où sont stockés les fichiers
    *
    ****// 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
    ****{
    ********//verification du fichier
    ********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."';";
    *
    ************// exécution de 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();
    ********};
    ****};
    ?>
    je viens de le tester j'ai rien reçu et mon compteur ne s'incremente pas
    j'ai besoin d'aide s'il vous plait
    voilà le fichier .php avec lequel j'ai testé :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
        <title>Test</title>
      </head>
      <body>
    <h3>NewsletTux 2</h3>
    	<p><a href="download.php?f=TD4.doc">Télécharger</a></p>
      </body>
    </html>

    j'ai essayé de faire une methode pour voir ou se trouve l'erreur :

    j'ai placé des echo partout dans mon code pour voir ou se coince

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <?php
    *
    ****// Mini config
    *
    ****$MYSQL_HOST = 'localhost';
    *
    ****$MYSQL_DB = 'gestion_abhm';
    *
    ****$MYSQL_USR = 'root';
    *
    ****$MYSQL_PWD = '';
    *
    ****$filesdir = 'C:\wamp\www\tests\Fichier';
    *
    echo "avant cnx.";
    *
    *****
    *
    ****$conn = mysql_connect($MYSQL_HOST, $MYSQL_USR, $MYSQL_PWD) or die(mysql_error());
    *
    ****mysql_select_db($MYSQL_DB, $conn) or die(mysql_error());
    *
    *echo "avant header.";
    *
    *
    *
    *****
    *
    ****$filename = (isset($_GET['f'])) ? trim(sprintf("%s", $_GET['f'])) : '';
    *
    echo "avant header0.";
    *
    ****if ($filename != '') // non vide
    *
    ****{
    *
    ********echo "avant header1.";
    *
    ********if ((file_exists($filesdir . $filename)) && (is_file($filesdir . $filename)))
    *
    ********{
    *
    ************echo "avant header2.";
    *
    ************$req_augmenterdownload = "UPDATE downloads_files
    *
    ************************SET
    *
    ****************************downloaded = (downloaded+1)
    *
    ************************WHERE
    *
    ****************************filename='".$filename."';";
    *
    *
    *
    *************
    *
    ************mysql_query($req_augmenterdownload) ;
    *
    *
    *
    *************echo "header.";
    *
    ************header("Location: ".$filesdir . $filename);
    *
    ************exit();
    *
    ********};
    *
    ****};
    *
    ?>
    message de sortie : avant cnx.avant header.avant header0.avant header1.
    donc cette condition ne l'accepte pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((file_exists($filesdir . $filename)) && (is_file($filesdir . $filename)))
    donc le probleme viens je pense de $filesdir qui recoit normalement le chemin du dossier ou existe le document j'ai mis proprieté et j'ai fait copier coller le chemin ou est le probleme maintenant

  2. #2
    Membre expérimenté
    Avatar de crozet.magenta
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 208
    Par défaut
    salut
    le problème vient surement d'ici : $filesdir = 'C:\wamp\www\tests\Fichier';
    pour rappel, l'antislash '\' est un caractère d'échappement donc il "anulle" le caractère suivant
    2 solutions : soit tu utilises des slash : $filesdir = 'C:/wamp/www/tests/Fichier';
    soit tu double les antislash : $filesdir = 'C:\\wamp\\www\\tests\\Fichier';

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Php dispose d'une fonction pour échapper ce qui serait nécessaire, à savoir la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addslashes('C:\wamp\www\tests\Fichier');
    qui te retournera ce que tu souhaites

  4. #4
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut
    voilà meme si j'ai changé comme vous m'avez dit rien ne passe le meme probleme qui se pose :

    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
    34
    35
    36
    37
    <?php
    	// Mini config
    	$MYSQL_HOST = 'localhost';
    	$MYSQL_DB = 'gestion_abhm';
    	$MYSQL_USR = 'root';
    	$MYSQL_PWD = '';
    	$filesdir = 'C:/wamp/www/tests/Fichier'; 
     
     
    	$conn = mysql_connect($MYSQL_HOST, $MYSQL_USR, $MYSQL_PWD) or die(mysql_error());
    	mysql_select_db($MYSQL_DB, $conn) or die(mysql_error());
     
     
     
    	$filename = (isset($_GET['f'])) ? trim(sprintf("%s", $_GET['f'])) : '';
     
    	if ($filename != '') // non vide
    	{
     
    		if ((file_exists($filesdir . $filename)) && (is_file($filesdir . $filename)))
    		{
     
    			$req_augmenterdownload = "UPDATE downloads_files
    						SET
    							downloaded = (downloaded+1)
    						WHERE
    							filename='".$filename."';";
     
     
    			mysql_query($req_augmenterdownload) ;
     
    			 echo "header.";
    			header("Location: ".$filesdir . $filename);
    			exit();
    		};
    	};
    ?>

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Que donne un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var_dump(is_file($filesdir . $filename));
    exit;
    Juste avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ((file_exists($filesdir . $filename)) && (is_file($filesdir . $filename)))

  6. #6
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut
    je recois le message suivant :
    boolean false

    voilà une capture ecran sur mon emplacement pour assurer bien les choses :

    si j'ai comis une erreur ou je sais pas
    Nom : Captureaide.PNG
Affichages : 610
Taille : 11,2 Ko

    j'ai aussi essayé de faire les deux :

    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
    34
    35
    36
    37
    38
    39
    40
    <?php
    	// Mini config
    	$MYSQL_HOST = 'localhost';
    	$MYSQL_DB = 'gestion_abhm';
    	$MYSQL_USR = 'root';
    	$MYSQL_PWD = '';
    	$filesdir = addslashes('..\tests\fichier'); 
     
     
    	$conn = mysql_connect($MYSQL_HOST, $MYSQL_USR, $MYSQL_PWD) or die(mysql_error());
    	mysql_select_db($MYSQL_DB, $conn) or die(mysql_error());
     
     
     
    	$filename = (isset($_GET['f'])) ? trim(sprintf("%s", $_GET['f'])) : '';
     
    	if ($filename != '') // non vide
    	{
    		var_dump(is_file($filesdir . $filename));
            var_dump(file_exists($filesdir . $filename));
    exit;
     
    		if ((file_exists($filesdir . $filename)) && (is_file($filesdir . $filename)))
    		{
     
    			$req_augmenterdownload = "UPDATE downloads_files
    						SET
    							downloaded = (downloaded+1)
    						WHERE
    							filename='".$filename."';";
     
     
    			mysql_query($req_augmenterdownload) ;
     
    			 echo "header.";
    			header("Location: ".$filesdir . $filename);
    			exit();
    		};
    	};
    ?>
    je recois a la fin deux boolean false donc il trouve rien et par contre j'ai mon dossier fichier et qui contien un document .doc existant et tout

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

Discussions similaires

  1. [MySQL] Créer un table Mysql avec php
    Par xunil2003 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/02/2014, 14h05
  2. Réponses: 1
    Dernier message: 31/01/2007, 11h59
  3. [MySQL] Connexion à la base MySQL avec PHP
    Par randriamanana dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 05/01/2007, 12h06
  4. Réponses: 1
    Dernier message: 28/04/2006, 16h17
  5. Importation d'un fichier xml vers une BD mysql avec php
    Par naima2005 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 28/04/2006, 15h23

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