[Résolu 2 fois ;)] script PHP liste deroulante et base de données

script PHP liste deroulante et base de données [Résolu 2 fois ;)] - PHP - Programmation

Marsh Posté le 25-04-2008 à 11:34:22    

Bonjour,
 
 
J'ai un nouveau soucis, je vous l'explique dans mon derniere message.
 
Merci
 
 
 
[Ancien message]
 
 
J'aimerai ajouter a mon site en cours de developpement une partie permettant de trier les resultats afficher a l'aide de listes deroulantes.
 
Voici les champs dans la base de donnée "giratoire" de la table  "photos" :
 

Citation :


id           url                                  zoom                            ville             dep        numdep   annee   photographe   type  
1   ../photos/lemans01.jpg    ../photos/zoom/lemans01.jpg      LE MANS      Sarthes        72       2002     M.XXXXXX     mixte  
2   ../photos/chartres02.jpg  ../photos/zoom/chartres02.jpg    CHARTRES   Eure et Loir    28       2006     M. YYYYYY   Vegetal  


 
Actuellement, il y a deja une fonction en php qui permet d'afficher page par page les photos et les infos contenue dans la base de données avec une barre numeroté de 1 à "nombre de ligne dans la base". J'aimerai concerver cette fonction pour l'affichage. Ce script fonctionne parfaitement donc ce n'est pas la peine de s'atarder dessus, mais vu que ce que je souhaite ajouter doit l'utiliser pour l'affichage vous en aurez besoin pour m'aider.
Voici le code de cette fonction :
 

Citation :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
 
function barre_navigation ($nb_total,  
      $nb_affichage_par_page,  
      $debut,  
      $nb_liens_dans_la_barre) {  
 
   $barre = '';  
   
   // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT  
   if ($_SERVER['QUERY_STRING'] == "" ) {  
      $query = $_SERVER['PHP_SELF'].'?debut=';  
   }  
   else {  
      $tableau = explode ("debut=", $_SERVER['QUERY_STRING']);  
      $nb_element = count ($tableau);  
      if ($nb_element == 1) {  
         $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';  
      }  
      else {  
         if ($tableau[0] == "" ) {  
            $query = $_SERVER['PHP_SELF'].'?debut=';  
         }  
         else {  
            $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';  
         }  
      }  
   }  
   
   // on calcul le numéro de la page active  
   $page_active = floor(($debut/$nb_affichage_par_page)+1);  
   // on calcul le nombre de pages total que va prendre notre affichage  
   $nb_pages_total = ceil($nb_total/$nb_affichage_par_page);  
   
   // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)  
   // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11  
   if ($nb_liens_dans_la_barre%2==0) {  
      $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;  
      $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);  
   }  
   else {  
      $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));  
      $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));  
   }  
   
   if ($cpt_deb1 <= 1) {  
      $cpt_deb = 1;  
      $cpt_fin = $nb_liens_dans_la_barre;  
   }  
   elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {  
      $cpt_deb = $cpt_deb1;  
      $cpt_fin = $cpt_fin1;  
   }  
   else {  
      $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;  
      $cpt_fin = $nb_pages_total;  
   }  
 
   if ($nb_pages_total <= $nb_liens_dans_la_barre) {  
      $cpt_deb=1;  
      $cpt_fin=$nb_pages_total;  
   }  
   
   // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page  
   if ($cpt_deb != 1) {  
      $cible = $query.(0);  
      $lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;';  
   }  
   else {  
      $lien='';  
   }  
   $barre .= $lien;  
 
   // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active  
   for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {  
      if ($cpt == $page_active) {  
         if ($cpt == $nb_pages_total) {  
            $barre .= $cpt;  
         }  
         else {  
            $barre .= $cpt.'&nbsp;-&nbsp;';  
         }  
      }  
      else {  
         if ($cpt == $cpt_fin) {  
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);  
            $barre .= "'>".$cpt."</A>";  
         }  
         else {  
             
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);  
            $barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";  
         }  
      }  
   }  
   
   $fin = ($nb_total - ($nb_total % $nb_affichage_par_page));  
   if (($nb_total % $nb_affichage_par_page) == 0) {  
      $fin = $fin - $nb_affichage_par_page;  
   }  
 
      // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation  
   if ($cpt_fin != $nb_pages_total) {  
      $cible = $query.$fin;  
      $lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>';  
   }  
   else {  
      $lien='';  
   }  
   $barre .= $lien;  
 
   return $barre;    
}  
?>
 
