8796 sujets

Développement web côté serveur, CMS

Bonjour,

J'espère avoir un peu plus de chance qu' avec mon dernier post... passé aux oubliettes
Je voudrai changer une partie du script soit changer un moteur de recherche par un un menu à choix multiples.
La contrainte c'est qu'il me faut reprendre le paramétrage du moteur existant et l'adapter à un menu déroulant à choix multiples comparable à celui qui existe (voir lien ci-dessous)

http://yonne-immobilier.com/index.php?a=4

Est-ce possible ?
Merci pour votre aide.



Eric G


<?


// search form and results

extract($config);

$kw = '';

extract($_REQUEST);

?>



<form method="get" name="search" action="<? echo $searchURL; ?>">

<input type="hidden" name="a" id="a" value="<? echo $_REQUEST['a']; ?>">

<strong><?=$lang['searchkey'];?>:</strong> <input type="text" name="kw" id="kw" size="45" value="<? echo $kw; ?>" />
<div><p>
<b><i>Saisissez un type de bien en utilisant un des noms suggérés :<br /></b> maison, appartement, moulin, ferme, terrain constructible, immeuble, local commercial, location.</i></p></div>

		<td><strong><?=$lang['srchcrt4'];?>:</strong> <select name="price" id="price"><option value="0" selected="selected"><?=$lang['srchcrt7'];?></option><option value="1"><?=$lang['srchcrtprice1'];?></option><option value="2"><?=$lang['srchcrtprice2'];?></option><option value="3"><?=$lang['srchcrtprice3'];?></option><option value="4"><?=$lang['srchcrtprice4'];?></option><option value="5"><?=$lang['srchcrtprice5'];?></option><option value="6"><?=$lang['srchcrtprice6'];?></option></select></td>
		<td><strong><input type="submit" name="submit" value="<?=$lang['srchgo'];?>" /></td>

<tr>

</form>

<hr size="2" style="visibility:visible; display:block;" />


<?



if(isset($_REQUEST['submit']) && !empty($_REQUEST['submit'])){



// build the search query this could get messy

$sql = "SELECT * FROM ".$phprealty->db."property ";

if(!empty($kw)){

$sql2 .= "(title LIKE '%$kw%' OR full_desc LIKE '%$kw%') ";

}

if(!empty($price) && $price > 0 && $price <= 6){

	// first get the correct amounts

	switch($price){

		case 1:

			$psql = "price BETWEEN 0 and 50000";

			break;

		case 2:

			$psql = "price BETWEEN 50000 and 100000";

			break;

		case 3:

			$psql = "price BETWEEN 100000 and 200000";

			break;

		case 4:

			$psql = "price BETWEEN 200000 and 500000";

			break;

		case 5:

			$psql = "price BETWEEN 500000 and 750000";

			break;

		case 6:

			$psql = "price >= 750000";

			break;

	}



	if(!empty($sql2)){

		$sql2 .= "AND ".$psql." ";

	}else{

		$sql2 .= $psql." ";

	}

}



// query string to get num rows to set the limit

$sql3 = "SELECT id FROM ".$phprealty->db."property ";

if(!empty($sql2)){

	$sql3 .= "WHERE ".$sql2;

}



if(!empty($sql2)){

$sql .= "WHERE ".$sql2;

}



	if(!$result = $phprealty->dbQuery($sql3)){

		echo $lang['nomatch'];	

	}else{

	//echo $sql3;
$nums = mysql_num_rows($result);

		

		$a = mysql_num_rows($result);



		// include the pagination script

		include(INC."PaginateIt.php");

		

		//$PaginateIt = new PaginateIt();

		$PaginateIt->SetItemsPerPage(2);

		$PaginateIt->SetItemCount($a);

		$PaginateIt->SetLinksFormat( '<<', ' | ', '>>' );

		$res = $phprealty->dbQuery($sql." ".$PaginateIt->GetSqlLimit());

		if(mysql_num_rows($res) < 1){

			echo $lang['nomatch'];

		}else{

		// include currency converter / formater

		include(INC."curr_conv.class.php");

		$cf = new CurrencyFormatter();

?>



<div class="SearchTitle"><?=$lang['srchrez'];?></div>

<div id="listings">

<?		

		while($res2 = mysql_fetch_array($res)){

?>

	<div class="<? echo ((++$i%2==0)?'evenTR':'oddTR'); ?>" style="padding:10px;margin:10px 0px;">

		<div class="imgL">

<?

	// lets see if there is an image for this listing

	if($iresult = $phprealty->getIntTableRows($fields="*", $from="prop_img", $where="p_id=".$res2['id']." AND def=1", $sort="", $dir="", $limit="1", $push=true)){

?>

	<a href="<? echo $viewPropURL."&propID=".$res2['id']; ?>" title="<?=$lang['propview'];?>"><img src="<? echo $phprealty->IMGWWW."th_".$iresult[0]['fn']; ?>" border="0" /></a>

<?		

	}else{

?>

	<a href="<? echo $viewPropURL."&propID=".$res2['id']; ?>" title="<?=$lang['propview'];?>"><img src="<? echo $phprealty->WWW; ?>assets/no_img.png" border="0" /></a>

<?

	}

?>

	</div><!-- end img div -->

	<div class="infoL">

		<div class="titleL"><a href="<? echo $viewPropURL."&propID=".$res2['id']; ?>" title="<?=$lang['propview'];?>"><? echo ucwords($res2['title'])." - ".$cf->formatWithSymbol($res2['price'],"USD"); if($res2['featured']==1){ ?>&nbsp;<span style="font-size:14px;font-style:oblique;"><?=$lang['realfeat'];?></span><? } ?></a></div>

		<div class="descL"><strong><?=$lang['city'];?>:</strong><br /><? echo ucwords($res2['city']); ?><br />

		<strong><?=$lang['summ'];?>:</strong> <br /><? echo stripslashes(substr($res2['full_desc'],0,250)); ?>... <a href="<? echo $viewPropURL."&propID=".$res2['id']; ?>" title="<?=$lang['propview'];?>"><?=$lang['clickinfo'];?></a></div>

	</div><!-- end info div -->

	<div style="clear:both;">&nbsp;</div>

	</div>

<?

		}// end while

?>

</div>

<?

		}// end if for while query 

		

	}// end if for query

}// end if for submit



?>

<? if(isset($_REQUEST['submit']) && !empty($_REQUEST['submit']) && $a > 0){ ?>

<div id="Plinks">

<? echo $PaginateIt->GetPageLinks()." ".$lang['page']."</div>"; }?> 

Modifié par egibault (18 Jan 2009 - 19:31)
Petit conseil qui n'a rien à voir avec votre demande mais tout de même intéressant à savoir.. écrivez toute votre page en php, ça fait moins mal à votre serveur qui doit n'interpréter qu'une seule fois l'ouverture et la fermeture du code php.

exemple :

[b]N'écrivez pas :[/b]
<html>
<head>
<title><?php $variable ?></title>
</head>
<body>
<div id="block">
etc...

[b]Mais plutôt :[/b]
<?php 
echo "<html> \n";
echo "</head> \n";
echo "<title>".$variable."</title> \n";
echo "</head> \n";
echo "<body> \n";
echo "<div id=\"block\"> \n";
etc...
?>


Afin d'échapper aux guillemets qui sont présents dans le code html, mettez un backslash \ devant ce dernier. Et pour que votre code source soit bien lisible, faites un saut de ligne avec \n. Smiley cligne
Hello egibault Smiley smile ,

Pour conserver une bonne lisibilité des messages sur le forum, il est demandé d'utiliser les balises code pour présenter le code source des exemples.
Pourrais-tu éditer ton message pour te conformer à cette règle de mise en forme ?
Merci d'avance. Smiley cligne

ghijselinck a écrit :
Petit conseil qui n'a rien à voir avec votre demande mais tout de même intéressant à savoir.. écrivez toute votre page en php, ça fait moins mal à votre serveur qui doit n'interpréter qu'une seule fois l'ouverture et la fermeture du code php.
Euh... je trouve ça très discutable ! Smiley murf

Pour une économie qui me semble très minime cela rend non seulement le code très fastidieux à écrire mais en plus beaucoup moins lisible.
Merci pour la mise en forme egibault.

Par contre je ne comprends pas ce que tu veux faire (modifier) ? Smiley rolleyes
Bonjour,

Oui je veux modifier, changer le moteur de recherche pour un menu tel qu'il existe pour la partie budget.
Le but est que l'utilisateur n'est pas à saisir un type de bien mais de cliquer sur celui qui lui convient avec 2 choix possibles :
1) Je lance ma recherche sur un type de bien seulement , j'obtiens tous les biens concernés par le type.
2) Je lance ma recherche sur un type de bien et un budget, j'obtiens tous les biens concernés par le type et le budget.

Je pense avoir été clair ci-dessous le lien correspondant à la page.
http://yonne-immobilier.com/index.php?a=4

Merci

Eric G
Modifié par egibault (21 Jan 2009 - 20:44)
Quelque chose comme ça peut-être :
<?php
// Alimentation des Arrays
$type_biens = array(
	'appartement', 
	'ferme', 
	'immeuble', 
	'local commercial', 
	'location', 
	'maison', 
	'moulin', 
	'terrain constructible' 
);
$libelles_prix = array( 
	'tous les budgets', 
	'&euro;0-&euro;50 000', 
	'&euro;50 000-&euro;100 000', 
	'&euro;100 000-&euro;200 000', 
	'&euro;200 000-&euro;500 000', 
	'&euro;500 000-&euro;750 000', 
	'&euro;750 000 +' 
);
$clauses_prix = array( 
	'', 
	'AND price BETWEEN 0 and 50000' , 
	'AND price BETWEEN 50000 and 100000 ', 
	'AND price BETWEEN 100000 and 200000 ', 
	'AND price BETWEEN 200000 and 500000 ', 
	'AND price BETWEEN 500000 and 750000 ', 
	'AND price >= 750000 '  
);

// Récupération des variables GET (formulaire soumis)
if( isset($_GET['type']) && isset($_GET['prix']) ) {
	$type = intval($_GET['type']);
	if( $type >= count($type_biens) ) $type = 0;
	$prix = intval($_GET['prix']);
	if( $prix >= count($libelles_prix) ) $prix = 0;
	$sql = "SELECT * FROM matable WHERE (title LIKE '%".$type_biens[$type]."%' OR full_desc LIKE '%".$type_biens[$type]."%') ".$clauses_prix[$prix];
	echo '<p>'.$sql.'</p>';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test formulaire</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="get">
	<p>
	<label for="type">Type de bien :</label>
	<select name="type" id="type">
<?php
for($i = 0; $i < count($type_biens); $i++) {
	echo "\t\t<option value=\"".$i."\">".$type_biens[$i]."</option>\n";
}
?>
	</select>
	</p>
	<p>
	<label for="prix">Prix :</label>
	<select name="prix" id="prix">
<?php
for($i = 0; $i < count($libelles_prix); $i++) {
	echo "\t\t<option value=\"".$i."\">".$libelles_prix[$i]."</option>\n";
}
?>
	</select>
	</p>
	<p>
		<input type="submit" value="Rechercher" />
	</p>
</form>
</body>
</html>
Bonjour et merci...

C'est bien quelque chose comme cela...
Moi-même j'avais trouvé à partir du code correspondant au menu budget un menu qui répondait à ce que je voulais.
L'ennui c'est qu'il ne fonctionnait pas Smiley decu
De plus je ne suis pas certain que le seul script communiqué suffise pour trouver la solution.
Ci-dessous 2 liens correspondant au cms spécifique à l'immobilier que j'utilise
http://php-realty.com/products.html
http://php-realty.com/downloads.html

Bonne journée

Eric G Smiley cligne