8795 sujets

Développement web côté serveur, CMS

Bonjour

Pour un site immobilier, il faut que je fasse une recherche par numéro de mandat.

J'ai donc :
<form action="">
	<input type="text" placeholder="Numéro de mandat" />
	<input type="submit" value="Afficher le bien" />
</form>


Le formulaire doit renvoyer vers la page du bien (soit il y en a un (et un seul) soit il n'y en a pas).

Je précise que je suis sous Wordpress et le champ "N° mandat" est un custom field.

Le champ est dans la table wp_postmeta.
Structure de cette table : meta_id, post_id, meta_key & meta_value.

Le meta_value correspond au N° inscrit dans l'input "N° mandat" et le meta_key que l'on veut est _listing_mandat.


Ce que je ne voit pas c'est comment faire le lien entre le formulaire et la requête pour renvoyer vers le bien. Smiley ohwell

Merci d'avance
Merci pour ta réponse jb_gfx mais je ne voit pas déjà comment associé le formulaire à une requête alors à une redirection..

J'ai un peu de mal en PHP..
En gros :

Ta page search.php :


if ( !empty($_POST['reference']) ) {
  // cherche le bien dans la bdd.  
  $bien = mysqli....

  // si un bien est trouvé
  if ($bien) {
    header('Location: page_bien.php?id=' . $bien['id'];
    exit();
  } else {
    // sinon on affiche un message d'erreur
    $not_found = 'Aucun bien ne correspond à la référence ' . $_POST['reference'];
  } 
?>

<form action="search.php">
  <input type="text" name="reference" placeholder="Numéro de mandat" />
  <input type="submit" value="Afficher le bien" />
</form>

<?php if ( !empty($not_found) ) : ?>
  <p>
    <?php echo $not_found; ?>
  </p>
<?php endif; ?>


C'est à l'arrache mais c'est juste pour te montrer le principe.
Modifié par jb_gfx (26 Feb 2014 - 15:55)
Merci pour ta réponse.

J'ai fait :
<?php if(!empty($_POST['reference'])){
	// cherche le bien dans la bdd.  
	global $wpdb;
	$sql = $wpdb->prepare('
		SELECT post_id
		FROM wp_postmeta
		WHERE meta_key = "_listing_mandat"
		AND meta_value = '.$_POST['reference']);
	$biens = $wpdb->get_results($sql);
	
	// si un bien est trouvé
	if($biens){
		foreach($biens as $bien){
			$dest = '?post_type=listing&p='.$bien->post_id;
			echo '<script language="JavaScript">window.location=\''.$dest.'\'</script>';
		}
	}else{
		// sinon on affiche un message d'erreur
		$not_found = 'Aucun bien ne correspond à la référence '.$_POST['reference'];
	}
}
?>
<form action="" method="post">
	<input type="text" name="reference" id="reference" placeholder="Numéro de mandat" style="color:#000" />
	<input type="submit" value="Afficher le bien" style="float:right; width:38%" />
</form>
<?php
if(!empty($not_found)): echo '<p style="color:#000">'.$not_found.'</p>'; endif;


Par contre je ne peut pas uiliser header, il me met :
Warning: Cannot modify header information - headers already sent by (output started at URL/lib/structure/header.php:39) in URL/home.php on line 42...

Donc j'ai trouvé une solution en JS. Moins terrible mais ça fonctionne.

Merci pour ton aide !
Salut, l'erreur concernant la fonction header veut juste dire que tu as déjà renvoyé du contenu et que tu ne peux donc plus modifier les headers.
@Melusine85 mon exemple était juste un exemple (je t'ai dit que était à l'arrache). Ton code est à vomir et bourré de failles. J'ai du mal à croire que tu bosses en agence et que tu pondes une horreur pareille.

Et je te conseille aussi de tenir compte de la remarque de floreo.
Modifié par jb_gfx (26 Feb 2014 - 23:47)
jb_gfx a écrit :
@Melusine85 mon exemple était juste un exemple (je t'ai dit que était à l'arrache). Ton code est à vomir et bourré de failles. J'ai du mal à croire que tu bosses en agence et que tu pondes une horreur pareille.


Euu comment dire, si je poste sur un forum c'est que j'ai besoin d'aide, pas pour me faire insultée... Je ne suis pas dev, je l'ai dit, j'ai juste les bases en PHP.

De plus j'ai repris le code d'une autre agence. Le site à été créé sous WP et je boss sur un thème enfant. La page où je dois insérer ce formulaire (la home en l’occurrence) comporte déjà des header et donc je ne peut pas en remettre un.

Si tu trouve que mon code est pourri, aide moi et met moi sur la bonne voie. Sinon vu que ce code marche, je reste avec ça tant que je n'ai pas d'autre solutions !