<head>
Retirer car inutile pour cette demande ;)
</head>
 
<body>
<?php
 
// on se connecte à notre base  (je travaille en local avec wamp2 donc localhost et root sans mdp)
$base = mysql_connect ('localhost', 'root', '');  
mysql_select_db ('giratoire', $base);  
 
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages  
$sql = 'SELECT count(*) FROM photos';  
 
// on exécute cette requête  
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
// on récupère le nombre d'éléments à afficher  
$nb_total = mysql_fetch_array($resultat);  
 
// on teste si ce nombre de vaut pas 0  
if (($nb_total = $nb_total[0]) == 0) {  
echo 'Aucune réponse trouvée';  
}  
else {  
     
   
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0  
if (!isset($_GET['debut'])) $_GET['debut'] = 0;  
   
   $nb_affichage_par_page = 1;  
   
// Préparation de la requête avec le LIMIT  
$sql = 'SELECT * FROM photos ORDER BY ID ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;  
 
// on exécute la requête  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
 
// on va scanner tous les tuples un par un  
while ($data = mysql_fetch_array($req)) {  
// on affiches les résultats dans la <table>
 
echo '<table width="95%" border="0" align="center" cellpadding="0" cellspacing="5"><tr><tdcolspan="2"><a href=" ' , htmlentities(trim($data['zoom'])) , ' " target="_blank"><div align="center"><img src="' , htmlentities(trim($data['url'])) , '"></a></div></td></tr>';
 
echo '<tr><td width="50%"><div align="right">Ville : </div></td><td width="50%"><div align="left"> ' , htmlentities(trim($data['ville'])) , '</div></td></tr>';
 
echo '<tr><td width="50%"><div align="right">Département : </div></td><td width="50%"><div align="left"> ' , htmlentities(trim($data['dep'])) , ' - ' , htmlentities(trim($data['numdep'])) ,'</div></td></tr>';
 
echo '<tr><td width="50%"><div align="right">Photographe : </div></td><td width="50%"><div align="left"> ' , htmlentities(trim($data['photographe'])) , '</div></td></tr>';
 
echo '<tr><td width="50%"><div align="right">Année : </div></td><td width="50%"><div align="left"> ' , htmlentities(trim($data['annee'])) , '</div></td></tr>';
 
 
}  
 
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($req);  
   echo '</table><br />';  
 
   // on affiche enfin notre barre  
   echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';  
}  
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($resultat);  
// on ferme la connexion à la base de données.  
mysql_close ();  
echo '</table><br />';  
?>
 


 
Voila ! Donc avec ca, ca nous affiche une page avec une photo et en dessous les infos de ville, departement, photographe...
 
Ce que je ne sais pas faire et où j'ai besoin de votre aide c'est pour :
 
- ajouter des listes deroulantes avec les champs de la table "photos"

  • une liste deroulante pour "ville"
  • une liste deroulante pour "departement" (avec le "numero departement" entre parenthese)
  • une liste deroulante pour "photographe"
  • une liste deroulante pour "type"


- toutes les listes sont sur la meme page.
 
- les listes deroulantes sont rempli a partir des infos de la base. C'est a dire, par exemple, qu'un departement qui n'est pas present dans la base de donnée ne sera pas affiché dans la liste deroulante.
 
- lorsqu'on choisi un critére dans une liste deroulante, automatiquement, les resultats affichés sont recalculés et affichés (avec le menu page par page - fonction ecrite plus haut)
 
Voila, j'espere avoir etait assez clair. Je debute en PHP est je n'arrive pas a faire ca ;) Si une bonne âme veux bien m'ecrire le code de cette page je le venerai jusqu'a la fin des temps ! :ouch:

Message cité 1 fois
Message édité par esteban72 le 29-04-2008 à 10:00:52
Reply

Marsh Posté le 25-04-2008 à 11:34:22   

Reply

Marsh Posté le 25-04-2008 à 11:37:26    

esteban72 a écrit :

Voila, j'espere avoir etait assez clair. Je debute en PHP est je n'arrive pas a faire ca ;) Si une bonne âme veux bien m'ecrire le code de cette page je le venerai jusqu'a la fin des temps ! :ouch:  


 
Hors charte....
Avec un peu de réflexion, ton ami Google => tu fais un petit script que tu testes sur une autre page et aprés tu cherches où l'insérer....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 25-04-2008 à 12:37:40    

Oui j'ai deja fait des essais avec des formulaires en methodes Get et post mais ca ne fonctionne pas. Le formulaire garde la valeurs fixé par defaut au lieu de prendre celle choisi dans la liste deroulante. J'aurai du le signaler ;)
 
Pour commencé, j'ai juste fait avec une liste deroulante sur le departement. Mais ca bloque :)
 
Voici le code où je me suis arreté :
 

Citation :


<?php
 
function barre_navigation ($nb_total,  
      $nb_affichage_par_page,  
      $debut,  
      $nb_liens_dans_la_barre) {  
 
   $barre = '';  
   
   // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT  
   if ($_SERVER['QUERY_STRING'] == "" ) {  
      $query = $_SERVER['PHP_SELF'].'?debut=';  
   }  
   else {  
      $tableau = explode ("debut=", $_SERVER['QUERY_STRING']);  
      $nb_element = count ($tableau);  
      if ($nb_element == 1) {  
         $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';  
      }  
      else {  
         if ($tableau[0] == "" ) {  
            $query = $_SERVER['PHP_SELF'].'?debut=';  
         }  
         else {  
            $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';  
         }  
      }  
   }  
   
   // on calcul le numéro de la page active  
   $page_active = floor(($debut/$nb_affichage_par_page)+1);  
   // on calcul le nombre de pages total que va prendre notre affichage  
   $nb_pages_total = ceil($nb_total/$nb_affichage_par_page);  
   
   // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)  
   // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11  
   if ($nb_liens_dans_la_barre%2==0) {  
      $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;  
      $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);  
   }  
   else {  
      $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));  
      $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));  
   }  
   
   if ($cpt_deb1 <= 1) {  
      $cpt_deb = 1;  
      $cpt_fin = $nb_liens_dans_la_barre;  
   }  
   elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {  
      $cpt_deb = $cpt_deb1;  
      $cpt_fin = $cpt_fin1;  
   }  
   else {  
      $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;  
      $cpt_fin = $nb_pages_total;  
   }  
 
   if ($nb_pages_total <= $nb_liens_dans_la_barre) {  
      $cpt_deb=1;  
      $cpt_fin=$nb_pages_total;  
   }  
   
   // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page  
   if ($cpt_deb != 1) {  
      $cible = $query.(0);  
      $lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;';  
   }  
   else {  
      $lien='';  
   }  
   $barre .= $lien;  
 
   // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active  
   for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {  
      if ($cpt == $page_active) {  
         if ($cpt == $nb_pages_total) {  
            $barre .= $cpt;  
         }  
         else {  
            $barre .= $cpt.'&nbsp;-&nbsp;';  
         }  
      }  
      else {  
         if ($cpt == $cpt_fin) {  
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);  
            $barre .= "'>".$cpt."</A>";  
         }  
         else {  
             
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);  
            $barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";  
         }  
      }  
   }  
   
   $fin = ($nb_total - ($nb_total % $nb_affichage_par_page));  
   if (($nb_total % $nb_affichage_par_page) == 0) {  
      $fin = $fin - $nb_affichage_par_page;  
   }  
 
      // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation  
   if ($cpt_fin != $nb_pages_total) {  
      $cible = $query.$fin;  
      $lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>';  
   }  
   else {  
      $lien='';  
   }  
   $barre .= $lien;  
 
   return $barre;    
}  
?>
 
<head>
supprimé ici car pas besoin pour mon probleme
</head>
 
<body>
<?php
 
// on se connecte à notre base  
$base = mysql_connect ('localhost', 'root', '');  
mysql_select_db ('giratoire', $base);  
 
