Gestion de téléchargements

Gestion de téléchargements - PHP - Programmation

Marsh Posté le 09-11-2002 à 19:16:43    

Salut,  
Je voudrais savoir s'il existe un script de gestion de téléchargements qui permet de faire ça:
 
Je crée un fichier ou une base de donnée où j'inscris l'URL de tous les serveurs où se trouvent les fichiers que je propose en téléchargement sur mon site. Ensuite j'inscris les fichiers contenus dans chaque serveur. A partir de ça, au lieu de mettre l'URL directe vers le fichier que je veux télécharger, dans la page où je le propose en téléchargement, je donne juste le nom du fichier que je veux télécharger, et le script va directement chercher où se trouve ce fameux fichier dans la base de donnée. Il trouve dans quel serveur il se trouve, et lance le téléchargement.
 
Sinon, comment le faire?


Message édité par real_mathos le 09-11-2002 à 19:23:59
Reply

Marsh Posté le 09-11-2002 à 19:16:43   

Reply

Marsh Posté le 09-11-2002 à 20:04:38    

Laisses tomber, c'est impossible...  

Reply

Marsh Posté le 09-11-2002 à 20:44:52    

Hermes le Messager a écrit a écrit :

Laisses tomber, c'est impossible...  



C'est possible de le faire a condition que le serveur ou est installé php n'empêche pas les conections aux autres serveurs.

Reply

Marsh Posté le 09-11-2002 à 21:07:29    

il a pas besoin de se connecter aux autres serveurs car il cherche le fichier dans la liste des serveurs. En effet, il y a un fichier qui contient la liste des serveurs avec leurs URL, et plusieurs autres fichiers contenant chacun la liste des fichiers d'un serveur. Lors de la recherche, le premier fichier renvoie aux listes de fichiers des serveurs pour que le script trouve le fichier.

Reply

Marsh Posté le 10-11-2002 à 13:08:46    

down.php : (appel down.php?file=test.txt)
//sqlquery
//sqlfetcharray
header($row[url]);
 
normalement ça devrait suffire


---------------
...oups kernel error...
Reply

Marsh Posté le 10-11-2002 à 13:20:44    

