2012-12-01 7 views
0

J'essaie de créer un script de recherche simple avec php et mysql. J'ai balise html select qui estPhp Mysql Rechercher Numéro

  1. personnes
  2. pays
  3. région
  4. destination
  5. de
  6. à

Avec ce que je reçois le contenu de de MySQL base de données. Donc, voici mon script php.

if(isset($_GET['Submit']) && $_GET['Submit'] == "Search") 
{ 
$people = mysql_real_escape_string(htmlspecialchars(trim($_GET['people']))); 
$country = mysql_real_escape_string(htmlspecialchars(trim($_GET['country']))); 
$region = mysql_real_escape_string(htmlspecialchars(trim($_GET['region-depart']))); 
$destination = mysql_real_escape_string(htmlspecialchars(trim($_GET['destination']))); 
$from = mysql_real_escape_string(htmlspecialchars(trim($_GET['from']))); 
$to = mysql_real_escape_string(htmlspecialchars(trim($_GET['to']))); 

if(isset($people)) 
{ 

$search = mysql_query("SELECT * FROM property_step1 WHERE pro_no_sleep LIKE 
'%$people%'"); 
$num = mysql_num_rows($search); 

while($result = mysql_fetch_array($search)) 
    { 
     $propertyid = (int) $result['propertyid'];   
     echo $country_d = $result['pro_country']; 
     echo $region_d = $result['pro_state']; 
     echo $destination_d = $result['pro_city']; 

    } 
} 

elseif(isset($country)) 
{ 
$search2 = mysql_query("SELECT * FROM property_step1 WHERE pro_country LIKE 
'%$country%'"); 
$num = mysql_num_rows($search2);   

while($result2 = mysql_fetch_array($search2)) 
    { 
     $propertyid = (int) $result2['propertyid'];   
     echo $country_d = $result2['pro_country']; 
     echo $region_d = $result2['pro_state']; 
     echo $destination_d = $result2['pro_city']; 

    } 
} 
else 
{ 
    echo "nope"; 
}  
} 

Eh bien, si je choisis personnes (dont la valeur est 1, 2, 3, etc.), il est afficher le contenu de base de données mais lorsque je sélectionne pays il est ne montre rien. Y at-il quelque chose de mal dans ma requête ?

+0

Par hasard pouvez-vous partager vos tables de MySQL avec nous? – bonCodigo

Répondre

0

Votre elseif condition pour le pays crée problème le remplacer par si seule, l'écriture if...elseif seule condition va s'exécuter.

utiliser ce code

if (isset($_GET['Submit']) && $_GET['Submit'] == "Search") { 
    $people = mysql_real_escape_string(htmlspecialchars(trim($_GET['people']))); 
    $country = mysql_real_escape_string(htmlspecialchars(trim($_GET['country']))); 
    $region = mysql_real_escape_string(htmlspecialchars(trim($_GET['region-depart']))); 
    $destination = mysql_real_escape_string(htmlspecialchars(trim($_GET['destination']))); 
    $from = mysql_real_escape_string(htmlspecialchars(trim($_GET['from']))); 
    $to = mysql_real_escape_string(htmlspecialchars(trim($_GET['to']))); 

    if (isset($people)) { 
     $search = mysql_query("SELECT * FROM property_step1 WHERE pro_no_sleep LIKE 
'%$people%'"); 
     $num = mysql_num_rows($search); 

     while ($result = mysql_fetch_array($search)) { 
      $propertyid = (int) $result['propertyid']; 
      echo $country_d = $result['pro_country']; 
      echo $region_d = $result['pro_state']; 
      echo $destination_d = $result['pro_city']; 
     } 
    } 
    if (isset($country)) { 
     $search2 = mysql_query("SELECT * FROM property_step1 WHERE pro_country LIKE 
'%$country%'"); 
     $num = mysql_num_rows($search2); 

     while ($result2 = mysql_fetch_array($search2)) { 
      $propertyid = (int) $result2['propertyid']; 
      echo $country_d = $result2['pro_country']; 
      echo $region_d = $result2['pro_state']; 
      echo $destination_d = $result2['pro_city']; 
     } 
    } else { 
     echo "nope"; 
    } 
} 
+1

merci @Pankaj Khairnar. Cela fonctionne pour moi. – Babu

1

isset($people) toujours une valeur true; vous devez vérifier si ce n'est pas empty ainsi:

if (isset($people) && !empty($people)) { 
    // ... 
} 
0

Vous définissez chaque variable si toutes les variables seront toujours « réglables ».

if(isset($people)) sera toujours exécuté, car il est défini ce qui signifie que isset($country) ne sera jamais exécuté.

Cela doit être changé pour:

if(!empty($people)){ 

} 
if(!empty($country)){ 

} 
+0

J'essaie avec cela .. – Babu

+0

il devrait atteindre ce que vous cherchez –

+0

Je le change. c'est montrer la première requête mais elle ne montre pas la deuxième requête .. C'est montrer la page vide – Babu