Avec un selected, afficher des valeurs mais une par defaut.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Avec un selected, afficher des valeurs mais une par defaut.

par theavengers » 19 mars 2008, 17:29

Merci beaucoup, je m'y remets à mes recherches avec vos infos :D

Je reviens à la charge, ne me jetez pas de caillou.

Mais mon probleme ne vient t'il aussi du fait que tout est sur une seule page ?

j'ai tenté un GET pour récuperer la valeur de lieu, ne sachant pas ou mettre POST.
//selection de la table
$_GET['lieu'];


mysql_select_db($BD_base, $BD_link) or die("Sélection de la base impossible : ". mysql_error());
$Requete_SQL2 = "SELECT * FROM matable WHERE valid = '1' AND lieu ='$lieu' ORDER BY date DESC ";

par Ryle » 19 mars 2008, 17:27

En complément, je dirais qu'il te faut soit une valeur par défaut pour ta variable $lieu, soit une condition pour construire ta requête et omettre le critère sur le lieu si jamais celui-ci n'est pas spécifié.


A noter par ailleurs que si dans ta requête SQL tu fais une recherche exacte sur la chaine, il faut utiliser "=" et non pas "LIKE". L'instruction LIKE n'a d'intérêt que si tu ne connais pas une partie de la chaine cherchée, que tu remplace alors par un joker ("%").

A noter aussi que lorsque tu récupères la valeur d'un enregistrement de la requête avec mysql_fetch_array(), tu manipules un tableau associatif dont les index sont des chaines de caractères. Il faut donc les spécifier entre apostrophes/guillemets, sans quoi php va supposer qu'il s'agit d'une constante, puis va aller voir si cette constante est définie, ne probablement pas la trouver et du coup se dire qu'à défaut de mieux, il pourrait tout aussi bien utiliser la chaine qu'elle représente... autant lui faire gagner du temps et lui dire que c'est une chaine dès le début :) (surtout que si jamais la constante existe, c'est sa valeur qu'il va utiliser et le résultat ne sera sans doute pas celui attendu ;))
$id=$val['ID']; 
$num=$val['date'];
... 
A lire également : les bonnes pratiques en SQL

par h0_noMan » 19 mars 2008, 16:43

Ton soucis est que $lieu n'est pas défini avant ta première requête.

Ta requête équivaut à :

Code : Tout sélectionner

SELECT * FROM matable WHERE valid = '1' AND lieu LIKE '' ORDER BY date DESC
Qui je présume, ne retourne aucun enregistrement. (A moins que tu es activé register_global dans ton php.ini)

Donc au début de ton script tu dois récupérer ce que t'envoie le formulaire $_POST['lieu'][/php]

Avec un selected, afficher des valeurs mais une par defaut.

par theavengers » 19 mars 2008, 16:33

Bonjour à tous et à toutes,

voila, j'ai une page qui s'affiche normalement avec toutes les données que je veux, mais j'ai décider de permettre un tri par departement. Donc j'ai utiliser un select qui fonctionne, je choisis mon departement et ça s'affiche. Mon soucis, c'est en arrivant sur cette page, je n'ai rien qui s'affiche si on ne cliques pas.

Donc j'ai essayé un peu tout, mais la je seche. merci d'avance.
<?PHP
						
		    echo'<form name="indicateur" action="mapage2.php" method="post">';
            	    echo'<div align="center">';
            	    echo'<select name="lieu">';
		    echo'<option value="%" selected="selected">Tout</option>';
		    echo'<option value="01">01</option>';
                    echo'<option value="02">02</option>';
                    echo'<option value="03">03</option>';
                    echo'<option value="04">04</option>';
                    echo'<option value="27">27</option>';
                    echo'<option value="77">77</option>';
            echo'</select>';
            echo'<input type="submit" value="soumettre">';
            echo'</div>';
            echo'</form>';
			?>
Et voici mon affichage :

mysql_select_db($BD_base, $BD_link) or die("S&eacute;lection de la base impossible : ". mysql_error());
$Requete_SQL2 = "SELECT * FROM matable WHERE valid = '1' AND lieu LIKE '$lieu' ORDER BY date DESC ";



$result = mysql_query($Requete_SQL2) or die("Erreur de S&eacute;lection dans la base : ". $Requete_SQL2 .'<br />'. mysql_error());

// creation et affichage dans la table
error_reporting(55); 


while($val=mysql_fetch_array($result))
if($val["valid"] == 1)
{
$id=$val[ID];
$num=$val[date];
$nom=$val[titre];
$pre=$val[lieu];


echo"<tr>";
echo"<td width=84 align=left>";
echo"<DIV class=bold>";
echo"$num";
echo"</DIV>";
echo"</td>";
echo"<td align=left>";
echo"<SPAN class=normal>";
echo"<a href=\"mapagedetails?id=",$id,"\">",$nom,"</a>";
echo"</SPAN>";
echo"</td>";
echo"<td width=20 align=left>";
echo"<DIV class=bold>";
echo"$pre";
echo"</DIV>";
echo"</td>";
echo"</tr>";
}

mysql_close();
?>