//init de departement
if (!isset($_GET['rdep'])) $_GET['numdep'] = 72;  
 
$sql_rdep = 'SELECT * FROM photos';
$req_rdep = mysql_query($sql_rdep) or die('Erreur SQL !<br />'.$sql_rdep.'<br />'.mysql_error());
echo '<form method=\"GET\" action="./recherche.php" />';
echo '<select name=\"rdep\">';
while ($data = mysql_fetch_array($req_rdep))  
{
echo "<option value=\"". $data["numdep"] ."\">". $data["dep"] ." ( ".($data['numdep'])." )</option>\n";    
}  
echo "</select>\n<br />\n<input type=\"submit\" value=\"Afficher\" class=\"bouton\" /></form>";
 
 
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages  
$sql = 'SELECT count(*) FROM photos WHERE numdep = "' . $_GET['numdep'] .'"';  
 
// on exécute cette requête  
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
// on récupère le nombre d'éléments à afficher  
$nb_total = mysql_fetch_array($resultat);  
 
 
// on teste si ce nombre de vaut pas 0  
if (($nb_total = $nb_total[0]) == 0) {  
echo 'Aucune réponse trouvée';  
}  
else {  
 
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0  
if (!isset($_GET['debut'])) $_GET['debut'] = 0;  
   
   $nb_affichage_par_page = 1;  
   
// Préparation de la requête avec le LIMIT  
$sql = 'SELECT * FROM photos WHERE numdep = "' . $_GET['numdep'] .'" ORDER BY ID ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;  
 
// on exécute la requête  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
 
// on va scanner tous les tuples un par un  
while ($data = mysql_fetch_array($req)) {  
// on affiches les résultats dans la <table>
 
echo '<table width="95%" border="0" align="center" cellpadding="0" cellspacing="5"><tr><tdcolspan="2"><a href=" ' , htmlentities(trim($data['zoom'])) , ' " target="_blank"><div align="center"><img src="' , htmlentities(trim($data['url'])) , '"></a></div></td></tr>';
 
echo '<tr><td width="50%"><div align="right">Ville : </div></td><td width="50%"><div align="left"> ' , htmlentities(trim($data['ville'])) , '</div></td></tr>';
 
echo '<tr><td width="50%"><div align="right">Département : </div></td><td width="50%"><div align="left"> ' , htmlentities(trim($data['dep'])) , ' - ' , htmlentities(trim($data['numdep'])) ,'</div></td></tr>';
 
echo '<tr><td width="50%"><div align="right">Photographe : </div></td><td width="50%"><div align="left"> ' , htmlentities(trim($data['photographe'])) , '</div></td></tr>';
 
echo '<tr><td width="50%"><div align="right">Année : </div></td><td width="50%"><div align="left"> ' , htmlentities(trim($data['annee'])) , '</div></td></tr>';
 
 
}  
 
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($req);  
   echo '</table><br />';  
 
   // on affiche enfin notre barre  
   echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';  
}  
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($resultat);  
 
//on libère l'espace mémoire alloué pour dep
mysql_free_result ($req_rdep);  
 
// on ferme la connexion à la base de données.  
mysql_close ();  
echo '</table><br />';  
?>
 
</div>
 


 
Voila,  
 
J'ai fait un test en mettant des echos avant et apres le controle sur la variable  
 

Citation :


//init de departement
echo $_GET['numdep'] . '1';
if (!isset($_GET['rdep'])) $_GET['numdep'] = 72;  
echo $_GET['numdep'] . '2';


 
Donc voila ce que ca affiche au dessus de la liste deroulante :
 
- à l'ouverture de la page : 1722
Ce qui est normale, on arrive sur la page, avant le test, la variable n'a pas de valeur. on test eston lui attribu la valeur de 72. Donc apres le test on a 72 comme valeur.
 
- en choisissant le departement 28 ou 72 et en cliquand sur le bouton : 1722
Donc la variable n'a toujours pas de valeur quand on recharge la page.
 
Voila, j'espere que maintenant je rentre dans la charte ;)
 

Reply

Marsh Posté le 25-04-2008 à 14:48:53    

