Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1853 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1724265
esteban72
Posté le 25-04-2008 à 11:34:22  profilanswer
 

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
mood
Publicité
Posté le 25-04-2008 à 11:34:22  profilanswer
 

n°1724270
babasss
Posté le 25-04-2008 à 11:37:26  profilanswer
 

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
n°1724331
esteban72
Posté le 25-04-2008 à 12:37:40  profilanswer
 

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 ;)
 

n°1724455
babasss
Posté le 25-04-2008 à 14:48:53  profilanswer
 

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
n°1724463
esteban72
Posté le 25-04-2008 à 14:55:33  profilanswer
 

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
n°1724465
babasss
Posté le 25-04-2008 à 14:56:21  profilanswer
 

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
n°1724469
babasss
Posté le 25-04-2008 à 14:59:09  profilanswer
 

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


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1724473
esteban72
Posté le 25-04-2008 à 15:02:08  profilanswer
 

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

n°1724477
Profil sup​primé
Posté le 25-04-2008 à 15:06:30  answer
 

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
n°1724482
esteban72
Posté le 25-04-2008 à 15:17:30  profilanswer
 

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.

mood
Publicité
Posté le 25-04-2008 à 15:17:30  profilanswer
 

n°1724485
sielfried
Posté le 25-04-2008 à 15:22:10  profilanswer
 

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
n°1724490
esteban72
Posté le 25-04-2008 à 15:24:40  profilanswer
 

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 ?

n°1724493
babasss
Posté le 25-04-2008 à 15:28:49  profilanswer
 

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
n°1724506
sielfried
Posté le 25-04-2008 à 15:33:18  profilanswer
 

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
n°1724509
esteban72
Posté le 25-04-2008 à 15:33:46  profilanswer
 

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;

n°1724528
esteban72
Posté le 25-04-2008 à 15:45:53  profilanswer
 

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 !  

n°1725938
esteban72
Posté le 29-04-2008 à 08:46:18  profilanswer
 

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


 

n°1725955
babasss
Posté le 29-04-2008 à 09:15:50  profilanswer
 

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
n°1725975
esteban72
Posté le 29-04-2008 à 09:47:34  profilanswer
 

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'
);
 

n°1725978
sielfried
Posté le 29-04-2008 à 09:53:14  profilanswer
 

SELECT DISTINCT numdep, dep FROM photos ...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1725982
esteban72
Posté le 29-04-2008 à 10:00:18  profilanswer
 

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

n°1730111
esteban72
Posté le 09-05-2008 à 08:33:41  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
problème avec un formulaire [résolu]Changement contenu d'une page en fonction d'une liste déroulante
[ PHP ] [ RESOLU ] Envoyer des mail hotmail avec php[RESOLU] [D7] AllocMem ne fonctionne plus !
[Resolu] executer un .bat dans une classe java[resolu] Ajouter l'autocomplétion sur un raw_input()
problème avec "ALTER SESSION SET NSL_TERRITORY" [résolu][ PHP ] str_replace avancé dans un $texte
Plus de sujets relatifs à : [Résolu 2 fois ;)] script PHP liste deroulante et base de données


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR