Mangateque administrable sans bdd, utilisation de simplexml

Soyez le premier à donner votre avis sur cette source.

Vue 7 889 fois - Téléchargée 781 fois

Description

Cette mangateque vous permet de gérer votre colection de manga.
Elle est utilisable sans aucune Base de Données puisqu'elle utilise un fichier XML.
L'utilisation du fichier XML est faite grace à la classe SimpleXML, pour cela le serveur doit accepter le PHP5 (d'où les extension .php5).
Entre autre option, on apprend ici à ouvrir-créer un XML et y ajouter-éditer-supprimer un noeud, le tout avec PHP.

--version mono--
Vous remarquerez que le XML contient d'autres infos, elles serviront à terme pour une gestion multi-utilisateurs.

--version multi--
n'importe qui peut visualiser l'ensemble des mangateques, mais seul le créateur d'une mangateque peut la modifier, il peut également uploader un CSS pour modifier ça mise en forme
-> il suffit de lancer le fichier install.php

Source / Exemple :


<?
echo "tout est dans le ZIP";

//exemple de sauvegarde d'un fichier XML
// \n --> Nouvelle ligne (linefeed, LF ou 0x0A (10) en ASCII) 
// \r --> Retour à la ligne (carriage return, CR ou 0x0D (13) en ASCII) 
// \t --> Tabulation horizontale (HT ou 0x09 (9) en ASCII)
	$contenu = "<?xml version='1.0' encoding=\"ISO-8859-1\" standalone='yes'?>\r\n";
	$contenu .= "<animes>\r\n";
	$contenu .= "\t<option>\r\n";
	$contenu .= "\t\t<title>".$xml->option[0]->title."</title>\r\n";
	$contenu .= "\t\t<name>".$xml->option[0]->name."</name>\r\n";
	$contenu .= "\t\t<img>".$xml->option[0]->img."</img>\r\n";
	$contenu .= "\t\t<css>".$xml->option[0]->css."</css>\r\n";
	$contenu .= "\t</option>\r\n";
	
	$classe  = 0;
	foreach ($xml->xpath('//anime') as $anime) {
		if ($classe <> $id) { //on compare la variable incrémenté $classe à la position de la ligne à supprimer $id
			$contenu .= "\t<anime>\r\n";
			$contenu .= "\t\t<nom>".$anime->nom."</nom>\r\n";
			$contenu .= "\t\t<episodes>".$anime->episodes."</episodes>\r\n";
			$contenu .= "\t\t<total>".$anime->total."</total>\r\n";
			$contenu .= "\t</anime>\r\n";
		} else {
			//on n'additionne pas la valeur, elle est donc supprimer
		}
		$classe++;
	}
	$contenu .="</animes>";
	@unlink($fichier);				//on supprime l'ancien fichier
	$fp = fopen($fichier,"w");		//on créé le nouveau fichier
	fseek($fp,0);					//on se met au debut du fichier
	fwrite($fp,$contenu);			//on met la nouvelle valeur
	fclose($fp);					//on ferme le fichier.

?>

Conclusion :


faites <? phpinfo(); ?> pour connaitre la version de PHP sur votre serveur

la version multi-utilisateur est opérationelle sur http://mangateque.nacedo.eu/

merci à http://www.php.net/manual/fr/ref.simplexml.php

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
39
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
13 janvier 2009

merci pour toutes ces informations
pff il y a tellement de chose de je ne connais pas...
mais c'est toujours plus facile quand on me l'explique. merci encor
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
1/ En fait <? est ce que l'on appelle un short tag. Ces short tags peuvent être désactivés dans la configuration de PHP grâce à la ligne short_open_tags placée à la valeur Off. De plus, si tu as en entête de ton fichier XHTML, cette ligne là :

<?xml version="1.0" encoding="UTF-8" ?>

Pour plus d'informations, je te conseille de lire le billet ci dessous et les autres réalisés par le même auteur sur ce site.

http://www.expreg.com/fred_article.php?art=balise_courte

2/ Oui l'arobase masque les erreurs. Mais c'est une mauvaise pratique de les masquer. Il faut toujours traiter les erreurs que le serveur te retourne, ça fait partie des bonnes pratiques de programmation.

3/ Pour les classes et attributs, regarde du côté de PHPDebutant.org et sur AZ-PHP je crois pour comprendre les principes de la POO.

++
Messages postés
13
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
15 janvier 2007

- j'ne suis que débutant donc je ne comprend pas tous se que tu dit, mais y a t'il une réelle différence entre <?php et <? ???
Si je ne me trompe pas <? est utilisé dans un autre langage, donc <?php marque bien le fait que c'est du php et pas autre chose.

- pour le @ cela vient d'un exemple trouvé sur le net que j'ai mis à ma sauce. le @ masque les erreurs???
Effectivement, le @ n'affiche pas les erreurs.

Voilà de ce que je sais ^^'
Messages postés
39
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
13 janvier 2009

webdeb
- j'ne suis que débutant donc je ne comprend pas tous se que tu dit, mais y a t'il une réelle différence entre <?php et <? ???
- pour le @ cela vient d'un exemple trouvé sur le net que j'ai mis à ma sauce. le @ masque les erreurs???
- pour se qui est des BdD, j'm'en passe car j'avais envi de tester quelque chose d'autre, et de toute façon je n'ai pas la prétention d'avoir 20000 utilisateurs.
- pour se qui est des classes et attributs je n'y comprends pas grand chose, donc si quelqu'un a un exemple concret, j'suis preneur.
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
1/ Les balises PHP c'est <?php et pas <?
2/ On ne met pas de @ devant une fonction. Quand il y'a une erreur on la traite mais on ne la masque pas. A quoi sert le débugger sinon ?
3/ C'est quoi cette mode en ce moment à ne pas vouloir utiliser de BDD ? C'est fait pour ça, alors utilise-les. C'est bien plus performant. Comment vas-tu faire quand il y'aura 20 000 enregistrements ? Ca va pas être un peu la galère à gérer ?
4/ Apparemment tu utilises des attributs publiques, c'est moche ! Normalement dans une classe, les attributs devraient être privés.
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.