Je comprends pas grand chose à ton problème.... Essaye de faire un print_r($_GET) pour voir toutes les variables définies au chargement...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 25-04-2008 à 14:55:33    

Il me renvoi : "Array ( )"
 
et apres avoir selectionner le departement 28 dans la liste : "Array ( [\"rdep\"] => 28 )"


Message édité par esteban72 le 25-04-2008 à 14:56:14
Reply

Marsh Posté le 25-04-2008 à 14:56:21    

Donc ton redp est défini


Message édité par babasss le 25-04-2008 à 14:57:20

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 25-04-2008 à 14:59:09    

Et tu le récupères en faisant $_GET['rdep'] et non $_GET['numdep']


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 25-04-2008 à 15:02:08    

A quel niveau il faut que je remplace $_GET['numdep'] par $_GET['numdep'] ? Dans le formulaire ou dans tout le reste du code ?

Reply

Marsh Posté le 25-04-2008 à 15:06:30    

esteban72 a écrit :

A quel niveau il faut que je remplace $_GET['numdep'] par $_GET['numdep'] ? Dans le formulaire ou dans tout le reste du code ?


 
 :pfff:


Message édité par Profil supprimé le 25-04-2008 à 15:08:44
Reply

Marsh Posté le 25-04-2008 à 15:17:30    

J'ai remplacé "numdep" par "rdep"  
 
dans les 2 requetes vers la base :
 

Citation :


$sql = 'SELECT count(*) FROM photos WHERE numdep = "' . $_GET['rdep'] .'"';


 
et  
 

Citation :


$sql = 'SELECT * FROM photos WHERE numdep = "' . $_GET['rdep'] .'" ORDER BY ID ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;  


 
Là quand je selectionne le departement, ca me renvoi "aucun resultat"
 
 
Si en plus, je remplace dans le if isset

Citation :


if (!isset($_GET['rdep'])) $_GET['rdep'] = 72;  


 
Là il affiche les parametres par defaut (donc departement 72) mais les infos change pas quand on choisi l'autre departement.

Reply

Marsh Posté le 25-04-2008 à 15:17:30   

Reply

Marsh Posté le 25-04-2008 à 15:22:10    

Forcément :
echo '<select name=\"rdep\">'; [:petrus75]
 
edit: Et au passage :
http://fr.php.net/mysql_real_escape_string

Message cité 1 fois
Message édité par sielfried le 25-04-2008 à 15:23:27

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 25-04-2008 à 15:24:40    

Euh desolé, mais je debute alors je vois pas ce qu'il y a d'evident comme erreur. Est ce que tu peux m'expliquer s'il te plait ?

Reply

Marsh Posté le 25-04-2008 à 15:28:49    

sielfried a écrit :

Forcément :
echo '<select name=\"rdep\">'; [:petrus75]

 

edit: Et au passage :
http://fr.php.net/mysql_real_escape_string


Bien vu  :D  :D  :D , c'est pour ca qu'il affichait ca : "Array ( [\"rdep\"] => 28 )". Je comprenais pas...

 

@esteban72:
cette ligne est incorrect : echo '<select name=\"rdep\">';  (tu mélanges simple et double quotes)
=> echo "<select name=\"rdep\">"; ou  echo '<select name="rdep">';

 

Explication : la valeur dans ton GET au lieu d'être rdep était \"rdep\"


Message édité par babasss le 25-04-2008 à 15:29:39

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 25-04-2008 à 15:33:18    

esteban72 a écrit :

Euh desolé, mais je debute alors je vois pas ce qu'il y a d'evident comme erreur. Est ce que tu peux m'expliquer s'il te plait ?


 
Les \ servent à échapper les quotes (simples ou doubles) seulement en cas de confusion avec le caractère englobant la chaîne, comme dans 'salut c\'est moi' ou dans "il a dit \"un truc\"". Mais si t'englobes avec des quotes simples, pas besoin d'échapper les quotes doubles, et vice versa (non seulement pas besoin, mais surtout l'antislash sera pris tel quel).


Message édité par sielfried le 25-04-2008 à 15:34:15

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 25-04-2008 à 15:33:46    

Oki ;)
 
Effectivement ca marche comme ca ;)
 
