Page 1 sur 1

problème formulaire de recherche valeur multiple

Posté : 12 janv. 2015, 21:02
par ecoscientist
Bonjour,
Très novice j'essaye de modifier un script de formulaire de recherche Php.
Pour l'instant je peux rechercher dans ma base de données soit les hommes soit les femmes.
Via le formulaire :
<select name="zsex" size=2>
<option value="0"><?php _e('Homme','rencontre');?></option>
<option value="1"><?php _e('Femme','rencontre');?></option>
</select> </span> 
J'aimerai avoir une troisième valeur : Type "indifferent" pour rechercher l'un ou l'autre sachant que dans ma table je n'ai que des 0 pour homme et 1 pour femme. A la rigueur cela m'irait si l'abscence de choix me donnait tout les resultats mais la fonction recherche ne donne rien du tout.

Pouvez vous m'aider?

Pour info voici le code qui montre le resultat de la recherche (je m'y perd carrèment!):
/ Resultat de la recherche plus
		global $wpdb; global $rencOpt; global $rencDiv;
		$pagine = (isset($_POST['pagine'])?$_POST['pagine']:0);
		$suiv = 1;
		?> 
		
		<form name='rencPagine' method='post' action=''>
			<input type='hidden' name='page' value='liste' />
			<input type='hidden' name='pays' value='<?php echo (isset($_POST['pays'])?$_POST['pays']:''); ?>' />
			<input type='hidden' name='region' value='<?php echo (isset($_POST['region'])?$_POST['region']:''); ?>' />
			<input type='hidden' name='ville' value='<?php echo (isset($_POST['ville'])?$_POST['ville']:''); ?>' />
			<input type='hidden' name='gps' value='<?php echo (isset($_POST['gps'])?$_POST['gps']:''); ?>' />
			<input type='hidden' name='km' value='<?php echo (isset($_POST['km'])?$_POST['km']:''); ?>' />
			<input type='hidden' name='pseudo' value='<?php echo (isset($_POST['pseudo'])?$_POST['pseudo']:''); ?>' />
			<input type='hidden' name='zsex' value='<?php echo (isset($_POST['zsex'])?$_POST['zsex']:''); ?>' />
			<input type='hidden' name='ageMin' value='<?php echo (isset($_POST['ageMin'])?$_POST['ageMin']:''); ?>' />
			<input type='hidden' name='ageMax' value='<?php echo (isset($_POST['ageMax'])?$_POST['ageMax']:''); ?>' />
			<input type='hidden' name='mot' value='<?php echo (isset($_POST['mot'])?$_POST['mot']:''); ?>' />
			<input type='hidden' name='photo' value='<?php echo (isset($_POST['photo'])?$_POST['photo']:''); ?>' />
			<input type='hidden' name='id' value='<?php echo (isset($_POST['id'])?$_POST['id']:''); ?>' />
			<input type='hidden' name='pagine' value='<?php echo $pagine; ?>' />
		</form>
		<?php
		if ($_POST['pseudo']) $s="SELECT R.user_id, R.i_zsex, R.i_zage_min, R.i_zage_max, R.i_zrelation, P.t_annonce 
			FROM ".$wpdb->prefix."rencontre_users_profil P, ".$wpdb->prefix."rencontre_users R, ".$wpdb->prefix."users U 
			WHERE U.user_login LIKE '%".strip_tags($_POST['pseudo'])."%' and R.i_sex=".strip_tags($_POST['zsex'])." and U.ID=R.user_id and P.user_id=R.user_id";
		else
			{
			$s="SELECT U.user_login, R.user_id, R.i_zsex, R.i_zage_min, R.i_zage_max, R.i_zrelation, R.i_photo, R.e_lat, R.e_lon, P.t_annonce FROM ".$wpdb->prefix."users U, ".$wpdb->prefix."rencontre_users_profil P, ".$wpdb->prefix."rencontre_users R WHERE U.ID=R.user_id and P.user_id=R.user_id and R.i_sex=".strip_tags($_POST['zsex'])." and R.i_zsex".((strip_tags($_POST['']))?'=':'!=').strip_tags($_POST['zsex']);
			if ($_POST['ageMin']>18) {$zmin=date("Y-m-d",mktime(0, 0, 0, date("m"), date("d"), date("Y")-strip_tags($_POST['ageMin']))); $s.=" and R.d_naissance<'".$zmin."'";}
			if ($_POST['ageMax']<99) {$zmax=date("Y-m-d",mktime(0, 0, 0, date("m"), date("d"), date("Y")-strip_tags($_POST['ageMax'])));  $s.=" and R.d_naissance>'".$zmax."'";}
			if(strip_tags($_POST[' '])) $s.=" and R.user_id!=".strip_tags($_POST['id']);
			if ($_POST['gps'] && $_POST['km'])
				{
				$gps = explode('|',strip_tags($_POST['gps']));
				if(isset($gps[1]))
					{
					$dlat = (strip_tags($_POST['km']) / 1.852 / 60);
					$dlon = (strip_tags($_POST['km']) / 1.852 / 60 / cos($gps[0] * 0.0174533));
					$s.=" and ((R.e_lat<".($gps[0]+$dlat)." and R.e_lat>".($gps[0]-$dlat)." and R.e_lon<".($gps[1]+$dlon)." and R.e_lon>".($gps[1]-$dlon).")";
					if ($_POST['ville']) $s.=" or R.c_ville LIKE '".strip_tags($_POST['ville'])."'";
					$s .= ")";
					}
				}
			else if ($_POST['ville']) $s.=" and R.c_ville LIKE '".strip_tags($_POST['ville'])."'";
			if ($_POST['pays']) $s.=" and R.c_pays='".$_POST['pays']."'";
			if ($_POST['region']) $s.=" and R.c_region LIKE '".addslashes($wpdb->get_var("SELECT c_liste_valeur FROM ".$wpdb->prefix."rencontre_liste WHERE id='".$_POST['region']."'"))."'";
			if ($_POST['mot']) $s.=" and (P.t_annonce LIKE '%".$_POST['mot']."%' or P.t_titre LIKE '%".strip_tags($_POST['mot'])."%')";
			if (isset($_POST['photo']) && $_POST['photo']=='1') $s.=" and R.i_photo>0";
			}
		$s.=" ORDER BY R.d_session DESC, P.d_modif DESC LIMIT ".($pagine*$rencOpt['limit']).", ".($rencOpt['limit']+1); // LIMIT indice du premier, nombre de resultat
		$q = $wpdb->get_results($s);
		if($wpdb->num_rows<=$rencOpt['limit']) $suiv=0;
		else array_pop($q); // supp le dernier ($rencOpt['limit']+1) qui sert a savoir si page suivante
		if(isset($gps[1]))
			{
			echo '<div id="rencMap2" style="display:block;"></div>'."\r\n";
			echo '<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>'."\r\n";
			echo '<script type="text/javascript">var lat='.$gps[0].',lon='.$gps[1].',gps=[';
			foreach ($q as $k=>$r)
				{
				if($k) echo',';
				echo '['.$r->e_lat.','.$r->e_lon.',"'.$r->i_photo.'","'.$r->user_login.'","'.$r->user_id.'"]';
				}
			echo '];'."\r\n".'jQuery(document).ready(function(){f_mapCherche(gps,lat,lon,"'.$rencDiv['siteurl'].'");});</script>'."\r\n";
			}
		foreach($q as $r)
			{ ?>
			<div class="rencBox">
				<?php RencontreWidget::f_miniPortrait($r->user_id); ?>
				<div class="maxiBox right rel">
					<?php echo stripslashes($r->t_annonce); ?>
					<div style="height:38px;"></div>
					<div class="abso225">
						<?php echo __('Je cherche','rencontre').'&nbsp;'.(($r->i_zsex==1)?__('une femme','rencontre'):''.(($s->i_zsex==0)?__('un homme','rencontre'):__('une personne','rencontre'))).'<br />';
						echo '&nbsp;'.__('entre','rencontre').'&nbsp;'.$r->i_zage_min.'&nbsp;'.__('et','rencontre').'&nbsp;'.$r->i_zage_max.'&nbsp;'.__('ans','rencontre').'<br />';
						echo __('pour','rencontre').'&nbsp;'.(($r->i_zrelation==0)?__('Amitié profonde','rencontre'):''.(($r->i_zrelation==1)?__('Copain/Relations','rencontre'):__('Partage d\'activité (Sport/Jeux...)','rencontre'))); ?>
					</div>
					<div class="abso135">
						<div class="button right"><a href="javascript:void(0)" onClick="document.forms['rencMenu'].elements['page'].value='ecrire';document.forms['rencMenu'].elements['id'].value='<?php echo $r->user_id; ?>';document.forms['rencMenu'].submit();"><?php _e('Envoyer un message','rencontre');?></a></div>
						<div class="button right"><a href="javascript:void(0)" onClick="document.forms['rencMenu'].elements['page'].value='sourire';document.forms['rencMenu'].elements['id'].value='<?php echo $r->user_id; ?>';document.forms['rencMenu'].submit();"><?php _e('Lui sourire','rencontre');?></a></div>
						<div class="button right"><a href="javascript:void(0)" onClick="document.forms['rencMenu'].elements['page'].value='portrait';document.forms['rencMenu'].elements['id'].value='<?php echo $r->user_id; ?>';document.forms['rencMenu'].submit();"><?php _e('Profil','rencontre');?></a></div>
					</div>
				</div><!-- .grandeBox .right -->
				<div class="clear"></div>
			</div>
		<?php }
		if($pagine||$suiv)
			{
			echo '<div class="rencPagine">';
			if(($pagine+0)>0) echo "<a href=\"javascript:void(0)\" onClick=\"document.forms['rencPagine'].elements['pagine'].value=parseInt(document.forms['rencPagine'].elements['pagine'].value)-1;document.forms['rencPagine'].submit();\">".__('Page pr&eacute;c&eacute;dente','rencontre')."</a>";
			for($v=max(0, $pagine-4); $v<$pagine; ++$v)
				{
				echo "<a href=\"javascript:void(0)\" onClick=\"document.forms['rencPagine'].elements['pagine'].value='".$v."';document.forms['rencPagine'].submit();\">".$v."</a>";
				}
			echo "<span>".$pagine."</span>";
			if($suiv) echo "<a href=\"javascript:void(0)\" onClick=\"document.forms['rencPagine'].elements['pagine'].value=parseInt(document.forms['rencPagine'].elements['pagine'].value)+1;document.forms['rencPagine'].submit();\">".__('Page suivante','rencontre')."</a>";
			echo '</div>';
			}

		}