Et comment ça fonctionne? (dsl je ne suis qu'un débutant en PHP)

Reply

Marsh Posté le 10-11-2002 à 13:45:56    

remarque :  
* 1 fichier n'est que sur 1 seul serveur
* l'url du serveur est terminée par un '/'
* l'url du serveur n'est pas masquée.
 
création d'une table (voir tutos)
une table serveur avec
id, url
une table fichier avec
id, server_id, nom
 
dans la première page tu listes les fichiers

Code :
  1. //connexion bd, voir tutos
  2. $query= "select nom from fichier";
  3. //exec de la query, voir tuto
  4. while ($row= mysql_fetch_array($result)){
  5.   echo '<a href="down.php?file='
  6.        . $row['nom']
  7.        . '">
  8.        . $row['nom']
  9.        . '</a><br>';
  10. }


 
page de download (down.php)

Code :
  1. $file= $HTTP_GET_VARS['file'];
  2. // connexion bd
  3. $query= "select url from serveur,fichier where nom='$file' and serveur.id=server_id";
  4. //exec query
  5. $row= mysql_fetch_array($result);
  6. if (count($row) == 1){
  7.   header($row[url].$file);
  8. }
  9. else{
  10.   echo 'fichier non trouvé';
  11. }


tu as la structure, à toi de consulter les tutos pour le code.
 
si tu veux un script tout fait, fais une recherche sur google, tu trouveras certainement ton bonheur.


---------------
...oups kernel error...
Reply

Marsh Posté le 10-11-2002 à 14:01:31    

Merci bcp je v essayer!

Reply

Marsh Posté le 10-11-2002 à 14:11:51    

mais je dois aller voir dans quels tutos?

Reply

Marsh Posté le 10-11-2002 à 14:15:28    

pour créer ta table je te conseille d'utiliser phpMyAdmin (programme de gestion de bd)
 
pour apprendre à utiliser mysql dans php, par exemple : http://www.toutestfacile.com/phpin [...] p&chap=bd0


---------------
...oups kernel error...
Reply

Marsh Posté le 10-11-2002 à 14:15:28   

Reply

Marsh Posté le 12-11-2002 à 16:17:52    

Salut,
qqn m'a conseillé d'utiliser une/des pages html comme base de données plutôt que MySQL car c'est plus rapide sous free. Est-ce que c'est vrai, et si oui, comment ça marche?
 
Merci d'avance!

Reply

Marsh Posté le 12-11-2002 à 16:33:40    

:heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 12-11-2002 à 16:35:18    

:??:

Reply

Marsh Posté le 12-11-2002 à 16:54:02    

ReaL_MathoS a écrit a écrit :

Salut,
qqn m'a conseillé d'utiliser une/des pages html comme base de données plutôt que MySQL car c'est plus rapide sous free. Est-ce que c'est vrai, et si oui, comment ça marche?
 
Merci d'avance!



Ce gas là c'est foutus de ta gueule.
Par contre pour stocker une page toute faite, les serveurs sql de free est quasiment aussi lent qu'un simple include mais dans tout les autres cas, il faut rajouter le temps de recherche de la bonne information et ca te ralonge beaucoup.
Et puis pourquoi s'emmerder à ffaire compliqué quand on peut faire simple?

Reply

Marsh Posté le 12-11-2002 à 16:55:44    

Oui mais je ne sais pas me servir de la base sql :cry:

Reply

Marsh Posté le 12-11-2002 à 17:14:03    

ReaL_MathoS a écrit a écrit :

Oui mais je ne sais pas me servir de la base sql :cry:  




 
a mon humble avis , commence par apprendre le HTML , ensuite un peu de PHP et SQL en parralelle , essaye de t'entrainer à creer des bases et des tables , fais des requetes a partir de tes pagesx WEB , ca sert à rien de commencer par la fin tu va t'embrouiller plus ke tu ne l'es deja  


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 12-11-2002 à 17:36:13    

je connais le html


Message édité par real_mathos le 12-11-2002 à 17:37:58
Reply

Marsh Posté le 12-11-2002 à 18:06:02    

ReaL_MathoS a écrit a écrit :

je connais le html




 
ben alors attaque le Php et le Mysql , mais fais un peu de SQL avant histoire d'y comprendre kelke chose


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 13-11-2002 à 14:27:33    

ethernal a écrit a écrit :

remarque :  
$query= "select url from serveur,fichier where nom='$file' and serveur.id=server_id";




ça veut dire quoi serveur.id=server_id? je dois mettre le nom du serveur? Mais dans ce cas il ne recherche pas auto où se trouve le fichier parmis les serveurs, si c'est à moi de préciser dans quel serveur se trouve le fichier.

Reply

Marsh Posté le 13-11-2002 à 17:09:23    

ReaL_MathoS a écrit a écrit :

 
ça veut dire quoi serveur.id=server_id? je dois mettre le nom du serveur? Mais dans ce cas il ne recherche pas auto où se trouve le fichier parmis les serveurs, si c'est à moi de préciser dans quel serveur se trouve le fichier.



Ben simplement, ta requête utilise deux table et pour pas voir revenir tout les couples possible des lignes d'une table avec les lignes de l'autre table, il faut que tu lui dises laquelle corespond à laquelle.
 
Dans la table serveur t'as un champ "id" qui est un identifiant et la valeur de ce champ à pour corespondance le champ "server_id" de l'autre table.
 
Ainsi le serveur sait quels sont les couples qu'il doit ramener.

Reply

Marsh Posté le 13-11-2002 à 18:32:30    

omega2 a écrit a écrit :

Ben simplement, ta requête utilise deux table et pour pas voir revenir tout les couples possible des lignes d'une table avec les lignes de l'autre table, il faut que tu lui dises laquelle corespond à laquelle.
 
Dans la table serveur t'as un champ "id" qui est un identifiant et la valeur de ce champ à pour corespondance le champ "server_id" de l'autre table.
 
Ainsi le serveur sait quels sont les couples qu'il doit ramener.




Euh... g pas compris grand chose. Si qqn pouvait m'expliquer en détails comment fonctionne ce sript, ça serait cool

Reply

Marsh Posté le 13-11-2002 à 18:41:24    

ReaL_MathoS a écrit a écrit :

 
Euh... g pas compris grand chose. Si qqn pouvait m'expliquer en détails comment fonctionne ce sript, ça serait cool



C'est pas un script, c'est une requête sql que tu comprends pas.
 
T'as deux tables :
 
serveur et fichier
 
serveur contient :
id nom_serveur (nom des colones)
1 www.toto.com
2 www.titi.fr.st
 
fichier contient :
id id_serveur url (nom des colones)
1   1         fichier1
2   1         fichier2
3   2         fichier3
4   1         ficheir4
 
Si tu mets pas ton id=server_id t'auras comme résultat :
www.toto.com   fichier1
www.titi.fr.st fichier1
www.toto.com   fichier2
www.titi.fr.st fichier2
www.toto.com   fichier3
www.titi.fr.st fichier3
www.toto.com   fichier4
www.titi.fr.st fichier4
 
Si tu mets pas ton id=server_id t'auras comme résultat :
www.toto.com   fichier1
www.toto.com   fichier2
www.titi.fr.st fichier3
www.toto.com   fichier4
 
 
Si avec ça, tu comprends toujorus pas alros il va faloir que t'ailles consulté une doc sur l'SQL par ce que là, je vois pas ce que je peux te donner comme autre explication.

Reply

Marsh Posté le 13-11-2002 à 18:43:10    

Merci j'ai compris!!!!  [:real_mathos]

Reply

Marsh Posté le 13-11-2002 à 19:07:01    

Mais je vois pas comment éxécuter la query :(

Reply

Marsh Posté le 13-11-2002 à 20:04:19    

C'est pas mysql_db_query($db,$sql); qu'il te manque comme commande?
 
Bon, voilà une fonction que j'utilise moi :
 
function send_sql($db, $sql) {
   if (! $res=mysql_db_query($db, $sql)) {
   echo mysql_error();
   exit;
   }
   return $res;
 }
 
Elle a l'avantage d'affiché un message d'erreur en cas de problème sans arrêter l'éxécution du programme.

Reply

Marsh Posté le 13-11-2002 à 20:29:33    

ethernal a écrit a écrit :

remarque :  
* 1 fichier n'est que sur 1 seul serveur
* l'url du serveur est terminée par un '/'
* l'url du serveur n'est pas masquée.
 
création d'une table (voir tutos)
une table serveur avec
id, url
une table fichier avec
id, server_id, nom
 
dans la première page tu listes les fichiers

Code :
  1. //connexion bd, voir tutos
  2. $query= "select nom from fichier";
  3. //exec de la query, voir tuto
  4. while ($row= mysql_fetch_array($result)){
  5.   echo '<a href="down.php?file='
  6.        . $row['nom']
  7.        . '">
  8.        . $row['nom']
  9.        . '</a><br>';
  10. }


 
page de download (down.php)

Code :
  1. $file= $HTTP_GET_VARS['file'];
  2. // connexion bd
  3. $query= "select url from serveur,fichier where nom='$file' and serveur.id=server_id";
  4. //exec query
  5. $row= mysql_fetch_array($result);
  6. if (count($row) == 1){
  7.   header($row[url].$file);
  8. }
  9. else{
  10.   echo 'fichier non trouvé';
  11. }


tu as la structure, à toi de consulter les tutos pour le code.
 
si tu veux un script tout fait, fais une recherche sur google, tu trouveras certainement ton bonheur.




Apparament il y a une erreur ici:

Code :
  1. while ($row= mysql_fetch_array($result)){
  2.   echo '<a href="down.php?file='
  3.        . $row['nom']
  4.        . '">
  5.        . $row['nom']
  6.        . '</a><br>';
  7. }


Il m'affiche des erreurs à cet endroit là, et quand je met le "?>"  de fin du code PHP, il ne le prend pas en compte comme tel mais comme une continuation du code (dans PHPEdit). Comment ça se fait?


Message édité par real_mathos le 13-11-2002 à 20:32:56
Reply

Marsh Posté le 13-11-2002 à 20:42:07    

T'as oublié un ' pour fermer la chaine de caractère.
L'erreur ce trouve entre les deux lignes
"       . $row['nom'] "

Reply

Marsh Posté le 13-11-2002 à 20:46:31    

omega2 a écrit a écrit :

T'as oublié un ' pour fermer la chaine de caractère.
L'erreur ce trouve entre les deux lignes
"       . $row['nom'] "




Donc je dois mettre ça non?

Code :
  1. while ($row= mysql_fetch_array($result)){
  2. echo '<a href="down.php?file=' 
  3.       . $row['nom']
  4.       . '">'
  5.       . $row['nom']
  6.       . '</a><br>';
  7. }


Message édité par real_mathos le 13-11-2002 à 20:47:14
Reply

Marsh Posté le 13-11-2002 à 20:52:25    

ça a corrigé le problème mais quand je lance le script, ça m'affiche ça:

Citation :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in downloadscript.php on line 8


Voilà mon code:

Code :
  1. <?php
  2. mysql_pconnect("localhost", "root", "" )
  3.       or die("Impossible de se connecter au serveur de bases de données." );
  4. mysql_select_db("autodownload" )
  5.       or die("Cette base de donnees n'existe pas" );
  6. $query= "select nom from fichier";
  7. //exec de la query, voir tuto  
  8. while ($row= mysql_fetch_array($result)){ 
  9. echo '<a href="down.php?file=wow.zip' 
  10.      . $row['nom'] 
  11.      . '">'
  12.      . $row['nom'] 
  13.      . '</a><br>'; 
  14. }
  15. ?>

Reply

Marsh Posté le 13-11-2002 à 20:53:42    

ReaL_MathoS a écrit a écrit :

ça a corrigé le problème mais quand je lance le script, ça m'affiche ça:

Citation :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in downloadscript.php on line 8


Voilà mon code:

Code :
  1. <?php
  2. mysql_pconnect("localhost", "root", "" )
  3.       or die("Impossible de se connecter au serveur de bases de données." );
  4. mysql_select_db("autodownload" )
  5.       or die("Cette base de donnees n'existe pas" );
  6. $query= "select nom from fichier";
  7. //exec de la query, voir tuto  
  8. while ($row= mysql_fetch_array($result)){ 
  9. echo '<a href="down.php?file=wow.zip' 
  10.      . $row['nom'] 
  11.      . '">'
  12.      . $row['nom'] 
  13.      . '</a><br>'; 
  14. }
  15. ?>





Question con, c'est quand que tu donne une valeur à $result ?

Reply

Marsh Posté le 13-11-2002 à 20:55:33    

Ben je sais pas quoi mettre comme valeur, je n'y connais pas grand chose, je viens à peine de débuter aujourd'hui... alors, c quoi qu'il faut mettre?  :pt1cable:


Message édité par real_mathos le 13-11-2002 à 20:57:24
Reply

Marsh Posté le 13-11-2002 à 21:02:09    

ReaL_MathoS a écrit a écrit :

Ben je sais pas quoi mettre comme valeur, je n'y connais pas grand chose, je viens à peine de débuter aujourd'hui... alors, c quoi qu'il faut mettre?  :pt1cable:



tu me l'as demandé plus haut. lol
A quoi ca sert que je te passe la fonction qui exécute la erquête si tu t'en sert pas. ;)

Reply

Marsh Posté le 13-11-2002 à 21:04:05    

c pas con du tt ça!  [:virginie]

Reply

Marsh Posté le 13-11-2002 à 21:06:06    

Donc revoici mon code:

Code :
  1. <?php
  2. mysql_pconnect("localhost", "root", "" )
  3.       or die("Impossible de se connecter au serveur de bases de données." );
  4. mysql_select_db("autodownload" )
  5.       or die("Cette base de donnees n'existe pas" );
  6. $query= "select nom from fichier";
  7. function send_sql($db, $sql) {
  8.   if (! $result=mysql_db_query($db, $sql)) {
  9.   echo mysql_error();
  10.   exit;
  11.   }
  12.   return $res;
  13. }
  14. while ($row= mysql_fetch_array($result)){ 
  15. echo '<a href="down.php?file=wow.zip' 
  16.      . $row['nom'] 
  17.      . '">'
  18.      . $row['nom'] 
  19.      . '</a><br>'; 
  20. }
  21. ?>


Et cette fois il m'affiche cette erreur (décidément):

Citation :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in downloadscript.php on line 14

Reply

Marsh Posté le 13-11-2002 à 21:16:23    

ReaL_MathoS a écrit a écrit :

Donc revoici mon code:

Code :
  1. <?php
  2. mysql_pconnect("localhost", "root", "" )
  3.       or die("Impossible de se connecter au serveur de bases de données." );
  4. mysql_select_db("autodownload" )
  5.       or die("Cette base de donnees n'existe pas" );
  6. $query= "select nom from fichier";
  7. function send_sql($db, $sql) {
  8.   if (! $result=mysql_db_query($db, $sql)) {
  9.   echo mysql_error();
  10.   exit;
  11.   }
  12.   return $res;
  13. }
  14. while ($row= mysql_fetch_array($result)){ 
  15. echo '<a href="down.php?file=wow.zip' 
  16.      . $row['nom'] 
  17.      . '">'
  18.      . $row['nom'] 
  19.      . '</a><br>'; 
  20. }
  21. ?>


Et cette fois il m'affiche cette erreur (décidément):

Citation :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in downloadscript.php on line 14





Bon, un petit truc. "function" indique le débbut d'une fonction. Mais si tu l'utilise pas, elle sera jamais exécuté.
 
Si j'ai un conseil à te donner, c'est de mettre toute les fonction au début du script ( un peu après le "<?" ) et ensuite de metrtre le reste. Comme ça, t'évites le problème des fonctions réputé inexistante alors que tu les a déclaré plus bas (sur certains serveurs tel que chez free.fr en php3, il y a ce problème là qui apparait quand on fait pas gaffe).
 
Bon, pour exécuter la fonction $result=send_sql($db, $query) là ou t'avais mis le "function ...".
 
Autre petit détail avant que tu viennes poser la question suivante : beaucoup de fonctions retourne une valeur faudrait peut être penser à la récupérer cette valeur (pas exemple la fonction mysql_pconnect ).
 
Bon, là, je vais pas te macher tout le boulot alros avant de poser la prochaine question, lit donc un tutoriel par ce que tu pose quand même pas mal de question de bases. ;)

Reply

Marsh Posté le 13-11-2002 à 21:38:25    

Je'en ai marre je ne comprend rien:
Le code est bon là non?

Code :
  1. <?php
  2. mysql_pconnect("localhost", "root", "" )
  3.       or die("Impossible de se connecter au serveur de bases de données." );
  4. mysql_select_db("autodownload" )
  5.       or die("Cette base de donnees n'existe pas" );
  6. $query= "select nom from fichier";
  7. $result=send_sql($db, $query)
  8. while ($row= mysql_fetch_array($result)){ 
  9. echo '<a href="down.php?file=wow.zip' 
  10.      . $row['nom'] 
  11.      . '">'
  12.      . $row['nom'] 
  13.      . '</a><br>'; 
  14. }
  15. ?>


Il me met cette erreur pourtant :(:

Citation :

Parse error: parse error, unexpected T_WHILE in downloadscript.php on line 8


Message édité par real_mathos le 13-11-2002 à 21:38:59
Reply

Marsh Posté le 13-11-2002 à 21:41:22    

Est-ce que tu pourrais me donner le code corrigé, et comme ça je regarderais les erreurs que j'ai faites, ça serait tt aussi bien.

Reply

Marsh Posté le 13-11-2002 à 21:46:56    

:lol:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 13-11-2002 à 21:48:53    

Il est content!
Ca sonne, il est content!  :sarcastic:

Reply

Marsh Posté le 13-11-2002 à 21:50:13    

:heink:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed