galerie en base de donnée

Eléphant du PHP | 241 Messages

24 avr. 2011, 14:50

Salut,
merci et bonne fête à toi aussi !

1) Tu as bien vérifier et qu'il n'y a pas d'erreur(s) ? Tu as bien pensé à ajouter cette ligne : $descr = $donnees['gal_descr']; dans le while ?
Ou alors un problème de guillemet mal fermé dans le title, ou autre chose :mrgreen:
Si l'erreur persiste, copie-colle moi la partie de ton code qui pose problème.


2) Oki !


3) J'ai oublié la partie de titre dans les pages 8-|
C'est bien évidement possible aussi, avec un switch par exemple.
A rajouter au début de galeriebdd.php
...
$pays = $_GET['pays']; //On enregistre le pays dans une variable

//A RAJOUTER
//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;	
}
//FIN DE l'AJOUT

//Défini la suite de la partie <head></head> pour le HTML
$head = <<<EOD
...
Et juste avant le while qui va afficher toutes les photos
...
//A RAJOUTER
	//On affiche le titre choisi plus tôt ici
	echo "<h1>$titre_page</h2>";
//FIN DE L'AJOUT

	echo "<p>\n";
	while ($donnees = $req->fetch()) {
		$photo = $donnees['gal_photo'];
		$descr = $donnees['gal_descr'];
...


Pour le changement de la pagination, ce n'est qu'une question de CSS et de HTML, il n'y a pas besoin de modifier les variables php.
Tu as ta pagination ici :
$nb_pages = ceil($nb_total / $nb_photos_page);
?>
...
	<p>-
<?php
	for ($i=1;$i<=$nb_pages;$i++) {
		if ($i == $page ) {
?>
		<span class="pagination"><?php echo $i; ?></span> |
<?php
		} else {
?>
		<a href="?p=galeriebdd&pays=<?php echo $pays; ?>&page=<?php echo $i; ?>" class="pagination"><?php echo $i; ?></a> |
<?php
		}
	}
?>
	-</p>
<?php
...
C'est au niveau des balises <p> par exemple qu'il faudrait apporter la modification en affichant les images des barres horizontales.
Juste avant et après les <p>, sans avoir à les supprimer, tu affiche soit une <div> avec une image de background en CSS, soit directement via la balise <img />

Eléphant du PHP | 77 Messages

28 avr. 2011, 19:53

Salut,

Désolé du retard, je suis bien occupé en ce moment.
J'ai fais toutes les manipulations.
Le titre "photos du pays" apparait bien, il me suffit juste de trouver enfin un moyen de le déplacer comme pour la pagination !! et d'y appliquer du css

Des que j'ai le temps je vais tenter de revoir l'ajout des phots si tout marche bien.

Par contre la description n'apparait toujours pas !

Galerie.php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<?php
$i = 0; //Ne pas toucher !

$req = $bdd->prepare("SELECT DISTINCT gal_pays FROM galerie_photos");
$req->execute();
while ($donnees = $req->fetch()) {
        $liste_pays[$i] = $donnees['gal_pays']; //Liste des pays
        $i++;
}
//On s�curise le $_GET['pays']
if (isset($_GET['pays'])
        && in_array($_GET['pays'],$liste_pays)
        && isset($_GET['page'])
        && is_numeric($_GET['page']))
{

$pays = $_GET['pays']; //On enregistre le pays dans une variable
//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; 
}

//D�fini la suite de la partie <head></head> pour le HTML
$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>
<style type="text/css" media="screen">
body {
        margin: 0px auto 0px auto;
        padding: 0px;
        width: 1024px;
}
.decal_img {
   margin: 30px;
   float: left;
   border: 1px double #959595;
}
.clear {
   clear: both;
}
#galerie {
        width: 1024px;
        margin: 0px auto 0px auto;
        text-align: center;
}
/*ici commence la pagination*/
.pagination{
padding: 2px;
        text-align: center;
}



.pagination ul{
margin: 0;
padding: 0;
text-align: center; /*Set to "right" to right align pagination interface*/
font-size: 16px;
}

.pagination li{
list-style-type: none;
display: inline;
padding-bottom: 1px;
}

.pagination a, .pagination a:visited{
padding: 0 5px;

text-decoration: none;
color: #999;
}

.pagination a:hover, .pagination a:active{
border: 1px solid #333;
color: #333;
background-color: #000;
}

.pagination li.currentpage{
font-weight: bold;
padding: 0 5px;
border: 1px solid;
background-color: #000;
color: #333;
}

.pagination li.disablepage{
padding: 0 5px;
color: #929292;
}

.pagination li.nextpage{
font-weight: bold;
}

* html .pagination li.currentpage, * html .pagination li.disablepage{ /*Pour bug IE6.*/
margin-right: 5px;
padding-right: 0;
}
</style>

                <title>$pays</title>
EOD;

        $nb_photos_page = 9; //Nombre de photos par page

        /*
                $_GET['page'] permet de savoir sur quel page on est positionnee
                $start permet de savoir � partir de quel moment on commence l'affichage des fichiers sur la page
        */
        if ($_GET['page']>0) {
                $start = $_GET['page'] * $nb_photos_page - $nb_photos_page;
                $page = $_GET['page'];
        } else {
                $_GET['page'] = str_replace("-",'',$_GET['page']);//on enleve le/les - si quelqu'un les ecrits...
                $start = $_GET['page'] * $nb_photos_page - $nb_photos_page;
                $page = $_GET['page'];
        }

        /*
                On va afficher la galerie pour le pays choisi
                Et pour le num�ro de la page sur laquelle on est
        */

        $nb_fichiers_total = 0; //Ne pas toucher

        $req = $bdd->prepare("SELECT gal_photo FROM galerie_photos WHERE gal_pays=:pays ORDER BY gal_trajet LIMIT $start,$nb_photos_page");
        $req->bindValue('pays',$pays,PDO::PARAM_STR);
        $req->execute();
        //On affiche le titre choisi plus t�t ici
        echo "<h1>$titre_page</h2>";
        echo "<p>\n";
        while ($donnees = $req->fetch()) {
                $photo = $donnees['gal_photo'];
                $descr = $donnees['gal_descr']; 
?>

        <a href="<?php echo "$pays/grandes/$photo"; ?>" class="decal_img" rel="lightbox-atomium" title="<?php echo $descr; ?>"><img src="<?php echo "$pays/petites/$photo"; ?>" alt="" /></a>
        
<?php
        }
                echo "</p>\n";
                echo '<div class="clear"></div>';

//Mise en place de la pagination
$nb_total = $bdd->prepare("SELECT COUNT(*) AS nb_total FROM galerie_photos WHERE gal_pays=:pays");
$nb_total->bindValue('pays',$pays,PDO::PARAM_STR);
$nb_total->execute();
$nb_total = $nb_total->fetch();
$nb_total = $nb_total['nb_total'];

$nb_pages = ceil($nb_total / $nb_photos_page);
?>
        <p>[
<?php
        for ($i=1;$i<=$nb_pages;$i++) {
                if ($i == $page ) {
?>
                <span class="pagination"><?php echo $i; ?></span> -
<?php
                } else {
?>
                <a href="?p=galeriebdd&pays=<?php echo $pays; ?>&page=<?php echo $i; ?>" class="pagination"><?php echo $i; ?></a> -
 
<?php
                }
        }
?>
        ]</p>
<?php

} else {

header("Location: ?p=index");

}
?>
<a href="?p=index">Retour � l'accueil</a>

Eléphant du PHP | 241 Messages

29 avr. 2011, 01:58

Salut,

La requête SQL n'est pas bonne !! C'est de ma faute, j'ai oublié de montrer la modification :oops:
...
	//LA REQUETE A MODIFIER JUSTE EN DESSOUS
	$req = $bdd->prepare("SELECT gal_photo,gal_descr FROM galerie_photos WHERE gal_pays=:pays ORDER BY gal_trajet LIMIT $start,$nb_photos_page");
	//

	$req->bindValue('pays',$pays,PDO::PARAM_STR);
	$req->execute();

	//On affiche le titre choisi plus tôt ici
	echo "<h1>$titre_page</h2>";

	echo "<p>\n";
	while ($donnees = $req->fetch()) {
		$photo = $donnees['gal_photo'];
		$descr = $donnees['gal_descr'];
...

Eléphant du PHP | 77 Messages

29 avr. 2011, 10:10

A oui ca marche !!!!
Génial !!!

Par contre je ne vois pas cette histoire de deplacement du titre et de la pagination

Pourquoi le style css ne s'applique pas a la pagination ?
Galeriebdd.php
 <span class="pagination"><?php echo $i; ?></span> -
<?php
                } else {
?>
                <a href="?p=galeriebdd&pays=<?php echo $pays; ?>&page=<?php echo $i; ?>" class="pagination"><?php echo $i; ?></a> -
 
/*ici commence la pagination*/
.pagination{
padding: 2px;
	text-align: center;
}



.pagination ul{
margin: 0;
padding: 0;
text-align: center; /*Set to "right" to right align pagination interface*/
font-size: 16px;
}

.pagination li{
list-style-type: none;
display: inline;
padding-bottom: 1px;
}

.pagination a, .pagination a:visited{
padding: 0 5px;

text-decoration: none;
color: #999;
}

.pagination a:hover, .pagination a:active{
border: 1px solid #333;
color: #333;
background-color: #000;
}

.pagination li.currentpage{
font-weight: bold;
padding: 0 5px;
border: 1px solid;
background-color: #000;
color: #333;
}

.pagination li.disablepage{
padding: 0 5px;
color: #929292;
}

.pagination li.nextpage{
font-weight: bold;
}

* html .pagination li.currentpage, * html .pagination li.disablepage{ /*Pour bug IE6.*/
margin-right: 5px;
padding-right: 0;
}
Et puis pour deplacer le titre par exemple, dans galeriebdd.php c'est
echo "<h1>$titre_page</h2>";
Mais comment lui dire de se placer ailleurs dans le template ?? idem pour la pagination

Eléphant du PHP | 241 Messages

29 avr. 2011, 12:33

Salut,

le css ne marche pas simplement parce qu'il est faux. :mrgreen:
Le plus simple et le plus conseillé c'est de mettre TOUT le css dans un seul fichier .css. J'avais mis des petits bout de css au début des pages juste pour montrer des trucs rapides, mais ce n'est pas l'idéale !

Tu essaye d'appliquer des valeurs à des balises qui n'existent pas, comme des <ul> et des <li>.
Dans le cas présent la pagination est faite sur un <span> ou dans un <a href=...>.
Il faut donc appliquer le style à la class="pagination" qui correspond.

Par exemple ce bout de code ne fonctionne que pour un <ul> présent dans une balise avec pour class="pagination"

Code : Tout sélectionner

.pagination ul{ margin: 0; padding: 0; text-align: center; /*Set to "right" to right align pagination interface*/ font-size: 16px; }
Je suppose que tu veux la même pagination que tu as sur ton site ?
Remplace le code css que tu m'as montré par celui-ci et dit moi si ca convient.

Code : Tout sélectionner

span.pagination { padding: 2px 5px; border: 1px solid #333; color: #333; } a.pagination { padding: 0px 5px; text-decoration: none; color: #999; } a.pagination:hover { padding: 2px 5px; color: #333; border: 1px solid #333; }

EDIT :
Pour le titre qui s'affiche sur la page, tu peux le déplacer en CSS ou en mettant le code ailleur dans la page (d'ailleur c'est <h1></h1> et pas <h1></h2> ! ^^)

Eléphant du PHP | 77 Messages

30 avr. 2011, 11:57

Salut,

Le css s'est bien appliqué !

Cependant je n'arrive pas a déplacer le titre et la pagination pour arriver a ce que j'avais en version html.
Je pense que ca vient de ma compréhension du sujet. En fait pour moi le php est un script, et son effet s'exprime visuellement sur le site par echo, d’où par exemple dans template.php on met echo $content pour lui dire d'afficher cela. Pour moi galeriebdd.php est un seul bloc qu'on ne peut pas couper comme je l'entend..

Pour ce qui est du recentrage, pour quoi cela ne marche t'il pas, vu que galeriebdd est compris dans ma div image de template.php

J'ai du mal a me représenté schématiquement l'influence de chacun une fois tout se php de mis !!

EDIT : a il va falloir aussi qu'on fasse cette petite partie admin, enfin juste un login et un pass pour acceder a ajoutphotos.php
Et par la même occasion voir ce que je supprime exactement pour plus qu'il n'y est le retour a l'accueil ni ajout photos en bas des pages
Ainsi que le problème d'encodage, pourtant j'ai mis une note pour UTF-8 en haut de la page

Eléphant du PHP | 241 Messages

01 mai 2011, 18:31

Salut,

pour les problèmes de placement/affichage, il faudrait que je vois la version complète de ta page, pour voir ce qu'il faudrait faire.
Le problème du recentrage doit être du simple css mal appliqué.

Pour la partie admin pas de problème, il faudrait faire ça avec un fichier .htaccess et .htpasswd
Pour créer le fichier, tu peux le faire avec notepad++, quand tu enregistre le fichier tu mets le nom entre guillemets.
comme ceci : ".htaccess"

Le fichier .htaccess va ici marcher pour un dossier complet, tu peux donc créer un dossier admin/ et mettre dans ce dossier le fichier ajoutphotos.php et les fichiers .htaccess et .htpasswd

fichier .htaccess

Code : Tout sélectionner

AuthName "Partie administration" AuthUserFile "chemin/du/fichier/.htpasswd" AuthType Basic Require valid-user
fichier .htpasswd

Code : Tout sélectionner

login:mdp_crypté
En login tu mets ce que tu veux. Pour le mot de passe, il faut qu'il soit crypté (choisi quelque chose de compliqué, avec des majuscule, des chiffres etc.)
Pour le crypté tu peux le faire avec php.
echo crypt('le_mot_de_passe');
Ensuite tu vas voir ce qui s'affiche sur la page et tu copie colle cette ligne dans ton fichier .htpasswd

Eléphant du PHP | 77 Messages

01 mai 2011, 21:09

Hello,

Alors bon weekend ??

1) j'ai donc placé ajoutphotos.php dans un nouveau dossier admin ainsi que .htaccess et .htpassword
Cependant j’accède donc a ajoutphotos.php par l'adresse http://localhost/tuan-gallery/admin/ajoutphotos on est d'accord ?

Mon .htaccess

Code : Tout sélectionner

DirectoryIndex galerie.php AuthName "Partie administration" AuthUserFile "chemin/du/fichier/.htpasswd" AuthType Basic Require valid-user
Mon .htpassword

Code : Tout sélectionner

login:cro_mag //par exemple comme identifiant si j'ai bien saisi ou c'est autre chose a mettre
Mais tu dis;
Pour le mot de passe, il faut qu'il soit crypté (choisi quelque chose de compliqué, avec des majuscule, des chiffres etc.)
Pour le crypté tu peux le faire avec php.
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
echo crypt('le_mot_de_passe');


Ensuite tu vas voir ce qui s'affiche sur la page et tu copie colle cette ligne dans ton fichier .htpasswd
Mais je place echo crypt'(le_mot_de_passe'); ou ? .htpassword en étant logique
J'ai fait ça mais ai du faire une fausse manip car maintenant plus moyen d'essayer de remettre login et pass car j'ai ça

Code : Tout sélectionner

Erreur du serveur! Le serveur a été victime d'une erreur interne et n'a pas été capable de faire aboutir votre requête. Soit le serveur est surchargé soit il s'agit d'une erreur dans le script CGI. Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site. Error 500 localhost 01/05/2011 20:55:03 Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
Un belle boulette quoi !!!!

2) Pour le placement je te montre les fichiers

template.php
// Conception and Creation : Cro_mag
// Theme name : Black edition
// Version : 1.0
// Date of creation : September 2009


<!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">


<title>Photographies du Carnaval De Venise</title>

<style type="text/css">
<!--
a:link {
	text-decoration: none;
}
a:visited {
	text-decoration: none;
}
a:hover {
	text-decoration: none;
}
a:active {
	text-decoration: none;
}
-->
</style>



<style type="text/css">
<!--
body {
	background-color: #000;
}
-->
</style>
<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>&nbsp;</p>
    <p>- PHOTOS DU CARNAVAL DE VENISE -</p>
   
  </div>
  
  <!--fin bando -->
  <!--debut barre haut -->
  
  <div id="barrehaut">
  <p>&nbsp;</p>
  <img src="images/barre horizontale.jpg" width="800" height="1" alt="barre" /></div>
  
  <!--fin barre haut -->
  
  <!--debut image -->
  <?php
echo $content;
?>
  
  <!--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>&nbsp;</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>
style_galerie.css
#page {
	padding: 0px;
	width: 1000px;
	margin-top: 0px;
	margin-right: auto;
	margin-bottom: 0px;
	margin-left: auto;
	background-color: #000;
	text-align: center;
}

#image {
	padding: 0px;
	width: 700px;
	text-align: center;
	height: auto;
	margin-top: 30px;
	margin-bottom: 0px;
	border-top-style: none;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
}

#barrebas {
	margin: 0px;
	padding: 0px;
	clear: both;
	background-color: #000;
	text-align: center;
}

#bando {
	height: 100px;
	width: 1000px;
	margin: 0px;
	padding-top: 30px;
	padding-right: 0px;
	padding-bottom: 0px;
	padding-left: 0px;
	text-align: center;
	background-color: #000;
}
#bando img {
	border-top-style: none;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
	background-color: #000;
	margin-bottom: 20px;
}
#image table {
	text-align: center;
	border-top-style: none;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
	color: #999;
	margin-right: auto;
	margin-left: auto;
}
#image img {
	border: 1px double #959595;
	text-align: center;
}

