Gestion de téléchargements - PHP - Programmation
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.
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.
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
Marsh Posté le 10-11-2002 à 13:20:44
Et comment ça fonctionne? (dsl je ne suis qu'un débutant en PHP)
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 :
|
page de download (down.php)
Code :
|
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.
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
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!
Marsh Posté le 12-11-2002 à 16:33:40
ReplyMarsh 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?
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 |
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
Marsh Posté le 12-11-2002 à 17:36:13
je connais le html
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
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.
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.
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
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.
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.
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
|
Apparament il y a une erreur ici:
Code :
|
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?
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'] "
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 :
|
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 :
|
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:
|
Question con, c'est quand que tu donne une valeur à $result ?
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?
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? |
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.
Marsh Posté le 13-11-2002 à 21:06:06
Donc revoici mon code:
Code :
|
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 |
Marsh Posté le 13-11-2002 à 21:16:23
ReaL_MathoS a écrit a écrit : Donc revoici mon code:
|
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.
Marsh Posté le 13-11-2002 à 21:38:25
Je'en ai marre je ne comprend rien:
Le code est bon là non?
Code :
|
Il me met cette erreur pourtant :
Citation : Parse error: parse error, unexpected T_WHILE in downloadscript.php on line 8 |
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.
Marsh Posté le 13-11-2002 à 21:46:56
Reply
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