PHP Probleme concatenation

Résolu
Bonjour,

Voila j'ai un tableau :

$Price=Array("&pound;400 - &pound;499"=>"price >=400 && price <=499 ","&pound;500 - &pound;599"=>"price >=500 && price <=599"
 ,"&pound;600 - &pound;699"=>"price >=600 && price <=699","&pound;700+"=>"price >700");


qui va me servir lors d'une requete. Mais pour l'instant j'ai besoin d'afficher les valeurs (£400 - £499, par exemple) dans une liste déroulante mais ca ne fonctionne pas correctement.

$OptionPrice='';
		foreach($Price as $key =>$value){
			if($Price==$priceSave){
				$selected=' selected="selected"';
			}else{
				$selected='';
				}
				$OptionPrice .= "<option ".$selected." value=".$value.">".$key."</option>\n";
				//echo "la clé est $key :          $value.\n";
			}
		
Configuration: Windows XP
Firefox 2.0.0.14

4 réponses

  1. Bonjour ,

    Peux tu nous donner le message d'erreur que tu as lors de l'execution?
    0
    1. pas de message d'erreur jai ca dans ma liste:
      pricela clé est £400 - £499 : price >=400 && price <=499 . la clé est £500 - £599 : price >=500 && price <=599. la clé est £600 - £699 : price >=600 && price <=699. la clé est £700+ : price >700. (c'est le echo que j ai mis en commentaire)

      https://www.imagup.com
      0
  2. Bonjour,

    tu n'as pas une erreur de concaténation mais

    
    foreach($Price as $key =>$value){
    	if($value==$priceSave){
    
    0
    1. c'est pas la valeur que je veux prendre en fait dans mon priceSave.
      il sert juste à retenir le prix selectionné par l'utilistaeur dans sa liste déroulante.
      La valeur de ma liste déroulante va servir dans ma requete:
      $query = "SELECT * FROM $table1 WHERE "."$_POST[mavaleurdelistederoulant]"." ORDER BY id ASC LIMIT $resultLimit, 3";
      0
      1. Oui d'accord mais quand tu mets:

        foreach($Price as $key =>$value){
        if($Price==$priceSave){


        $Price est un array donc tu ne peux pas le comparer par ton if à une valeur

        il faut bien que la boucle du foreach compare chaque valeur de l'array (donc $value) à $priceSave

        et pour ta requette:

        si ta liste est
        <select name="selection">
        ............

        $query = "SELECT * FROM $table1 WHERE ton_champ_prix='".$_POST['selection']."' ORDER BY id ASC LIMIT $resultLimit, 3";
        
        0
    2. ok mais j'ai toujours mon probleme avec ma liste déroulante j'ai mis le liens dans le poste d'avant.
      Je voudrais une liste deroulant dans laquelle figure: £400-£499 ;£500-599;£600-699;>£700
      0
      1. Salut,

        Tu ne peux pas mettre dans les valeurs de ton array des signes qui sont interprétés par le php comme < =

        En faisant ainsi ça marche pour ta liste mais ensuite je ne vois pas comme tu vas exploiter la valeur renvoyée ?

        $Price=array("&pound;400 - &pound;499"=>"price '>='400 && price '<='499 ","&pound;500 - &pound;599"=>"price '>='500 && price '<='599"
         ,"&pound;600 - &pound;699"=>"price '>='600 && price '<='699","&pound;700+"=>"price '>'700");
         $priceSave="";
         echo "<select>";
         $OptionPrice=''; // c'est bidon juste pour que chez moi ça marche
        		foreach($Price as $key =>$value){
        			if($value==$priceSave){
        				$selected=' selected="selected"';
        			}else{
        				$selected='';
        				}
        				$OptionPrice .= "<option ".$selected." value=".$value.">".$key."</option>\n";
        				//echo "la clé est $key :          $value.\n";
        			echo $OptionPrice;
        			}
        			
        echo "</select>";
        
        


        Et si tu faisait ton array ainsi (avec des tranches):

        
        $Price=array("&pound;400 - &pound;499"=>"T1","&pound;500 - &pound;599"=>"T2"
         ,"&pound;600 - &pound;699"=>"T3","&pound;700+"=>"T4");
        


        ensuite tu fais un switch case sur la valeur renvoyée

        et tu en déduis tes opérateurs
        0
      2. @Alain_42je te remercie beaucoup alain comme ceci ca fonctionne :)
        0