<?php
try
{
$db_host = ""; //Lieu où est héberger la BDD
$db_name = ""; //Nom de la BDD
$db_login = ""; //Login de connexion à la BDD
$db_mdp = ""; //Mot de passe de connexion à la BDD
$bdd = new PDO("mysql:host=$db_host;dbname=$db_name",$db_login,$db_mdp);
}
catch(Exception $e)
{
exit('Erreur : ' . $e->getMessage());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Photos du carnaval de Venise, portraits sensationnels. portofolio de Tuan-Gallery, passionné de photographie et de voyages, il capture des moments de la vie dans ces voyages, des émotions, mais aussi des paysages a couper le souffle, tout ce qui se trouve sur son chemin. " lang="fr">
<meta name="description" content="Pictures of Venise Carnaval.portofolio of Tuan-Gallery, passionate in photograph and in trips, it captures instants of life in these trips, émotions, but also landscapes has cut breath, all that is on its way" lang="en">
<meta name="keywords" content="voyage, australie, etats-unis, usa, inde, cuba, paris, venise, carnaval, panoramique, insectes, portrait, animaux, architecture, urbaine, gens, moments, photographe,canon, numerique, portfolio, galeries, paysages, france, photographie, aborigenes, sydney, route 66, las vegas, californie, boutique, tirage photos, carnaval,venise,place saint marc,saint marco." lang="fr">
<meta name="keywords" content="travel, Australia, united states, employed, india, cuba, paris, Venice, carnival, pan, insects, portrait, animals, architecture, urban, people, instants, photographer, cannon, numerique, portfolio, gallery, landscapes, France, photographs, aborigenes, Sydney, sorts for mailing 66, weary vegas, California, shop, printing photographs" lang="en">
<script type="text/javascript">
function cocher(liste,bouton) {
var i = 0;
var coche = false;
if (bouton.value == 'Tout cocher') {
coche = true;
bouton.value = 'Tout décocher';
} else {
coche = false;
bouton.value = 'Tout cocher';
}
while (liste[i]) {
liste[i].checked = coche;
i++;
}
}
</script>
<style type="text/css" media="screen">
<!--
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: none;
}
a:active {
text-decoration: none;
}
body {
background-color: #000;
}
img {
width: 100px;
height: 100px;
margin: 0px;
padding: 0px;
border: 0px;
}
table, td {
border-collapse: collapse;
}
td {
width: 200px;
height: 100px;
text-align: center;
}
tr {
border: 1px solid black;
}
h3 {
color: red;
}
#btn_valider {
padding: 10px;
color: maroon;
}
-->
</style>
<title>Ajout de photos</title>
<link href="style_galerie.css" rel="stylesheet" type="text/css" />
<script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
//-->
</script>
<link rel="stylesheet" type="text/css" href="/shadowbox/shadowbox.css">
<script type="text/javascript" src="/js/jquery-latest.pack.js"></script>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/tooltip.js"></script>
<script type="text/javascript" src="/shadowbox/shadowbox.js"> </script>
<script type="text/javascript">
Shadowbox.init ();
</script>
<link rel="shortcut icon" href="/images/appareil.ico" />
<?php
if (isset($head)) { echo $head;}
?>
</head>
<!--code google analytics -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-13270017-1");
pageTracker._trackPageview();
} catch(err) {}</script>
<!--fin du code Google analytics -->
<body>
<div id="page">
<!--debut bando -->
<div id="bando">
<p><a href="../../menu_francais.html"><img src="images/banniere_tuan_gallery_photographie.jpg" width="750" height="39" alt="Tuan-Gallery Photographie" /></a></p>
<p> </p>
<p>- PHOTOS DU CARNAVAL DE VENISE -</p>
</div>
<!--fin bando -->
<!--debut barre haut -->
<div id="barrehaut">
<p> </p>
<img src="images/barre horizontale.jpg" width="800" height="1" alt="barre" /></div>
<!--fin barre haut -->
<!--debut image -->
<?php
//Liste des pays autorisés dans la bdd
$pays = array('france','usa','inde','australie','java','japon');
//Si $_GET['pays'] est appelé alors on affiche la liste des photos qui peuvent être ajoutées pour ce pays
if (isset($_GET['pays']) && in_array($_GET['pays'],$pays)) {
//On récupère le numéro du dernier trajet pour ce pays
$req = $bdd->prepare("SELECT max(gal_trajet) FROM galerie_photos WHERE gal_pays=:pays");
$req->bindValue('pays',$_GET['pays'],PDO::PARAM_STR);
$req->execute();
$last_trajet = $req->fetch();
$req->closeCursor();
/*
La requête si dessous va compter les enregistrements pour un nom de photo,
afin de vérifier que cette photo n'est pas déjà présente dans la bdd
*/
$req = $bdd->prepare("SELECT count(gal_id) FROM galerie_photos WHERE gal_photo=:photo");
if ($ouvre = @opendir('../uploads/petites/')) { //On ouvre le dossier uploads des petites photos pour lister les photos du dossier et les comparer avec celle déjà dans la bdd
?>
<form method="post" action="traitement.php?pays=<?php echo $_GET['pays']; ?>">
<table>
<?php
while (false !== ($fic = readdir($ouvre))) {
$req->bindParam('photo',$fic,PDO::PARAM_STR);
$req->execute();
if (($fic != ".") && ($fic != "..") && ($fic != 'petites')) { //On enlève le listage de dossier courant et précedent
$existe = $req->fetchColumn(); //Retourne le nombre d'enregistrement trouvé
if ($existe === '0') { //Si ne renvoi pas d'enregistrement alors on affiche les info pour ajouter la photo
?>
<tr>
<td>
<a href="<?php echo "../uploads/petites/$fic"; ?>" rel="lightbox-atomium"><img src="<?php echo "../uploads/petites/$fic"; ?>" alt="" /></a><br />
<?php echo $fic; ?>
</td>
<td>
Ajouter pour <strong><?php echo htmlspecialchars($_GET['pays']); ?></strong><input type="checkbox" name="fic[]" value="<?php echo $fic; ?>" />
</td>
<td>
<h4>Sens :</h4>
<p>
Horizontal <input type="radio" name="<?php echo "sens" . $fic; ?>" value="horizontal" /><br />
Vertical <input type="radio" name="<?php echo "sens" . $fic; ?>" value="vertical" />
</p>
</td>
<td>
<p>
Dernier numéro de trajet pour ce pays : <?php echo $last_trajet[0]; ?><br />
Ordre du trajet : <input type="text" name="trajet[]" maxlength="10" size="5" />
</p>
</td>
<td>
<p>
<label for="descr">Description</label><input type="text" name="descr[]" value="" id="descr" maxlength="500" size="50" /><br />
</p>
</td>
</tr>
<?php
} else { //Sinon une photo avec ce nom existe déjà
?>
<tr>
<td><a href="<?php echo "../uploads/petites/$fic"; ?>" rel="lightbox-atomium"><img src="<?php echo "../uploads/petites/$fic"; ?>" alt="" /></a></td>
<td colspan="3">
<h3>Une photo avec ce nom est déjà présente</h3>
</td>
</tr>
<?php
}
}
}
?>
<tr>
<td><a href="ajoutphotos.php">Retour au menu d'ajout</a></td>
<td><input type="button" value="Tout cocher" name="bouton" onclick="cocher(this.form.elements['fic[]'],this);"/></td>
<td>
Tout Horizontal<input type="radio" name="sens" value="horizontal" /><br />
Tout Vertical<input type="radio" name="sens" value="vertical" /><br />
Plusieurs choix <input type="radio" name="sens" value="plusieurs" checked="checked" />
</td>
<td><input type="submit" name="Valider" value="Valider" id="btn_valider" /></td>
</tr>
</table>
</form>
<?php
$req->closeCursor();
} else {
echo "<h1>Impossible d'ouvrir le dossier 'uploads/'</h1>";
}
} else {
?>
<h1>Choisissez le pays où ajouter des photos</h1>
<ul>
<?php
foreach ($pays as $lien_pays) {
?>
<li><a href="ajoutphotos.php?pays=<?php echo $lien_pays; ?>"><?php echo ucfirst($lien_pays); ?></a></li>
<?php
}
?>
</ul>
<a href="/?p=index">Retour à l'accueil</a>
<?php
}
?>
<!--fin image -->
<!--debut droite -->
<!--fin droite -->
<!--debut barre bas -->
<div id="barrebas"><img src="images/barre horizontale.jpg" width="800" height="1" alt="barre" /><p></p></div>
<!--fin barre bas -->
<!--debut tableau -->
<!--fin tableau -->
<!--debut bas -->
<div id="bas"><img src="images/barre horizontale.jpg" width="500" height="1" alt="barre" /></div>
<!--fin bas -->
<!--debut explications -->
<div id="explications">
<p> </p>
<img src="images/barre horizontale.jpg" width="800" height="1" alt="barre" />
</div>
<!--fin explications -->
<!--debut pied de page -->
<div id="menu">
<ul id="MenuBar1" class="MenuBarHorizontal">
<li><a href="../../menu_francais.html">Menu</a></li>
<li><a href="../accueil_galerie.html">Galerie Photos</a></li>
<li><a href="../boutique.html">Boutique</a></li>
<li><a href="../art&essais/art&essais_1.html">Art & Essais</a></li>
<li><a href="../presentation.html">A propos</a></li>
<li><a href="#" onclick="MM_openBrWindow('../contact.html','Contact','scrollbars=yes,width=500,height=350')">Contact</a></li>
<li><a href="../liens.html">Liens</a></li>
</ul>
</div>
<div id="barrefin"><img src="images/barre horizontale.jpg" width="800" height="1" alt="barre" /></div>
<script type="text/javascript">
<!--
var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"../../SpryAssets/SpryMenuBarDownHover.gif", imgRight:"../../SpryAssets/SpryMenuBarRightHover.gif"});
//-->
</script>
<!--fin pied de page -->
<div id="pub">
<br/>
<script type="text/javascript"><!--
google_ad_client = "pub-7590267161782096";
/* 728x15, date de création 05/02/10 */
google_ad_slot = "3043799783";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<br/>
<div id="barrefin"><img src="../../images/barre horizontale.jpg" width="800" height="1" alt="barre" /></div>
</div>
</body>
</html>
traitement.php
<?php
try
{
$db_host = ""; //Lieu où est héberger la BDD
$db_name = ""; //Nom de la BDD
$db_login = ""; //Login de connexion à la BDD
$db_mdp = ""; //Mot de passe de connexion à la BDD
$bdd = new PDO("mysql:host=$db_host;dbname=$db_name",$db_login,$db_mdp);
}
catch(Exception $e)
{
exit('Erreur : ' . $e->getMessage());
}
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="fr" />
<title>Traitement</title>
<style type="text/css" media="screen">
.error_sens {
color: red;
}
.error_fic {
color: blue;
}
</style>
</head>
<body>
<?php
//Liste des pays dans la bdd
$liste_pays = array('france','usa','inde','australie','java','japon');
$pays = $_GET['pays'];
if (isset($_POST['Valider'])) {
$i = 0; //Ne pas toucher
$y = 0; //Ne pas toucher
$ajout = 0; //Ne pas toucher
//On vérifie que les champs importants sont remplis
if (isset($_GET['pays'])
&& in_array($_GET['pays'],$liste_pays)
&& isset($_POST['fic'])
) {
//Pour chaque photo cochée on va l'ajouter dans la bdd
foreach ($_POST['fic'] as $photo) {
$sens = ''; //Ne pas toucher
//Recupère la description de la photo
foreach ($_POST['descr'] as $descr) {
if (!empty($descr)) {
$_POST['descr'][$y] = $descr;
$y++;
}
}
if (isset($_POST['descr'][$i])) {
$descr = $_POST['descr'][$i];
} else {
$descr = '';
}
$y = 0; //Ne pas toucher !
//Recupère le trajet s'il est défini, sinon on le met à zéro
foreach ($_POST['trajet'] as $trajet) {
if (!empty($trajet)) {
$_POST['trajet'][$y] = $trajet;
$y++;
}
}
if (isset($_POST['trajet'][$i]) && is_numeric($_POST['trajet'][$i])) {
$trajet = $_POST['trajet'][$i];
} else {
$trajet = 0;
}
//On remplace les . par des _ car dans les $_POST les . sont automatiquement modifiés en _
if (isset($_POST['sens']) && ($_POST['sens'] != 'plusieurs')) {
$sens = $_POST['sens'];
} else {
if (isset($_POST['sens' . strtr($photo,".","_")])) {
$sens = $_POST['sens' . strtr($photo,".","_")]; //Sens choisi pour la photo
} else {
?>
<span class="error_sens">La photo <?php echo $photo; ?> a été cochée mais aucun sens ne lui ai défini.</span><br />
<?php
}
}
if ($sens != '' ) {
$ajout++;
$petites = '../uploads/petites/' . $photo; //Chemin et nom des photos en petites
$grandes = '../uploads/grandes/' . $photo; //Chemin et nom des photos en grandes
if (file_exists($petites) && file_exists($grandes)) {
//On déplace la miniature
rename('../uploads/petites/' . $photo, '../' . $pays . '/petites/' . $photo);
//On déplace la photo en grande taille
rename('../uploads/grandes/' . $photo, '../' . $pays . '/grandes/' . $photo);
//On ajoute la photo dans la bdd
$req = $bdd->prepare("INSERT INTO galerie_photos VALUES('',:pays,:photo,:sens,:trajet,:descr)");
$req->bindValue('pays',$pays,PDO::PARAM_STR);
$req->bindValue('photo',$photo,PDO::PARAM_STR);
$req->bindValue('sens',$sens,PDO::PARAM_STR);
$req->bindValue('trajet',$trajet,PDO::PARAM_INT);
$req->bindValue('descr',$descr,PDO::PARAM_STR);
$req->execute();
} elseif (file_exists($petites) && !file_exists($grandes)) {
echo "<span class=\"error_fic\">La photo $photo n'est pas présente en grande taille</span><br />\n";
} elseif (!file_exists($petites) && file_exists($grandes)) {
echo "<span class=\"error_fic\">La photo $photo n'est pas présente en petite taille</span><br />\n";
}
} else {
}
$i++;
}
if ($ajout > 0) {
?>
<h1>Photos ajoutées avec succès</h1>
<a href="../?p=index">Retour à l'accueil</a>
<?php
}
} else {
header('Location: ../?p=ajoutphotos&pays=' . $pays);
}
} else {
header('Location: ../?p=ajoutphotos&pays=' . $pays);
}
?>
</body>
</html>
<li><a href="admin/ajoutphotos.php">Ajouter des photos</a></li>
<a onmouseover="titre_rollover.src='images/autre_image.jpg';" onmouseout="titre_rollover.src='images/image.jpg';">
<img src="images/image.jpg" alt="nom_image" id="titre_rollover" />
</a
Code : Tout sélectionner
#le_nom_de_ta_div_qui_encadre_le_$content_(hyper_long_comme_nom_:D) {
width: 500px;
margin: 0px auto 0px auto;
}
...
//On va afficher un titre dans la page selon le pays choisi
switch ($pays) {
case 'japon':
$titre_page = "Photos du Japon";
break;
case 'france':
$titre_page = "Photos de France";
break;
case 'usa':
$titre_page = "Photos des USA";
break;
case 'australie':
$titre_page = "Photos d'Australie";
break;
case 'java':
$titre_page = "Photos de Java";
break;
case 'inde':
$titre_page = "Photos d'Inde";
break;
}
...
Cette partie peut donc être supprimé //On affiche le titre choisi plus tôt ici
echo "<h1>$titre_page</h1>";
A remplacer par celui-ci :
//On affiche le titre de la page avec le rollover
?>
<a onmouseover="titre_rollover.src='images/titre_<?php echo $pays; ?>_over.jpg';" onmouseout="titre_rollover.src='images/titre_<?php echo $pays; ?>.jpg';">
<img src="images/titre_<?php echo $pays; ?>.jpg" alt="<?php echo $pays; ?>" id="titre_rollover" />
</a>
<?php
Donc si tu regarde bien, je suis partie du principe que les images des titres de tes pays s'appellent titre_nompays.jpg et pour celui quand on est en survole titre_nompays_over.jpg. Tu peux bien évidemment changer ces noms de fichiers, il faut juste penser à le modifier dans le code php/html que j'ai mis juste au dessus.$head = <<<EOD
<link rel="stylesheet" href="css/slimbox2.css" type="text/css" media="screen" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/slimbox2.js"></script>
<title>$pays</title>
EOD;
- Avec le EOD je me casse pas la tête avec les guillemets double et simple puisqu'elles n'interfèrent pas avec le EOD$head = "
<link rel=\"stylesheet\" href=\"css/slimbox2.css\" type=\"text/css\" media=\"screen\" />
<script type=\"text/javascript\" src=\"js/jquery.js\"></script>
<script type=\"text/javascript\" src=\"js/slimbox2.js\"></script>
<title>$pays</title>
";
Il faut bien que je pense à échapper TOUTES les guillemets dans la chaîne (fastidieux si la chaine est encore plus longue que celle-ci.$head = '
<link rel="stylesheet" href="css/slimbox2.css" type="text/css" media="screen" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/slimbox2.js"></script>
<title> ' . $pays . '</title>
';
Il faut que je pense à concaténer les variables présentent dans la chaîne, toujours long et ennuyant si il y a beaucoup de variable dans la chaîne.$req = $bdd->query("SELECT DISTINCT gal_pays FROM galerie_photos");
while ($donnees = $req->fetch()) {
$pays = $donnees['gal_pays'];
//On affiche le titre de la page avec le rollover
?>
<a onmouseover="titre_rollover_<?php echo $pays; ?>.src='images/titre_<?php echo $pays; ?>_over.jpg';" onmouseout="titre_rollover_<?php echo $pays; ?>.src='images/titre_<?php echo $pays; ?>.jpg';">
<img src="images/titre_<?php echo $pays; ?>.jpg" alt="<?php echo $pays; ?>" id="titre_rollover_<?php echo $pays; ?>" />
</a>
<?php
}