#tableau {
	background-color: #000;
	text-align: center;
	color: #CCC;
	border-top-style: none;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
}
#menu {
	margin-left: 60px;
}
#barrefin {
	text-align: center;
}


#tableauchiffre {
	border-top-style: none;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
}


#barrehaut {
	background-color: #000;
	text-align: center;
}
#bando p {
	color: #999;
	font-weight: bold;
}
#bas {
	background-color: #000;
	text-align: center;
	width: 1000px;
}
#explications {
	color: #999;
	background-color: #000;
	text-align: center;
}

/*ici commence la pagination*/
.pagination{
padding: 2px;
	text-align: center;
}



.pagination ul{
margin: 0;
padding: 0;
text-align: center; /*Set to "right" to right align pagination interface*/
font-size: 16px;
}

.pagination li{
list-style-type: none;
display: inline;
padding-bottom: 1px;
}

.pagination a, .pagination a:visited{
padding: 0 5px;

text-decoration: none;
color: #999;
}

.pagination a:hover, .pagination a:active{
border: 1px solid #333;
color: #333;
background-color: #000;
}

.pagination li.currentpage{
font-weight: bold;
padding: 0 5px;
border: 1px solid;
background-color: #000;
color: #333;
}

.pagination li.disablepage{
padding: 0 5px;
color: #929292;
}

.pagination li.nextpage{
font-weight: bold;
}

* html .pagination li.currentpage, * html .pagination li.disablepage{ /*Pour bug IE6.*/
margin-right: 5px;
padding-right: 0;
}
#page #barrefin {
	clear: both;
	text-align: center;
}
#bando img {
	border-top-style: none;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
}

/*code pour les infos bulles*/

/* css pour la tooltip lien avec preview */
#screenshot{
        position:absolute;
        border:1px solid #ccc;
        background:#000;
        padding:5px;
        display:none;
        color:#fff;
}
/* css pour la tooltip image preview */
#preview{
        position:absolute;
        border:1px solid #ccc;
        background:#333;
        padding:5px;
        display:none;
        color:#fff;
}
/* css pour la tooltip normal */
#tooltip{
        position:absolute;
        border:1px solid #333;
        background:#f7f5d1;
        padding:2px 5px;
        color:#333;
        display:none;
}.majuscule {
	font-size: 25px;
	font-weight: bold;
}
galeriebdd.php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<?php
$i = 0; //Ne pas toucher !

$req = $bdd->prepare("SELECT DISTINCT gal_pays FROM galerie_photos");
$req->execute();
while ($donnees = $req->fetch()) {
        $liste_pays[$i] = $donnees['gal_pays']; //Liste des pays
        $i++;
}
//On sécurise le $_GET['pays']
if (isset($_GET['pays'])
        && in_array($_GET['pays'],$liste_pays)
        && isset($_GET['page'])
        && is_numeric($_GET['page']))
{

$pays = $_GET['pays']; //On enregistre le pays dans une variable
//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; 
}

//Défini la suite de la partie <head></head> pour le HTML
$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>
<style type="text/css" media="screen">
body {
        margin: 0px auto 0px auto;
        padding: 0px;
        width: 1024px;
}
.decal_img {
   margin: 30px;
   float: left;
   border: 1px double #959595;
}
.clear {
   clear: both;
}
#galerie {
        width: 1024px;
        margin: 0px auto 0px auto;
        text-align: center;
}
span.pagination {
   padding: 2px 5px;
   border: 1px solid #333;
   color: #333;
}
a.pagination {
   padding: 0px 5px;
   text-decoration: none;
   color: #999;
}
a.pagination:hover {
   padding: 2px 5px;
   color: #333;
   border: 1px solid #333;
}
</style>

                <title>$pays</title>
EOD;

        $nb_photos_page = 9; //Nombre de photos par page

        /*
                $_GET['page'] permet de savoir sur quel page on est positionnee
                $start permet de savoir à partir de quel moment on commence l'affichage des fichiers sur la page
        */
        if ($_GET['page']>0) {
                $start = $_GET['page'] * $nb_photos_page - $nb_photos_page;
                $page = $_GET['page'];
        } else {
                $_GET['page'] = str_replace("-",'',$_GET['page']);//on enleve le/les - si quelqu'un les ecrits...
                $start = $_GET['page'] * $nb_photos_page - $nb_photos_page;
                $page = $_GET['page'];
        }

        /*
                On va afficher la galerie pour le pays choisi
                Et pour le numéro de la page sur laquelle on est
        */

        $nb_fichiers_total = 0; //Ne pas toucher

        $req = $bdd->prepare("SELECT gal_photo,gal_descr FROM galerie_photos WHERE gal_pays=:pays ORDER BY gal_trajet LIMIT $start,$nb_photos_page");
        $req->bindValue('pays',$pays,PDO::PARAM_STR);
        $req->execute();
        //On affiche le titre choisi plus tôt ici
        echo "<h1>$titre_page</h1>";
        echo "<p>\n";
        while ($donnees = $req->fetch()) {
                $photo = $donnees['gal_photo'];
                $descr = $donnees['gal_descr']; 
?>

        <a href="<?php echo "$pays/grandes/$photo"; ?>" class="decal_img" rel="lightbox-atomium" title="<?php echo $descr; ?>"><img src="<?php echo "$pays/petites/$photo"; ?>" alt="" /></a>
        
<?php
        }
                echo "</p>\n";
                echo '<div class="clear"></div>';

//Mise en place de la pagination
$nb_total = $bdd->prepare("SELECT COUNT(*) AS nb_total FROM galerie_photos WHERE gal_pays=:pays");
$nb_total->bindValue('pays',$pays,PDO::PARAM_STR);
$nb_total->execute();
$nb_total = $nb_total->fetch();
$nb_total = $nb_total['nb_total'];

$nb_pages = ceil($nb_total / $nb_photos_page);
?>
        <p>[
<?php
        for ($i=1;$i<=$nb_pages;$i++) {
                if ($i == $page ) {
?>
                <span class="pagination"><?php echo $i; ?></span> -
<?php
                } else {
?>
                <a href="?p=galeriebdd&pays=<?php echo $pays; ?>&page=<?php echo $i; ?>" class="pagination"><?php echo $i; ?></a> -
 
<?php
                }
        }
?>
        ]</p>
<?php

} else {

header("Location: ?p=index");

}
?>
<a href="?p=index">Retour à l'accueil</a>
Je pense que ça doit suffir..
Pour ce que tu me disas tout mettre dans un fichier css, a la limite je peux rajouter le css de galeriebdd.php dans style_galerie.css en mettant cette ligne
<link href="style_galerie.css" rel="stylesheet" type="text/css" />
??

3) et
Cependant je n'arrive pas a déplacer le titre et la pagination pour arriver a ce que j'avais en version html.
Je pense que ca vient de ma compréhension du sujet. En fait pour moi le php est un script, et son effet s'exprime visuellement sur le site par echo, d’où par exemple dans template.php on met echo $content pour lui dire d'afficher cela. Pour moi galeriebdd.php est un seul bloc qu'on ne peut pas couper comme je l'entend..

Eléphant du PHP | 241 Messages

01 mai 2011, 22:26

Bonsoir,

oui oui week end génial de mon côté ! (du même de ton côté j'espère :wink:)

Alors,

1) Pour le fichier .htpasswd tu t'es trompé, en fait ce n'est pas
login:Cro_mag
mais
Cro_mag:ton_mot_de_passe_crypté

Pour l'histoire du echo crypt c'est à mettre dans une autre page .php qui te permettra seulement d'afficher ton mot de passe crypté à ajouter dans ton fichier .htpasswd.
Par exemple mon mot de passe sera bonjour46, dans une page blabla.php je mets ceci :
<?php
echo crypt('bonjour46');
?>
Ensuite je lance la page et il s'affiche $1$ae0.bn4.$A2O6rs5IDd/8vcQkeExNE/ sur mon navigateur web, c'est cette phrase bizarre que tu dois mettre dans ton fichier .htpasswd
fichier .htpasswd

Code : Tout sélectionner

Cro_mag:$1$ae0.bn4.$A2O6rs5IDd/8vcQkeExNE/

2) Tu peux modifier cette partie en rajoutant un <div> qui encadrera le $content, ensuite tu centre cette div.
 <!--debut image -->
<div id="galerie_image">
<?php
echo $content;
?>
</div>
  <!--fin image -->
Et dans le css quelque chose comme ceci devrait suffire :

Code : Tout sélectionner

#galerie_image { margin: 0px auto 0px auto; }
Pour le fichier CSS avec la ligne à rajouter c'est correct sauf qu'il manque media="screen" à rajouter.


3) A ce moment la, au lieu de déplacer le pied de page, pourquoi ne pas déplacer le HTML qui est dans ta page pour le mettre au bon endroit ! :mrgreen:
fichier galeriebdd.php vers les lignes 80.
Je rajoute tes 2 barres horizontales entre la pagination.
<div id="barrebas"> et <div id="bas"> etc.
...
<?php
	}
?>
	</p>
	<div class="clear"></div>
	<div id="barrebas">
		<img src="../../images/barre horizontale.jpg" width="800" height="1" alt="barre"/>
	</div>

<?php
//Mise en place de la pagination
$nb_total = $bdd->prepare("SELECT COUNT(*) AS nb_total FROM galerie_photos WHERE gal_pays=:pays");
$nb_total->bindValue('pays',$pays,PDO::PARAM_STR);
$nb_total->execute();
$nb_total = $nb_total->fetch();
$nb_total = $nb_total['nb_total'];

$nb_pages = ceil($nb_total / $nb_photos_page);
?>
	<p>
<?php
	for ($i=1;$i<=$nb_pages;$i++) {
		if ($i == $page ) {
?>
		<span class="pagination"><?php echo $i; ?></span>
<?php
		} else {
?>
		<a href="?p=galeriebdd&pays=<?php echo $pays; ?>&page=<?php echo $i; ?>" class="pagination"><?php echo $i; ?></a>
<?php
		}
	}
?>
	</p>
	<div id="bas">
		<img src="../../images/barre horizontale.jpg" width="500" height="1" alt="barre"/>
	</div>

<?php
...

Eléphant du PHP | 77 Messages

02 mai 2011, 09:51

Impossible de recentrer cette galerie, j'ai testé des dizaines de choses, rien ne va !!!

Et j'ai encore tout planté avec le .htpassword et compagnie,

Code : Tout sélectionner

Erreur du serveur! Le serveur a èté victime d'une erreur interne et n'a pas été capable de faire aboutir votre requête. Soit le server est surchargé soit il s'agit d'une erreur dans le script CGI. Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site. Error 500 localhost 02/05/2011 09:47:07 Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
Et j'ai beau arrêter xampp, il ne veut pas me reproposer le login


Puis j'aurais aimé mettre des rollovers avec ce code
<a href="australie/galerie_photo_australie_1.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Australie','','../images/icone australie survolee.jpg',1)"><img src="../images/icone australie.jpg" alt="Australie" name="Australie" width="142" height="213" border="0" id="Australie" />
sur la page d'accueil_galerie là où on selectionne la galerie photos a voir, pour le moment c'est juste un texte, et nul part je vois de code qui affiche "photos java" par exemple



RE EDIT : j'ai réessayer pour la partie admin, il doit y avoir une faute de code quelque part, car j'ai même refait avec les mêmes identifiants que tu as mis, et impossible, toujours la même erreur


RE RE EDIT

Donc c'était une erreur de ma part, en fait 2 choses n'allaient pas :
1) j'ai lu qu'en local il ne fallait pas crypté le mdp
2)
DirectoryIndex galerie.php
AuthName "Partie administration Protégée"
AuthUserFile "C:\xampp/htdocs/tuan-gallery/admin/.htpasswd"
AuthType Basic
Require valid-user
J'avais pas le bon chemin avant

Et par contre il faut bien que je mette ajoutphotos.php dans l'adresse pour que ca marche, sinon sans le .php il ne trouve pas
Mais voila, une fois dessus, je selectionne un pays et j'ai cette erreur :
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\tuan-gallery\admin\ajoutphotos.php on line 56
Je me permets de mettre ajoutphotos.php
<?php
$head = <<<EOD
<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">
table, td {
        border-collapse: collapse;
}
td {
        width: 200px;
        height: 100px;
        text-align: center;
		color: white;
		padding: 10px;
}
tr {
        border: 1px solid white;
}
h4 {
	color: white;
}
h3 {
        color: red;
}
#btn_valider {
        padding: 10px;
        color: maroon;
}
</style>

                <title>Ajout de photos</title>
EOD;

//Liste des pays autorisés dans la bdd
$pays = array('paris','usa','inde','australie','java','japon','bali','cambodge','venise','shivaratri');

//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="?p=traitement&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>
                <!-- Champs description de l'image -->
                <td>
                        <p>
                                <label for="descr">Description</label><input type="text" name="descr[]" value="" id="descr" maxlength="500" size="50" /><br />
                        </p>
                </td>
<!-- Fin Du champs description de l'image -->
        </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="?p=ajoutphotos">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="?p=ajoutphotos&pays=<?php echo $lien_pays; ?>"><?php echo ucfirst($lien_pays); ?></a></li>
<?php
        }
?>
        </ul>
        <a href="?p=index">Retour à l'accueil</a>
<?php
}
?>
[/color]

Eléphant du PHP | 77 Messages

04 mai 2011, 14:20

Bon ça ne veut toujours pas marcher !

Je pensais que ça pouvait venir du chemin d'accès, j'ai essayé de remplacer :
//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");
Par
//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=:admin/pays");

Mais bon comme je m'en doutais sans résultats, même l'erreur n'a pas changée.....

Eléphant du PHP | 241 Messages

04 mai 2011, 14:45

Salut,
désolé, je n'avais pas vu ton message du 2 Mai :oops:

Pour ton dernier poste, le chemin d'accès n'a strictement aucun rapport avec la requête SQL :mrgreen:

Par contre il faut penser à modifier les liens dans tes pages pour le ajoutphotos.php vu qu'il est maintenant dans un autre dossier
...
<a href="?p=admin/ajoutphotos...>
...
Idem, le fichier traitement.php doit être dans le même dossier que ajoutphotos.php

Pour l'erreur PHP de la fonction prepare() je ne vois pas d'où peut provenir l'erreur, la syntaxe semble bonne.

Eléphant du PHP | 77 Messages

04 mai 2011, 15:57

Salut,

Ce n'est pas grave, je pense bien que tu n'as pas a penser qu' a mes soucis de site..lol

J'ai fait ce que tu m'as dit, mais maintenant lorsque je vais sur tuan-gallery/admin/ajoutphotos j'ai cette erreur

Code : Tout sélectionner

Warning: include(content/404.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\tuan-gallery\galerie.php on line 8 Warning: include() [function.include]: Failed opening 'content/404.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\tuan-gallery\galerie.php on line 8
j'ai donc mis mon 404.php dans content, et maintenant c'est 404 qui s'affiche !!

Je ne sais plus quoi faire !!
On est si prêt du but pourtant !!!

traitemant.php
<?php
$head = <<<EOD
<style type="text/css" media="screen">
.error_sens {
        color: red;
}
.error_fic {
        color: blue;
}
</style>

                <title>Traitement</title>
EOD;

//Liste des pays dans la bdd
$liste_pays = array('paris','usa','inde','australie','java','japon','bali','cambodge','nepal','venise');
$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)");
                                        $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->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=admin/ajoutphotos&pays=' . $pays);
        }
} else {
        header('Location: ?p=admin/ajoutphotos&pays=' . $pays);
}
?>

ajoutphotos.php

<?php
$head = <<<EOD
<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">
table, td {
        border-collapse: collapse;
}
td {
        width: 200px;
        height: 100px;
        text-align: center;
		color: white;
		padding: 10px;
}
tr {
        border: 1px solid white;
}
h4 {
	color: white;
}
h3 {
        color: red;
}
#btn_valider {
        padding: 10px;
        color: maroon;
}
</style>

                <title>Ajout de photos</title>
EOD;

//Liste des pays autorisés dans la bdd
$pays = array('paris','usa','inde','australie','java','japon','bali','cambodge','venise','shivaratri');

//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="?p=traitement&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>
                <!-- Champs description de l'image -->
                <td>
                        <p>
                                <label for="descr">Description</label><input type="text" name="descr[]" value="" id="descr" maxlength="500" size="50" /><br />
                        </p>
                </td>
<!-- Fin Du champs description de l'image -->
        </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="?p=admin/ajoutphotos">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="?p=ajoutphotos&pays=<?php echo $lien_pays; ?>"><?php echo ucfirst($lien_pays); ?></a></li>
<?php
        }
?>
        </ul>
        <a href="?p=index">Retour à l'accueil</a>
<?php
}
?>

Eléphant du PHP | 241 Messages

04 mai 2011, 16:48

Tu as du oublié de modifier un lien quelque part (il faut bien vérifier ceux dans toutes les pages :wink:), regarde dans la barre d'adresse de ton navigateur, est-ce que tu as bien quelque chose ça ? :

Code : Tout sélectionner

http://xxxxxxxxxxxx/?p=admin/ajoutphotos.php

Eléphant du PHP | 77 Messages

05 mai 2011, 09:57

J'ai bien vérifier, les liens ont bien été changés
je sais pas si ça c'est bon ?
  <li><a href="?p=admin/ajoutphotos&pays=<?php echo $lien_pays; ?>"><?php echo ucfirst($lien_pays); ?></a></li>
et
 else {
                header('Location: ?p=admin/ajoutphotos&pays=' . $pays);
        }
} else {
        header('Location: ?p=admin/ajoutphotos&pays=' . $pays);
}
de toute façon j'ai essayé sans également et ça marche pas

L'adresse est bonne

Code : Tout sélectionner

http://xxxxxxxxxxxxxxx/galerie.php?p=admin/ajoutphotos.php