Re: problème formulaire de recherche valeur multiple

Posté : 12 janv. 2015, 23:35
par Elie
<option value="2"><?php _e('Indifferent','rencontre');?></option>
$_POST['zsex'] = ($_POST['zsex'] == 2) ? "0 OR R.i_sex=1" : $_POST['zsex'];
and (R.i_sex=".strip_tags($_POST['zsex']).")
Mais c'est très tiré par les cheveux...
Surtout que je comprend pas trop a quoi sert :
and R.i_zsex".((strip_tags($_POST['']))?'=':'!=').strip_tags($_POST['zsex']);
Je crois qu'il faudrait le viré pour être sur ...

Re: problème formulaire de recherche valeur multiple

Posté : 13 janv. 2015, 07:55
par ecoscientist
Je te remercie. Au fait je crois que c'était une ligne qui faisait apparaitre les recherches homosexuelles...dont j'ai juste supprimé l'affichage. Donc la ligne ne dois servir à rien.
Je vais testé et je te tiens au courant. Merci beaucoup!

Re: problème formulaire de recherche valeur multiple

Posté : 13 janv. 2015, 10:03
par sirakawa
Bjr,
plus lisible
</form>
              <?php
$base1 = $wpdb->prefix."rencontre_users_profil";
$base2 = $wpdb->prefix."rencontre_users";
$base3 = $wpdb->prefix."users";
$zsex1 = strip_tags($_POST['zsex']);
$zsex1 = ($zsex1 == '') ? "%" ; $zsex1;
	if ($_POST['pseudo']) 
	{
	²	$pseudo1 = "%".strip_tags($_POST['pseudo']); //encore que je ne voie as l'intérêt du striptags
		$s="SELECT R.user_id, R.i_zsex, R.i_zage_min, R.i_zage_max, R.i_zrelation, P.t_annonce
         FROM $base1 P, $base2 R, . $base3 U
         WHERE U.user_login LIKE 'pseudo1' and R.i_sex like'$zsex1' and U.ID=R.user_id and 			
		user_id=R.user_id";