Une base de données sans base de données ?

Résolu/Fermé
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 - 25 janv. 2011 à 09:36
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 - 7 févr. 2011 à 11:38
Bonjour,

Je voudrais savoir s'il était possible d'utiliser un système alternatif aux bases de données assez puissant.

Idéalement, j'aurais utilisé une base de données, mais je je en peux pas configurer/utiliser de base de données sur le serveur en question. Existe-t-il des technologies similaires SVP ?

Merci.

5 réponses

Eastchild Messages postés 318 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 28 mars 2012 31
Modifié par baladur13 le 2/02/2011 à 14:15
Bonjour,

Donc si j'ai bien compris, tu n'as pas de serveur SQL. Je te propose d'utiliser le XML : https://www.commentcamarche.net/contents/1332-xml-introduction-a-xml

no frame no pain
Remis lien conforme
1
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
25 janv. 2011 à 15:56
Salut,

L'alternative du XML semble la plus propre, mais seulement pour des petites bases a stocker.. Sinon ca deviendra très vite très lent et encombrant pour ton serveur.. ou alors faudra implémenter un système de cache mais la c'est un petit peu plus poussé.

Pour les cours de XML effectivement c'est assez simpliste dans l'ensemble vu que c'est Human readable, le plus dur sera de bien structurer tes fichiers afin de t'y retrouver facilement..

Pour te simplifier la tache, tu devrais utiliser la sérialisation pour te générer directement du XML si tu codes en objet, ca t'évitera de coder des parsers..

Pas besoin de réinventer la roue des classes toutes prêtes existent ;)
1
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
25 janv. 2011 à 16:26
Je pense que l'idéal serait d'avoir un exemple détaillé...

Par exemple, j'en ai vu un qui revenait souvent avec un liste de mp3 :

<?xml version="1.0"?>  
<compilation>  
 <mp3><titre>Foule sentimentale</titre><artiste>Alain Souchon</artiste></mp3>
 <mp3><titre>Solaar pleure</titre> <artiste>MC Solaar</artiste></mp3>
 <mp3><titre>Le baiser</titre> <artiste>Alain Souchon</artiste></mp3>  
 <mp3><titre>Pourtant</titre><artiste>Vanessa Paradis</artiste></mp3>
 <mp3><titre>Chambre avec vue</titre> <artiste>Henri Salvador</artiste> </mp3>  
</compilation> 


On revient souvent avec ça, mais concrètement comment je peux utiliser ça ?

Est-ce qu'il existe un moyen d'utiliser cette liste pour faire des requêtes (recherches, ajouts et suppressions de données ?

J'ai compris les bases du XML, c'est bien joli, mais pour en faire quoi. J'ai parcouru des forums et des cours à m'en taper la tête contre les murs et j'ai toujours rien... Comprenez ma frustration!
Ca n'est expliqué nulle part...

Merci à tous les deux pour votre aide jusqu'à présent, si je pouvais avoir un bout de code (en m'expliquant ou je dois mettre quoi) qui m'indiquerait ce que je peux faire avec ces foutus mp3 en xml, je serais vraiment content !

Merci d'avance...
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
Modifié par chico200987 le 25/01/2011 à 17:23
D'accord partons sur cet exemple.

Ce fichier XML est stocke a la racine dans "collection.xml".

Tu peux faire comme ceci :


<?php  

//debut classe
class compilation {  

 private $mesChansons;  
   
 //constructeur  
 public function __construct() {  
  $this->mesChansons = array();  
    }   
   
 public function loadChansons()  
 {  
  $data = file_get_contents("collection.xml");  
  // Attention ne marche que sous PHP5  
  $xml = new SimpleXMLElement($data);  
  $i = 0;  
  foreach($xml as $mp3)   
  {  
    $this->mesChansons[$i]['titre'] = $mp3->titre;  
    $this->mesChansons[$i]['artiste'] = $mp3->artiste;  
    $i++;  
  }  
 }  
   
 public function getChansons()  
 {  
  return $this->mesChansons;  
 }  
}  
//Fin de classe


//
$monObj = new compilation();  
$monObj-> loadChansons();  
$mesChansons = $monObj->getChansons();  

foreach ($mesChansons as $cle => $mp3)  
 echo "Titre : <b>" . $mp3['titre'] . "</b> de <b>" . $mp3['artiste'] . "</b><br />";  

?>  




Ce n'est qu'un ebauche vraiment minimale pour le chargement des donnees.
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
7 févr. 2011 à 10:08
Salut,

Comme $mesChansons est un array, tu peux utiliser toute les fonctions PHP pour les tableaux.

Par exemple la fonction sort() (cf : https://www.php.net/manual/fr/function.sort.php te permet de trier ton tableau par ordre alphabetique avec un simple :

$mesChansonsTrieesAlphaB = sort($mesChansons, SORT_STRING);


Pour avoir seulement ceux de la lettre A tu peux faire quelque chose comme :

// Declaration du tableau
$mesChansonsA = array();
$i = 0;
// Pour chaque mp3 du tableau du fichier XML
foreach ($mesChansons as $cle => $mp3)  
// Si la premiere lettre est un A
 if (stristr(substr($mp3['artiste'], 0, 1), "A"))
{
    // On l'ajoute dans le nouveau tableau
    $mesChansonsA[$i] = $mp3;
    $i++;
}
   


Pour verifier tu affiches ton nouveau tableau :

foreach ($mesChansonsA as $cle => $mp3)  
 echo "Titre : <b>" . $mp3['titre'] . "</b> de <b>" . $mp3['artiste'] . "</b><br />";  



Il est vrai que la petite classe d'au dessus je ne l'ai pas commente.. Si quelque chose te gene n'hesite pas :)
1
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
7 févr. 2011 à 10:45
Merci c'est super comme script... Au moins un programmeur qui pense aux débutants... Merci.
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
Modifié par chico200987 le 7/02/2011 à 11:39
Derien,

Mais j'ai oublie ta question sur l'ajout par formulaire..

Tu as deux solutions, soit manipuler directement le fichier XML en rajoutant du texte "a la main" (avec fopen(), fwrite(), etc..) mais ce n'est pas propre..

La deuxieme solution, c'est tout simplement dans la page de ton formulaire envoyé (ce que tu mets dans action=...) de :
- Importer la liste des chansons existantes comme on a fait dans loadChansons()
- Rajouter ton mp3 dans le xml en variable que tu viens de recuperer
- Exporter la liste dans ton fichier XML ce qui doit donner un truc du style :

// On charge le fichier xml  
$data = file_get_contents("collection.xml");   

// On declare notre objet pour le manipuler  
$xml = new SimpleXMLElement($data);   

// On rajoute un noeud mp3 dans ton objet  
$new_mp3 = $xml->addChild('mp3');  

// On lui met ses valeurs titre/artiste  
$new_mp3->addChild('titre', $_POST['titre']);  
$new_mp3->addChild('artiste', $_POST['artiste']);  

// On exporte l'objet directement dans le fichier xml  
$xml->asXML("collection.xml");  



Ce bout de code est a prendre avec des pincettes je fais ca sans tester, des erreurs peuvent s'y glisser et je m'en excuse si c'est le cas.. L'essentiel est que tu comprennes sans copier/coller tout le code betement ;)
0
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
7 févr. 2011 à 11:30
J'avais trouvé quelque chose à ce sujet entre-temps mais je préfère finalement ta version... Car comme tu dis, je comprends grâce çà ce que j'ai vu et ce que tu expliques... C'est ça que je cherche à faire... Ca m'intéresse, c'est tout.

Merci pour ton aide...
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
7 févr. 2011 à 11:38
Au plaisir !
0
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
Modifié par Fetide68 le 25/01/2011 à 14:30
C'est bien ce que je pensais...

Par contre merci pour ton lien et ton aide, mais les cours d'XML de CCM sont vraiment nuls (désolé de le dire, mais je n'aime pas du tout ces cours là en particulier). CCM t'explique en gros qu'XML c'est pas grand chose et qu'il y a pleins de choses qui gravitent autour, ce que disent pleins de sites sur le sujets...

Je suis largué, le meilleur lien que j'ai trouvé, c'est celui-ci : https://xml.developpez.com/

Mais c'est pas facile de trouver les bonnes bases...

Merci.
0
Eastchild Messages postés 318 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 28 mars 2012 31
25 janv. 2011 à 15:20
Ne t'inquiète pas, XML n'est pas très compliqué (une fois que tu as compris les bases tu peux quasiment tout faire) et se parse très bien avec du php :-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
2 févr. 2011 à 12:06
Merci Chico,

Désolé pour ma réponse tardive, mais il m'a fallu du temps pour déchiffrer ton code et ta classe. Elle reste peu orientée débutant, mais c'est la plus facile à comprendre de celles que j'ai vue.

A priori, tu utilises SimpleXML.

Est-il possible d'ajouter des mp3 dans le xml via des formulaires ?
Est-il possible aussi de créer des filtres (trier par ordre alpha, tous les artistes avec commençant par la lettre A) ?

Merci pour tout !
0