!isset

Status
Niet open voor verdere reacties.

chandlurmark

Gebruiker
Lid geworden
12 mrt 2008
Berichten
58
Beste mensen,

Ik heb een script dat resultaten weergeeft nadat je hebt gezocht. Het zoekformulier heeft 3 fields waardoor je gedetailleerd kunt zoeken. Het probleem is alleen dat ik een if constructie heb gebouwd dat als je niks invoert, hij een echo geeft. Nu doet hij dat alleen bij het velnaam NAAM, maar ik wil het ook laten controleren bij een ander veldnaam, maar als je dat doet, wordt het veldnaam NAAM ook gecontroleerd terwijl je dat niet wilt. Het moet dus een soort OR constructie komen ..... Wie kan mij helpen?

PHP:
<?
//connect to mysql
//change user and password to your mySQL name and password
# mysql_connect("localhost","wmo","wmopass"); 
	
//select which database you want to edit
# mysql_select_db("wmotest"); 

$Naam2=$_POST["Naam"];
$Datum_in2=$_POST["Datum_in"];
$Geb_Datum2=$_POST["Geb_Datum"];

//get the mysql and store them in $result
//change whatevertable to the mysql table you're using
//change whatevercolumn to the column in the table you want to search
$result = mysql_query("SELECT * FROM tbl_registratie WHERE Naam LIKE '%$Naam2%' AND Datum_in LIKE '%$Datum_in2%' AND Geb_Datum LIKE '%$Geb_Datum2%'");

if(mysql_num_rows($result) == "0")
{
echo "<p>Niets gevonden in de database</p>";
}

if (!$Naam2)
{
echo "<p>Geef een zoekterm op</p>";
}
else
{
echo "<h1>Resultaat:</h1>";
//grab all the content
while($r=mysql_fetch_array($result))
{	
   //the format is $variable = $r["nameofmysqlcolumn"];
   //modify these to match your mysql table columns
  
   $Naam=$r["Naam"];
   $Datum_in=$r["Datum_in"];
   $Geb_Datum=$r["Geb_Datum"];
   $Id=$r["Id"];
   
   //display the row
   echo "<a href=\"index4.php?naam=$Naam\">$Naam</a><br>";
}
}
?>
 
Het is ten eerste niet handig om eerst een query uit te voeren en daarna pas te gaan controleren op de invoer.

Je zult dus ook de volgorde moeten aanpassen.

Zoiets dus:
PHP:
<?
//connect to mysql
//change user and password to your mySQL name and password
# mysql_connect("localhost","wmo","wmopass"); 
    
//select which database you want to edit
# mysql_select_db("wmotest"); 

// Check if a form has been posted
if($_SERVER['REQUEST_METHOD'] == "POST") {
  $Naam2 = $_POST["Naam"];
  $Datum_in2 = $_POST["Datum_in"];
  $Geb_Datum2 = $_POST["Geb_Datum"];

  // Building the query - Default: All results
  $searchQuery = "SELECT * FROM tbl_registratie";

  // Checking which fields have a value
  $fieldArray = array();
  if(!empty($Naam2)) {
    $fieldArray[] = "Naam LIKE '%". $Naam2 ."%'";
  }
  if(!empty($Datum_in2)) {
    $fieldArray[] = "Datum_in LIKE '%". $Datum_in2 ."%'";
  }
  if(!empty($Datum_in2)) {
    $fieldArray[] = "Datum_in LIKE '%". $Datum_in2 ."%'";
  }

  // Counting the array and expanding the query
  if(count($fieldArray) > 0) {
    $searchQuery .= " WHERE ". $fieldArray[0];
    if(count($fieldArray) > 1) {
      for($i=1; $i < count($fieldArray); $i++) {
        $searchQuery .= " AND ". $fieldArray[$i];
      }
    }
    
  $result = mysql_query($searchQuery);
  if(!$result) {
    echo 'Er is een fout opgetreden! MySQL zegt: '. mysql_error();
  } else {
    if(mysql_num_rows($result) == 0) {
      echo '<p>Geen resultaten gevonden</p>';
    } else {
      echo ' <h1>Resultaat:</h1>';
      while($row = mysql_fetch_assoc($result)) {
        echo '<a href="index4.php?naam='. $row['Naam'] .'">'. $row['Naam'] .'</a><br />';
      }
    }
  }
}
?>

Als je stukken niet begrijpt hoor ik het graag.
 
reactie

Hey, ontzettend bedankt maar helaas werkte het script niet. Ik heb het zelf aangepast. Op deze manier werkt hij wel:
PHP:
if (!$Naam2 && !$Datum_in2 && !$Geb_Datum2)

Zo hoef je tenminste maar 1 veld in te voeren, daar ging het mij ook om :cool:

Maar in ieder geval bedankt!
 
Kun je aangeven wat er niet werkt?

Krijg je foutmeldingen of iets dergelijks?

Zo ja, dan kan ik daar ook wat van leren wanneer ik weet wat er fout is.
 
Sorry, die foutmelding is uitgezet op de server, ik kreeg dus een blanke pagina te zien.:rolleyes:
 
Hmm niet echt handig wanneer je met PHP dat je foutmeldingen uitgeschakeld staan. :rolleyes:

Als je dit boven je script zet krijg je die tenminste wel te zien.
PHP:
ini_set('display_errors', 1);
error_reporting(E_ALL);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan