[RESOLU] Lecteur de mangas hébergé en local

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Lecteur de mangas hébergé en local

Re: Lecteur de mangas hébergé en local

par Chabin971 » 11 avr. 2016, 14:14

Bon, me revoilà !

Après m'être pris la tête pendant un bon moment, j'ai réussi à trouver la solution à chaque problème :D

Il ne reste plus que la deuxième partie du site à faire : le design !

Merci à tous de m'avoir aider pour le codage :priere:

Re: Lecteur de mangas hébergé en local

par Chabin971 » 10 avr. 2016, 19:08

$list = glob("*");
Ce code va t'envoyer le contenu du répertoire courant (càd celui où est ton script PHP)

Si tu veux lister un répertoire, il faut que tu l'indiques dans ton glob :
$list = glob("ton_repertoire/*");
Merci :) ca fonctionne niquel ! J'ai refait mes pages de façons plus sécurisée et moins brouillon. Il ne me manque plus qu'une chose : l'affichage dynamique des pages :|

J'ai essayé deux trois petites manip mais elle n'ont pas fonctionnées :/ j'ai un array $pages contenant 24 pages et j'aimerais afficher la page 1 (avec sur la page, le lien de la page 2) etc ...

J'ai l'algorithme (a peu pres) mais j'arrive pas a le traduire en php

Tant que : il y'a des pages dans le tableau
Si : page =! derniere page
Afficher page avec lien page suivante
Sinon
Afficher page avec lien chapitre suivant
Fin Tant que


Et la c'est le drame, je me perds totalement.

J'aurais besoin d'afficher chaque pages de mon manga mais je n'arrive pas à m'organiser ^^' il faudrais que :

- la première page s'affiche en ayant le lien de la deuxième page (et ainsi de suite)

- la dernière page pointe vers le chapitre suivant

- les liens hypertexte soient dynamique (par exemple on a un lien nommé index.php/projet_manga/?manga=dreamland&chapitre=2&page=3) et quand on change l'url par "page=8" on atterrisse a la page 8 si elle existe

- que les images ne s'affichent pas seules ! (mon plus gros probleme pour le moment) car quand je fait (je le met en dur ici pour avoir un exemple concret)
<a href="lien image 2"><img src="lien image 1"></a>';

mon image s'affiche seule dans le navigateur (sans menus etc..) mais si je met le lien "index.php/projet_manga/?manga=dreamland&chapitre=2&page=3" elle ne s'affiche pas #-o

Merci d'avance pour votre aide et pour tout ce que vous avez fait depuis le début ^^

PS : si vous voulez voir le code des nouvelles pages, n'hésitez pas à demander

Re: Lecteur de mangas hébergé en local

par @rthur » 04 avr. 2016, 19:46

$list = glob("*");
Ce code va t'envoyer le contenu du répertoire courant (càd celui où est ton script PHP)

Si tu veux lister un répertoire, il faut que tu l'indiques dans ton glob :
$list = glob("ton_repertoire/*");

Re: Lecteur de mangas hébergé en local

par Chabin971 » 04 avr. 2016, 19:38

la condition de ton if est toujours vrai car tu utilise l'assignation de variable = plutot que la comparaison ==
double ton plus ca fonctionnera mieux.
Oui j'avais pas fait gaffe x) merci à toi :D

Par contre j'ai essayé de faire le glob() pour récupérer les fichiers du dossier manga/onepiece/chapitre1 mais ca ne fonctionne pas, c'est comme si il ne prennait pas en compte le fait qu'on au changé de répertoire car quand je fait un var_dump il me renvoie ce résultat :
array (size=3)
  0 => string 'autoload.php' (length=12)
  1 => string 'index.php' (length=9)
  2 => string 'manga' (length=5)
opendir() ne nous redirige pas vers le dossier ciblé ? ou c'est un problème de conflit entre opendir() et glob() ? ou j'ai refait une erreur dans le code ? xD pourtant j'ai pas écrit grand chose.

Voici le nouveau code :
if ($file == "chapitre 1") // si on a un fichier qui correspond à "chapitre 1" 
	{
		echo 'Test OK' ;		// on affiche Test OK
		$list = glob("*");            // on fais un glob pour obtenir tout les élements (il n'y aura que des fichiers jpg)
		var_dump($list); 		// on affiche le résultat
	}
Normalement ce code devrait me renvoyer un array avec le contenu du répertoire (les images 1.jpg et 2.jpg) mais c'est comme si la redirection vers le répertoire "chapitre 1" ne c'était pas faite :?:

Re: Lecteur de mangas hébergé en local

par Spols » 04 avr. 2016, 16:44

la condition de ton if est toujours vrai car tu utilise l'assignation de variable = plutot que la comparaison ==
double ton plus ca fonctionnera mieux.

Note supplémentaire
Dans ta boucle, tu peux te permettre d'utiliser l'assignation avec un simple = car tu désire boucler jusqu'à ce que l'assignation de ta variable $file échoue car il n'y a plus de "fichier" à lire.
Mais dans le cas de ta condition, il faut mettre l'opérateur de comparaison

Re: Lecteur de mangas hébergé en local

par Chabin971 » 04 avr. 2016, 16:04

Bonjour désolé pour le temps d'attente, je suis pas spécialement en forme, :cry:

Je me suis enfin remis à mon projet et j'ai essayé la méthode glob() mais je me heurte à un problème. Pour le moment, mes dossiers ont cette arborescence :

- autoload.php
- index.php
- manga
- one piece
- chapitre 1
- 1.jpg
- 2.jpg
- chapitre 2
- 3.jpg
- 4.jpg
- dreamland
- chapitre 1
- 5.jpg
- 6.jpg

De plus, ma BDD à changée (juste pour le test) elle contient une table mangas (id,nom,slug) ou slug est le chemin menant au dossier.
Par exemple on a en première ligne (1,'one piece', 'manga/onepiece/')

Maintenant, le problème est que si on veux regarder le 1er chapitre de one piece, on dois aller dans le répertoire one piece, puis dans le chapitre 1 et faire un glob pour récupérer les images. :x

Pour aller dans le 1er répertoire je n'ai par de soucis j'utilise opendir() mais je n'arrive pas a faire le reste ...

Voila le contenu de ma page index.php :
<?php
include_once('autoload.php');

// On admet que $db est un objet PDO.
$db = new PDO('mysql:host=localhost;dbname=test_manga', 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // On émet une alerte à chaque fois qu'une requête a échoué.


$dir = opendir("manga/onepiece"); 

while($file = readdir($dir)) 
{ 
	if ($file = "chapitre 1")
	{
		echo 'Test OK' ;
		// si ca fonctionne on fait un glob sur le chapitre
	}
} 
closedir($dir);
Quand je la test j'obtiens ce résultat : "Test OKTest OKTest OKTest OK"

Voila ou je bloque T^T ... merci pour votre aide :priere:

Re: Lecteur de mangas hébergé en local

par Chabin971 » 10 mars 2016, 14:54

Merci pour le conseil je testerais :) je manque un peu de temps pour continuer le projet mais je m'y remet ce week-end et je vous tiens au courant :D

Re: Lecteur de mangas hébergé en local

par @rthur » 07 mars 2016, 23:18

Regarde la fonction glob() de PHP, elle te permet de lister le contenu d'un répertoire en l'associant à un foreach()
http://php.net/manual/en/function.glob.php

Il faut d'abord que tu listes tous les répertoires qui correspondent à chacun de tes mangas et glob à un paramètre GLOB_ONLYDIR pour cela, et ensuite quand l'utilisateur aura sélectionner un manga (=un répertoire), tu fais un glob("*.jpg") et ça va te lister toutes les images (=les pages)

Re: Lecteur de mangas hébergé en local

par Chabin971 » 07 mars 2016, 21:35

Est-ce des images, des PDF, des epub ?
- Si tu as des images de chaque page, tu peux peut être t'inspirer des scripts de galerie photo.
J'ai bien des images de chaque page en format jpg :) je ne connais pas les epub j'irais me renseigner ^^

En ce qui concerne le développement je préfère tout faire moi-même pour me tester et savoir ce que je peux faire ^^

