Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2011, 12h11   #1
Membre à l'essai
 
Inscription : septembre 2006
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : septembre 2006
Messages : 74
Points : 20
Points : 20
Par défaut Enregistrer volume téléchargement

Bonjour à tous,

Voilà, j'utilise la portion de code ci-dessous afin que les visiteurs de mon site puissent télécharger leurs fichiers. J'aimerais pouvoir, pour chaque téléchargement, enregistrer le volume téléchargé par le visiteur et l'enregistrer dans la base MySQL.
Le soucis avec le code ci-dessous, c'est que si le visiteur à télécharger entiérement le fichier ou pas, rien ne s'enregistre dans la base.

Quelqu'un à-t-il une idée du pourquoi ?

Code :
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
 
// On prépare l'enregistrement du quota ****************
    $NbOctectsTotal = 0;
 
  if(preg_match('#HTTP/1.1 200 OK#', $head) or preg_match('#HTTP/1.1 302 Found#', $head) or preg_match('#HTTP/1.1 206 Partial Content#', $head))
  {
  	header($head);
 
  while (!feof($sock) and $cabeza = fgets($sock) and preg_match('#.+:.+#', $cabeza)) 
  {
   header($cabeza);
  }
  header('Content-Disposition: attachment; filename="'.$nomdufichier.'"');
 
  while (!feof($sock) && !connection_aborted())
  {
  $NbOctetsTotal += 8192;
  echo fread($sock, 8192);
    @flush();
  @ob_flush();
  }
  $status = (!connection_aborted());
  fclose($fp);
  $VolumeDownload += ($NbOctectsTotal / 1000);
  set_magic_quotes_runtime(get_magic_quotes_gpc());
// Enregistrement du volume téléchargé
  $query = "UPDATE membres SET Volume_Download = ".$VolumeDownload." WHERE IDMembres = '".$idmembre."' LIMIT 1;";
  mysql_query($query);
// Selon si la connection est interrompue ou pas, on enregistre l'état du téléchargement 
  if ($status) {
  $query = "UPDATE telechargements SET Resultat = 'Ok' WHERE IDMembres = '".$idmembre."' AND IDLiens = '".$idlien."' LIMIT 1;";
  mysql_query($query);
} else {
  $query = "UPDATE telechargements SET Resultat = 'KO -->".$VolumeDownload."' WHERE IDMembres = '".$idmembre."' AND IDLiens = '".$idlien."' LIMIT 1;";
  mysql_query($query);
}
  mysql_close($db);
Je suis vraiment coincé, cela fait 3 jours que je cherche, merci d'avance pour votre aide.
fweds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 13h41   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Comment fais-tu pour intercepter l'arrêt de la connection ?

As-tu vérifié les retours de tes requêtes ? Tu pourrais faire comme ça:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$res = array(
  'update_membre' => array(),
  ...
);
 
...
 
$query = "UPDATE membres SET Volume_Download = ".$VolumeDownload." WHERE IDMembres = '".$idmembre."' LIMIT 1;";
$res['update_membres'][] mysql_query($query);
 
...
 
var_dump($res);
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 14h24   #3
Membre à l'essai
 
Inscription : septembre 2006
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : septembre 2006
Messages : 74
Points : 20
Points : 20
Bonjour,

J'utilise !connection_aborted() pour savoir si le téléchargement est interrompu ou pas.

Je ne peut pas récupérer le résultat des requêtes car le code fait partie de la page qui déclenche le téléchargement du fichier. Je ne vois pas comment récupérer ce résultat...
fweds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 14h26   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
J'utilise !connection_aborted() pour savoir si le téléchargement est interrompu ou pas.
Justement, j'aimerai beaucoup savoir comment ça fonctionne.

Citation:
Je ne peut pas récupérer le résultat des requêtes car le code fait partie de la page qui déclenche le téléchargement du fichier. Je ne vois pas comment récupérer ce résultat...
Alors fais-le tracer sur un log. Et fais un tailf sur ton log lors du runtime
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h10.


 
 
 
 
Partenaires

Hébergement Web