XML au lieu Base de Données

Petit nouveau ! | 7 Messages

10 sept. 2010, 16:18

Bonjour,

Je suis en train de refaire mon site de galerie photos.

Je passe actuellement par MySQL pour circuler entre les différentes galeries.

Je me demande si cela ne serait pas possible de passe à la place par XML

Qu'en pensez vous.

Mon code (galerie PHP) :
<?php 
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>

<title>Hervé Dunoyer-Galerie Beauté</title>
<meta name="description" content="Photographe Beauté réalise vos publicités et éditoriaux " />
<meta name="robots" content="index,follow" />
<meta name="revisit-after" content="1 days" />
<meta name="classification" content="Photographe beauté" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<link href="librairie/CSS/style.css" rel="stylesheet" type="text/css" media="all" />

</head>

<body>

<div id="topstrip">

<!-- Fin du div topstrip --> 
</div>

<div id="topnav">

<?php

$pageName = "Galerie";

include ("templates/haut3.php");

?>

<!-- Fin du div topnav --> 
</div>


<table border="0" cellspacing="10" cellpadding="0">
	<tr>
		<td > 
		<div id="sidenav">
      
<?php

		$sous_pageName = "Beaute";

		include ("templates/cote3.php");

?>

		<!--- Fin Div sidenav --->
 		</div>
 
		</td>

		<td > 

<?php
    
		$Pos=intval($_GET["serie"]);

		$sql_image = "SELECT imageRefImage FROM tblImage WHERE imageSerieId=$Pos " ; 
		$result_image = mysql_query($sql_image)or exit ('Erreur SQ_image !'.$sql_image.'<br>'.mysql_error()); 

		$nblignes = mysql_num_rows($result_image);

?>

<?php

		while ($data_image=mysql_fetch_array($result_image))  
			{ 
?> 
			<td> 
   
<?php
   
				echo "<img src=images/{$data_image['imageRefImage']} height=420 >";

?>

			</td>

<?php

			}

?>	

	</tr>
</table>	


<div id="footer">


<?php			

include ("./templates/bas3.php");	  
	
?>	

<!--- Fin Div footer --->
</div>

</body>
</html>
Mon code cote3.php :
<h2>Portfolio</h2>

        <?php
        
 include("Connexion/connexion.php");       

$query = "SELECT * FROM tblSerie WHERE serieAffiche=1 ORDER BY serieTri";

$result = mysql_query($query) or exit ('Erreur SQL_theme !'.$result.'<br>'.mysql_error()); 

$nblignes = mysql_num_rows($result);


?>

<table>

<tr>

<?php

$tab=array(); 

$cpt=0; 

while ($data=mysql_fetch_array($result))  
	{ 
?> 
   <td > 
   
<?php
   

echo "<a href=galerie.php?serie={$data['serieId']}><img src=thumbs/{$data['serieRefVignette']}   >";

$path = "thumbs/$data[serieRefVignette]";

?>
   
</td>
 


 <?php //affichage 
    
   $tab[]=$data['serieId'];   
   $cpt++; 
   
   if (($cpt % 3 == 0) || ($cpt==$nblignes)) 
   		{ 
        echo "</tr><tr>"; 
        
       
        array_splice ($tab, 0);    // remise a zéro du tableau 
   		} 
   		
	} //fin du while

	


?>

</tr>

</table> 

ViPHP
AB
ViPHP | 5818 Messages

10 sept. 2010, 16:51

Et d'où te vient cette question ? Qui t'a dit que XML pouvait remplacer une base de donnée ?

Petit nouveau ! | 7 Messages

10 sept. 2010, 18:22

Personne ne m'a dit mais ce n'est peut être pas possible !!

Mammouth du PHP | 661 Messages

10 sept. 2010, 22:02

tout est possible, et dans certains cas une technique est plus adapte qu'une autre !

dans ton cas (dsl, j'ai pas tout lu)

si tu as une galerie d'image qui ne change qu'une fois par an, que tu n'as pas d'admin pour la maintenancer, et que tu ne te sert de la BDD que pour ça, il ne faut pas hésiter, des-installes mysql et utilises un xml, ou un fichier .txt, voir même rien du tout !... en parcourant dans un dossier, php est capable d'extraire l'url des fichiers à intégrer dans une galerie d'image !

Mais si tu as un Admin, et que ta galerie doit etre dynamique, je te conseille fortement de garder le principe des Bases de Données !...

@+

ViPHP
AB
ViPHP | 5818 Messages

11 sept. 2010, 18:19

Une bdd a l'avantage de pouvoir retourner des données très rapidement suivant des critères de recherches.

Les fichiers XML (extensible markup langage) tout comme les fichiers HTML (hypertext markup langage) sont des fichiers texte avec des balises qui permettent de structurer les données. Ces standards permettent un échange de données (en transmettant le fichier) entre différentes machines qui pourront interpréter ces langages. Le XML se différencie du HTML par le fait que l'on peut définir soi-même ses propres balises.

Voilà c'est tout... mais pas plus le XML que le HTML ne sont prévus pour faire des recherches optimisées de données. On peut le faire en parsant le fichier mais ce sera souvent plus compliqué à faire et très souvent moins performant qu'une recherche en bdd. Et ce sera d'autant moins performant que le volume des données sera important.

Voilà tu as les données du problème : pour faire ce que tu fait, la bdd est la voie royale, souple et extensible à souhait. Par contre pour de petits projets qui contiennent peu de données on peut structurer ses données dans un fichier texte et faire un tri minimaliste (minimaliste en comparaison de ce qu'on peut faire avec une bdd) en parsant le fichier. Mais encore une fois, ce n'est pas la façon de faire la plus recommandée car peu évolutive dans tous les sens du termes (volume des données, possibilités de tri etc.).

Donc à moins que ton besoin soit de transmettre facilement la liste de tes fichiers à d'autres personnes, tu n'as aucun avantage à passer par XML.

Pour terminer, si tu as un volume de données limité, tu peux aussi voir du côté de sqlite pour éviter de passer par le moteur mysql tout en gardant les avantages d'une bdd... (mais l'extension sqlite n'est pas activée chez tous les mutualisés).