Pour être plus précis sur le résultat final, j'aimerais avoir quelque chose qui, au final, ressemblerais à ce site : http://www.lirescan.com/one-piece-lecture-en-ligne/
sur lequel on arrive sur la première page du chapitre après l'avoir sélectionné, et on lis les pages l'une après l'autre :wink:

Bien sur, après il faut pouvoir changer de chapitre ou de manga si le lecteur en a l'envie ^^ mais ça se fera dans un second temps.

Re: Lecteur de mangas hébergé en local

par @rthur » 07 mars 2016, 20:10

Bonjour,

Il faut d'abord que tu penses au format de tes mangas.
Est-ce des images, des PDF, des epub ?

- Si tu as la liberté de choisir, je te recommande epub3, et tu as un lecteur bien foutue opensource qui s'appelle Readium (qui existe en extension pour navigateur ou en librairie JS si tu veux l'intégrer toi même) : http://readium.org

- Si tu as du PDF, tu peux utiliser PDF.js qui est là aussi une lib opensource développée par Mozilla : https://mozilla.github.io/pdf.js/

- Si tu as des images de chaque page, tu peux peut être t'inspirer des scripts de galerie photo.


Tu peux aussi partir d'une solution existante et la personnaliser pour ton besoin :
en gratuit : https://github.com/firatakandere/mangareader
en payant : http://codecanyon.net/item/my-manga-reader-cms/12487949


Et enfin bien sûr tu as la solution de tout développer toi-même from scratch.
L'architecture que je verrai si tu n'as pas besoin d'une gestion forte des mangas, des utilisateurs, etc... serait simplement que tu utilises des répertoires avec 1 répertoire pour chaque Manga, dont le nom correspond au nom du manga et dedans tes fichiers images dans le bon ordre.
Pour afficher la liste des ouvrages, tu affiches simplement la liste des répertoires, et quand on clic dessus, tu charges chaque page contenu dans le répertoire de l'ouvrage

Lecteur de mangas hébergé en local

par Chabin971 » 07 mars 2016, 17:15

Bonjour à tous,

je me suis donné un petit projet assez sympathique à faire : un lecteur de mangas en PHP . (Pour ceux qui ne sont pas trop mangas, imaginez qu'il s'agit d'un lecteur de votre livre préféré :) )

Bien évidemment, celui-ci est hébergé en local pour ne pas avoir de soucis de droits d'auteurs. Le problème est que je ne vois pas comment faire.

Je m'explique, pour le moment :

- J'ai crée une base de donnée 'lecteur_mangas' en utf8_general_ci dans laquelle il y'a 3 tables (mangas, chapitres et avoir). Les tables mangas et chapitres ont un id et un nom uniquement (on reste vraiment dans la base de la base pour le moment, une fois que ça fonctionnera je me compliquerais un peu plus la tâche :) ) et la table avoir permet de relier les tables pour savoir quels chapitres appartiennent à quels mangas.
- J'ai un dossier 'lecteur_mangas' qui contient la base de mon site (dans le www de mon wamp) avec :
+ une page de connexion bdd
+ une page index
+ un dossier 'mangas' contenant les différents mangas triés par nom et chapitres
- Je pensais faire un affichage de la première page du manga, et sur cette page il y'aurais un lien pour la page suivante.


Les problèmes qui se posent sont :

- Comment faire des liens dynamique sur une image (par exemple pour que quand on est sur la page 2, ca pointe sur la page 3) si on ne sais pas que quelle page on se trouve ?
- Est-ce que pour un projet comme celui-la, héberger les images de chaque page dans la bdd serait un bon choix ? (ca ferais énormément d'images dans le futur quand meme .. )
- Comment obtenir le nombre de pages ? (le chapitre se finira a un moment, il faudra passer au chapitre suivant et non pas a la page suivante)


Ce que j'aimerais réussir à faire c'est un lecteur de mangas, c'est à dire non pas un site complet permettant de faire des recherches, tri etc ... mais bien juste la partie ou on affiche le nom du manga, le chapitre, la page lue et qu'on peux lire la page suivante en cliquant sur l'image.

Pour le moment j'en suis à la partie de réflexion mais après 2 jours je n'ai pas vraiment d'idées donc j'aimerais avoir vos avis, des conseils et un peu d'aide si possible x) merci à vous