Reste juste la valeur par defaut car quand on arrive sur la page recherche.php, il affiche "aucun resultat". Apres quand on choisi dans la liste deroulante c'est bon mais j'aimerai qu'il arrive des le debut sur departement 72.
 
Il est pas bon mon if (!isset($_GET['rdep'])) $_GET['rdep'] = 72;

Reply

Marsh Posté le 25-04-2008 à 15:45:53    

Désolé, il restait un numdep dans le if (!isset($_GET['rdep'])) $_GET['rdep'] = 72; J'avais pas du sauvegarder ;)
 
Je vous remercie deja pour avoir reglé mon probleme ! Vous etes top !  

Reply

Marsh Posté le 29-04-2008 à 08:46:18    

Bonjour,
 
La fonction marche bien, mais j'ai de nouveau un soucis que je n'arrive pas a regler.  
 
La liste deroulante se rempli en fonction des informations dans la base. Donc a chaque fois qu'il trouve un departement, il l'ecrit dans la liste deroulante. Le probleme, c'est qu'il y a plusieurs photos qui ont le meme departement. Donc dans ma liste deroulante, je me retrouve avec n fois le meme departement :(
 
Je n'arrive pas a lui faire mettre la valeur de departement dans la liste uniquement si elle n'est pas deja presente.  
 
Je vous remet le code du formulaire de la liste :
 

Citation :


<?php
 
// on se connecte à notre base  
$base = mysql_connect ('localhost', 'root', '');  
mysql_select_db ('giratoire', $base);  
 
//init de departement
if (!isset($_GET['rdep'])) $_GET['rdep'] = 72;  
 
$sql_rdep = 'SELECT * FROM photos ORDER BY numdep ASC';
$req_rdep = mysql_query($sql_rdep) or die('Erreur SQL !<br />'.$sql_rdep.'<br />'.mysql_error());
echo '<form method=\"GET\" action="./rechdep.php" />';
echo '<select name="rdep">';
 
while ($data = mysql_fetch_array($req_rdep))  
{
echo "<option value=\"". $data["numdep"] ."\">". $data["dep"] ." ( ".($data['numdep'])." )</option>\n";    
}  
echo "</select>\n\n<input type=\"submit\" value=\"Afficher\" class=\"bouton\" /></form>";
 


 

Reply

Marsh Posté le 29-04-2008 à 09:15:50    

A vue d'oeil comme ca, ca n'a rien à voir avec ton formulaire mais ton script d'enregistrement. Fais-tu un INSERT ou  un UPDATE ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 29-04-2008 à 09:47:34    

C'est la boucle "While" qui rempli la liste deroulante. Donc a chaque fois qu'il lit une ligne dans la table, il rempli la liste avec la valeur du departement. Donc si il lit plusieurs fois le meme departement, il ecrit plusieurs fois ce departement.
 
Quand tu parles de mon script d'enregistrement, tu parles de la façon dont je renseigne la base ? Parceque dans ce cas, je le fais a la main. Donc je pense pas qu'il puisse y avoir d'erreur.  
 
Voila ce que donne la requete qui est faite pour remplir la base  
 

Citation :


INSERT INTO `giratoire`.`photos` (
`ID` ,
`nouveau` ,
`url` ,
`ville` ,
`dep` ,
`numdep` ,
`annee` ,
`photographe` ,
`type`  
)
VALUES (
NULL , '0', '/0022', 'Paris', 'Ile de France', '75', '2001', 'rtttt', 'mixte'
);
 

Reply

Marsh Posté le 29-04-2008 à 09:53:14    

SELECT DISTINCT numdep, dep FROM photos ...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-04-2008 à 10:00:18    

Trop bon !  
 
Un mot et ca change tout !  
 
Merci beaucoup Sielfried !

Reply

Marsh Posté le 09-05-2008 à 08:33:41    

Je vous remercie encore, grace a vous mon site est en ligne. Concept particulier mais c'est marrant : www.giratoire.fr
 
N'hesitez pas a m'envoyer vos photos si vous avez des giratoires particuliers par chez vous.
 
Et vous pouvez participer au girajeu pour gagner un petit cadeau chaque mois.
 
@ bientot

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed