8796 sujets

Développement web côté serveur, CMS

Bonjour!
Je fait face à un problème bien embêtant.

Pour la gestion d'une galerie de photo, j'utilise une bdd que je mets à jour à l'aide d'un formulaire.
Récemment j'ai ajouté quelques vidéos et je me suis rendu compte que l'un des éléments entrée dans le formulaire (soi l'album référent) n'était pas pris en compte. Du coup la vidéo ou la photo entrer ne s'affiche nul part car j'ai besoin de cette élément essentiel pour qu'elle s'affiche sur le site.

Je n'arrive pas à voir d'où vient le problème, alors un coup de main serait vraiment le bienvenu!

Mon code:

<form action="galerie_ajout.php" method="post" name="form">
	<fieldset>
                <legend>Ajout d'une image</legend>
                    <?php
                    if (!empty($_POST['enregistrer']))
                    {
                        $album = trim($_POST['camera']);
                        $nom = trim($_POST['nom']);
                        $noteFr = nl2br(trim($_POST['noteFr']));
                        $noteEn = nl2br(trim($_POST['noteEn']));
                        $thumbnail = trim($_POST['thumbnail']);
                        $type = trim($_POST['type']);
                        
                        $nom_verif = mysql_result(mysql_query('SELECT COUNT(*) FROM galerie WHERE nom = "'.$nom.'"'), 0);
                        if ($nom_verif != 0)
                        {
                            echo "<p align=\"center\">L'élément <strong>".$nom."</strong> existe déjà!<br /><br /></p>";
                        }
                        else
                        {
                            $insert = 'INSERT INTO galerie(id,album,nom,noteFr,noteEn,thumbnail,type) VALUES("","'.$album.'","'.$nom.'","'.$noteFr.'","'.$noteEn.'","'.$thumbnail.'","'.$type.'")';
                            $result = mysql_query($insert) or die("80"/*mysql_error()*/);
                            
                            echo "<p align=\"center\">La ".$type." <strong>".$nom."</strong> a été ajoutée à l'album <strong>".$album."</strong>!<br /><br /></p>";
                        }
                    }
                    ?>
                <p>
                <label for="camera">Album :&nbsp;</label>
                    <select name="camera" id="camera">
                        <?php
                        $select = mysql_query('SELECT * FROM cameras') or die("90"/*mysql_error()*/);
                                
                        while ($data = mysql_fetch_array($select))
                        {
                            ?>
                                
                        <option value="<?php echo $data['camera'] ?>"><?php echo $data['camera'] ?></option>
                                
                        <?php
                        }
                        ?>
                    </select><br />
                <label for="nom">Nom :&nbsp;</label>
                	<input name="nom" id="nom" type="text" size="30" /><br />
                <label for="thumbnail">Thumbnail :&nbsp;</label>
                	<input name="thumbnail" id="thumbnail" type="text" size="30" /><br />
                <label for="noteFr">Note FR :&nbsp;</label>
                	<textarea name="noteFr" id="noteFr" cols="27" rows="3"></textarea><br />
                <label for="noteEn">Note EN :&nbsp;</label>
                	<textarea name="noteEn" id="noteEn" cols="27" rows="3"></textarea><br />
                <label for="type">Type :&nbsp;</label>
                    <select name="type" id="type">
                        <option value="photo">Photo</option>
                        <option value="video">Vidéo</option>
                    </select><br />
                <label></label>
                	<input name="enregistrer" type="submit" value="Enregistrer" />
                </p>
       </fieldset>
</form>


C'est le premier élément du formulaire qui n'est pas pris en compte.
Modifié par juliesunset (12 Apr 2010 - 17:05)
faut faire des essais et debugger. je ne vois pas de faute apparente. elle est peut-être bien cachée

mais un code comme ça par exemple n'est pas sûr a 100%


<option value="<?php echo $data['camera'] ?>"><?php echo $data['camera'] ?></option> 


si $data['camera'] commence par un " ça pourrait expliquer ton problème

de plus ce code

$insert = 'INSERT INTO galerie(id,album,nom,noteFr,noteEn,thumbnail,type) VALUES("","'.$album.'","'.$nom.'","'.$noteFr.'","'.$noteEn.'","'.$thumbnail.'","'.$type.'")';


me laisse perplexe. un id toujours intialiser a "" ? tu n'as pas un auto-increment sur ce champs?

mon conseil est simple faire un essai. Smiley cligne

produire un echo de la requete voir ce qu'il y a dedans. si tu passes bien par là.
et si tu ne vois pas l'erreur l'éxecuter à la main (ou copier/coller Smiley cligne )
dans une fenetre SQL ( par exemple d'un phpmyadmin )

tu peux regarder aussi le code source du select. et voir directement s'il y a pas un pb a ce niveau.

et autre technique de debug classique. faire un
echo '<pre>'.print_r($_POST,true).'</pre>';

pour voir le contenu des variables envoyé par le formulaire.
Modifié par CPascal (09 Apr 2010 - 19:07)
Salut!
Merci pour ta réponse.

CPascal a écrit :
faut faire des essais et debugger. je ne vois pas de faute apparente. elle est peut-être bien cachée

mais un code comme ça par exemple n'est pas sûr a 100%

<option value="<?php echo $data['camera'] ?>"><?php echo $data['camera'] ?></option> 

si $data['camera'] commence par un " ça pourrait expliquer ton problème

Pas sûr?
et y'a pas de " non plus...

CPascal a écrit :

de plus ce code
$insert = 'INSERT INTO galerie(id,album,nom,noteFr,noteEn,thumbnail,type) VALUES("","'.$album.'","'.$nom.'","'.$noteFr.'","'.$noteEn.'","'.$thumbnail.'","'.$type.'")';


me laisse perplexe. un id toujours intialiser a "" ? tu n'as pas un auto-increment sur ce champs?

Si justement, il n'est pas nécessaire de l'indiquer donc?

CPascal a écrit :

mon conseil est simple faire un essai. Smiley cligne

produire un echo de la requete voir ce qu'il y a dedans. si tu passes bien par là.
et si tu ne vois pas l'erreur l'éxecuter à la main (ou copier/coller Smiley cligne )
dans une fenetre SQL ( par exemple d'un phpmyadmin )

tu peux regarder aussi le code source du select. et voir directement s'il y a pas un pb a ce niveau.

Y'a pas de problème au niveau de l'affichage, tout va bien de ce côté.
Le problème se situe vraiment au moment de l'enregistrement, ou là ce qui est indiqué dans select n'est pas enregistré justement.

CPascal a écrit :

et autre technique de debug classique. faire un
echo '<pre>'.print_r($_POST,true).'</pre>';

pour voir le contenu des variables envoyé par le formulaire.

Je mets ça où exactement?
perso je ne cite jamais l'id auto-incrementé et il se remplie tous seul.

sinon un " dans le champs aurait fermer ton attribut value qui aurait été null et le reste aurait
été considérer comme attribut incompréhensible.

<?php 
                    if (!empty($_POST['enregistrer'])) 
                    { 
                       [#red]echo '<pre>'.print_r($_POST,true).'</pre>';[/#]                 
                        $album = trim($_POST['camera']); 
                        $nom = trim($_POST['nom']); 
                        $noteFr = nl2br(trim($_POST['noteFr'])); 
                        $noteEn = nl2br(trim($_POST['noteEn'])); 
                        $thumbnail = trim($_POST['thumbnail']); 
                        $type = trim($_POST['type']); 
                         


tu pourras savoir ce que ton formulaire a vraiment passé. (reponse cas 1)

ensuites pour finir il n'y a quasi-que 3 possibilités.

1/ ton formulaire n'envoies pas la donnée
2/ ta requête est fausse. voilà pourquoi je te conseille de l'afficher aussi par un echo

même si elle insère quelquechose. elle le fait mal.

3/ en fait ton formulaire insert bien les données en base mais aprés un probléme efface tout.
c'est moins vraisemblable.

par exemple imaginons le cas qui serait très très folklorique un trigger qui effacerait les données.remarque en mysql je ne sais même pas si c'est possible. et je doute que ce soit la réponse.
Modifié par CPascal (12 Apr 2010 - 16:13)
Merci!

Voilà ce que ça m'indique une fois les données entré:

Array
(
    [camera] => 
    [nom] => lkfjnh
    [thumbnail] => lfkjhbto
    [noteFr] => 
    [noteEn] => 
    [type] => photo
    [enregistrer] => Enregistrer
    [annee] => 2007
)

Au niveau de " Smiley camera =>" il aurait dû être indiqué le nom de la caméra sélectionné dans le formulaire.
alors affiche le source, le code html de la page généré. Ctrl+U sous firefox

et cherche la partie

<select name="camera" id="camera">
<option .....

ça devrait donner un indice
Modifié par CPascal (12 Apr 2010 - 16:18)
Voilà le code source après l'enregistrement des données.

<!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" xml:lang="fr" lang="fr"><!-- InstanceBegin template="/Templates/2010_Admin-Temp.dwt" codeOutsideHTMLIsLocked="false" -->
<head>

<link rel="icon" type="image/ico" href="../ggtelecom.ico" />
<!--[if IE]><link rel="shortcut icon" href="../2010/ggtelecom.ico" /><![endif]-->

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

<!-- InstanceBeginEditable name="pageTitle" --><title>Gestion - GG Telecom - Ajout galerie</title><!-- InstanceEndEditable -->
<!-- InstanceBeginEditable name="description" --><meta name="description" content="description de page" /><!-- InstanceEndEditable -->

<link href="../CSS/Style_admin.css" rel="stylesheet" type="text/css" />
<link href="../CSS/cellules.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 6]>
<link href="../CSS/Style_MAIN_iE6.css" rel="stylesheet" type="text/css" />
<![endif]-->
<link href="../CSS/admin.css" rel="stylesheet" type="text/css" />
<!-- InstanceBeginEditable name="pageCSS" --><!-- InstanceEndEditable -->

</head>

<body>
<div id="contenant01"><a name="top" id="top"></a>
  <div id="contenant02">
  <!-- debut de contenant2 -->
    <!-- debut banniere -->
    <div id="banner">
      <h1><img src="../interface/images/Site2010-01.png" width="553" height="137" alt="SPYPOINT" /></h1>
		<!--<ul>
          <li><a href="Detaillant-info.php">Mon compte</a></li>
          <li>Déconnexion</li>
        </ul>-->
    </div>

    <!-- fin banniere -->
  	<!-- debut bande de menu -->
  	  <div id="menuAdmin">
  	    <ul>
  	      <li class="galerie">
  	        <a href="galerie_admin.php">Galerie</a>
          </li>
  	      <li class="software">

  	        <a href="software_admin.php">Software</a>
          </li>
        </ul>
      </div>
  	<!-- fin bande menu -->
    <!-- debut zone de texte -->
  	<div id="textArea">
  	  <!-- InstanceBeginEditable name="Main" -->

  	  <a href="#album"></a>
    <p><a href="galerie_admin.php" class="preview">Retour à la <br />
      gestion de la galerie</a></p>
      <h2>Gestion des albums</h2>
      <div id="formulaire">
		<form action="galerie_ajout.php" method="post" name="form">
			<fieldset>

                <legend>Ajout d'une image</legend>
                    <pre>Array
(
    [camera] => 
    [nom] => fgzgz
    [thumbnail] => dzset
    [noteFr] => zsgdt
    [noteEn] => szgd
    [type] => photo
    [enregistrer] => Enregistrer
    [annee] => 2007
)
</pre><p align="center">La photo <strong>fgzgz</strong> a été ajoutée à l'album <strong></strong>!<br /><br /></p>                <p>
                <label for="camera">Album :&nbsp;</label>
                    <select name="camera" id="camera">

                                                        
                        <option value="FL-A">FL-A</option>
                                
                                                        
                        <option value="IR-A 3mp">IR-A 3mp</option>
                                
                                                        
                        <option value="IR-A 4mp">IR-A 4mp</option>
                                
                                                        
                        <option value="IR-B 5mp">IR-B 5mp</option>
                                
                                                        
                        <option value="IR-A 6mp">IR-A 6mp</option>
                                
                                                        
                        <option value="IR-B 7mp">IR-B 7mp</option>

                                
                                                        
                        <option value="IR-C">IR-C</option>
                                
                                                        
                        <option value="PRO-X">PRO-X</option>
                                
                                                        
                        <option value="SC-Z9">SC-Z9</option>
                                
                                            </select><br />
                <label for="nom">Nom :&nbsp;</label>
                	<input name="nom" id="nom" type="text" size="30" /><br />
                <label for="thumbnail">Thumbnail :&nbsp;</label>

                	<input name="thumbnail" id="thumbnail" type="text" size="30" /><br />
                <label for="noteFr">Note FR :&nbsp;</label>
                	<textarea name="noteFr" id="noteFr" cols="27" rows="3"></textarea><br />
                <label for="noteEn">Note EN :&nbsp;</label>
                	<textarea name="noteEn" id="noteEn" cols="27" rows="3"></textarea><br />
                <label for="type">Type :&nbsp;</label>

                    <select name="type" id="type">
                        <option value="photo">Photo</option>
                        <option value="video">Vidéo</option>
                    </select><br />
                <label></label>
                	<input name="enregistrer" type="submit" value="Enregistrer" />
                </p>
                </fieldset>

                <fieldset>
          <a name="album" id="album"></a>
                <legend>Ajouter un nouvel album</legend>
                                <p>
                <label for="camera">Nom de l'album :&nbsp;</label><input name="camera" id="camera" type="text" size="30" /><br />
                <label for="annee">Année de la camera :&nbsp;</label>
                    <select name="annee" id="annee">

                        <option value="2007">2007</option>
                        <option value="2008">2008</option>
                        <option value="2009">2009</option>
                        <option value="2010">2010</option>
                    </select><br />
                <label></label><input name="ajouter" type="submit" value="Ajouter" />
                </p>

                </fieldset>
		</form>
      </div>
  	  <p><a href="#top"><span class="top">Haut de page</span></a></p>
  	  <!-- InstanceEndEditable -->
      <div class="spacer"></div>
    </div>
    <!-- fin zone de texte -->

  </div>
    <!-- fin de page -->
    <div id="pied">
      <ul>
          <li class="qui"><a href="../FR/QuiSommesNous.html"><img src="../interface/images/menu_bas02_text-01.png" width="153" height="22" alt="Qui sommes-nous" /></a></li>
          <li class="contact"><a href="../FR/contact.html"><img src="../interface/images/menu_bas02_text-02.png" width="91" height="22" alt="Contact" /></a></li>
          <li class="media"><a href="../FR/Presse.html"><img src="../interface/images/menu_bas02_text-03.png" width="79" height="22" alt="Presse" /></a></li>
          <li class="expo"><a href="../FR/expositions.html"><img src="../interface/images/menu_bas02_text-04.png" width="117" height="22" alt="Expositions" /></a></li>
          <li class="partner"><a href="../FR/partenaires.html"><img src="../interface/images/menu_bas02_text-05.png" width="116" height="22" alt="Partenaires" /></a></li>

      </ul>
    </div>
</div>
  <!-- fin contenant2 --><!-- fin contenant1 -->
  <div id="right-reserved">
  <p>Tous droits réservés  2009 - 2010 &copy; G.G. TELECOM</p>
</div>
<!-- InstanceBeginEditable name="pageScript" -->
<!-- InstanceEndEditable -->

</body>
<!-- InstanceEnd --></html>


Au niveau du commentaire qui s'affiche au dessus du formulaire une fois les données entré

<p align="center">La photo <strong>fgzgz</strong> a été ajoutée à l'album <strong></strong>!<br /><br /></p>

on vois clairement qu'il manque l'indication de l'album (entre les 2 derniers <strong>) Mais ça ce n'est pas une surprise puisque je connais déjà le problème...

Là je vois vraiment pas comment régler ça...
Modifié par juliesunset (12 Apr 2010 - 16:32)
moi il me semble comprendre

tu as deux champs
un select name="camera"
et un
<input name="camera"

à l'interieur d'un meme <form>

^^

c'est le deuxieme qui l'emporte et qui reste vide

mets des noms de variables différents

Pascal
Modifié par CPascal (12 Apr 2010 - 16:45)
Re,

si tu veux pouvoir mettre plusieurs cameras
moi je ferais au plus simple, plusieurs variables genre camera1, camera2, camera3 etc...

et soit fixer un nombre de caméra maximum.

ou alors envoyer un chiffre valant le nombre de caméra <input type="hidden" >
ce chiffre étant initialiser par javascript par exemple.

et gérer la reception en fonction.

ou alors plus simple mais bcp moins ergonomique faire un premier formulaire pour la première camera.

et un second pour rajouter des cameras une par une.

@+
Smiley langue
Merci pour tes réponses, ça m'a pas mal éclairé!

"L'erreur" a du survenir quand j'ai fusionné les 2 formulaires en 1 seul et en les mettant chacun dans des <fieldset> à la place.

Je vais simplement modifier le nom camera de l'un des 2 je crois.

Merci pour ton aide!

EDIT: sujet résolu, tout semble fonctionné maintenant! Smiley ravi
Modifié par juliesunset (12 Apr 2010 - 17:05)