beste phpvrienden,

Ik heb een telefoonzoekfunctie scriptje dat goed werkt.
Ik heb alleen een probleempje, of eigenlijk 2

1= dat wanneer ik niks invoer ik geen resultaat krijg terwijl ik juist wil dat wanneer ik niks invoer ik alles krijg dus dat ie dan gewoon de volledige inhoud van de database laat zien.

2= wanneer ik de letter E invoer bij voornaam gaat hij kijken in welke voornamen de letter E voorkomt en die laat hij zien. maar ik wil juist dat als mijn 1ste letter die ik invoer de E is dat hij dan ook alleen de resultaten laat zien waar de 1ste letter de E van is.
dus bij invoer E: Erik WEL en Bert NIET

Wie kan mij helpen

Dit is mijn goed werkende script:
 
<?php
error_reporting(E_ALL);

//database verbinding functie
function DB_connect()
{
	if (!isset($DB_CONNECT))
	{
      $db = mysql_connect('xxx','xxx','xxx') or die ('Unable to connect to server.');
      mysql_select_db("xxx",$db) or die ('Unable to select database.');
      $DB_CONNECT=1;
    }
}
//verbinding maken
DB_connect();

if(isset($_POST['gebied'])){
	$gebied = mysql_real_escape_string($_POST['gebied']);
}else{
	$gebied = mysql_real_escape_string('voornaam');
}
if(isset($_POST['zoekopdr'])){
	$zoekopdr = mysql_real_escape_string($_POST['zoekopdr']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Telefoonnummers zoeken binnen Vespro</title>

<style>
.rij0 {
	background-color: #FFFFFF;
	}

.rij1 {
	background-color: #F5F5F5;
	}

body {
	background-image: url(back3.jpg);
	background-repeat: repeat-x;
	background-color: #0061AD;
}
</style>
</head>

<body>

<table width="218" align="center" cellspacing="0" bordercolor="#b5bece" bgcolor="#b5bece" class="table_kolom_oranje" id="table_kolom">
  <tr>
    <td id="td_kolom"><img src="logo.png" width="216" height="99" /></td>
  </tr>
  <tr>
    <td bgcolor="#b5bece">
	<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
	<p>Zoeken op:<br>
    <input name="gebied" type="radio" checked="checked" value="voornaam" id="gebied" />
    Voornaam<br>
    <input name="gebied" type="radio" value="achternaam" id="gebied" />
    Achternaam<br>
    <input name="gebied" type="radio" value="afdeling" id="gebied" />    
    Afdeling</p>
      <p>&nbsp;</p>
      <p>Geef uw zoekcriteria in       : <br>
        <input name='zoekopdr' type='text' size="30" /> 
        <br>
        <br>
        <input type="submit" value="Zoeken" />
      </p></form></td>    
  </tr>
  <tr>
    <td></td>
  </tr>
</table>

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
//print_r($_POST);
	if($zoekopdr != ""){
	$sql_z = "	SELECT
					id,
					voornaam,
					achternaam,
					afdeling,
					telwerk,
					telmob,
					email
				FROM
					contacten
				WHERE
					".$gebied." LIKE '%" . $zoekopdr."%'
				";
	$res_z = mysql_query($sql_z) or die (mysql_error());
	
		if(mysql_num_rows($res_z) >= 1){
		?>
		<p>&nbsp;</p>
		<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
		  <tr bgcolor="#999999">
			<td><strong>Naam</strong></td>
			<td><strong>Afdeling</strong></td>
			<td><strong>Contact gegevens </strong></td>
		  </tr>
		  <?php
		  $color = 1;
		  //nu alle resultaten ophalen
		  while ($row_z = mysql_fetch_array($res_z)){
		  $color ^= 1;
		  ?>
		  <tr class="rij<?php echo $color;?>">
			<td><?php echo $row_z['voornaam'];?> <?php echo $row_z['achternaam'];?></td>
			<td><?php echo $row_z['afdeling'];?></td>
			<td><?php echo $row_z['telwerk'];?><br /><?php echo $row_z['telmob'];?><br /><a href="mailto:<?php echo $row_z['email'];?>"><?php echo $row_z['email'];?></a></td>
		  </tr>
		  <?php
		  }
		  ?>
		</table>
		<?php
		}else{
		echo '<div align="center"><strong>Er zijn geen zoekresultaten gevonden</strong></div>';
		}
	}else{
	echo '<div align="center"><strong>Je moet een zoekopdracht invullen</strong></div>';
	}
}
?>
</body>
</html>
Dat is natuurlijk gewoon een kwestie van een query zonder where clause gebruiken als er geen zoekopdracht is opgegeven:

<?php
error_reporting(E_ALL);

//database verbinding functie
function DB_connect()
{
    if (!isset($DB_CONNECT))
    {
      $db = mysql_connect('xxx','xxx','xxx') or die ('Unable to connect to server.');
      mysql_select_db("xxx",$db) or die ('Unable to select database.');
      $DB_CONNECT=1;
    }
}
//verbinding maken
DB_connect();

if(isset($_POST['gebied'])){
    $gebied = mysql_real_escape_string($_POST['gebied']);
}else{
    $gebied = mysql_real_escape_string('voornaam');
}
if(isset($_POST['zoekopdr'])){
    $zoekopdr = mysql_real_escape_string($_POST['zoekopdr']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Telefoonnummers zoeken binnen Vespro</title>

<style>
.rij0 {
    background-color: #FFFFFF;
    }

.rij1 {
    background-color: #F5F5F5;
    }

body {
    background-image: url(back3.jpg);
    background-repeat: repeat-x;
    background-color: #0061AD;
}
</style>
</head>

<body>

<table width="218" align="center" cellspacing="0" bordercolor="#b5bece" bgcolor="#b5bece" class="table_kolom_oranje" id="table_kolom">
  <tr>
    <td id="td_kolom"><img src="logo.png" width="216" height="99" /></td>
  </tr>
  <tr>
    <td bgcolor="#b5bece">
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    <p>Zoeken op:<br>
    <input name="gebied" type="radio" checked="checked" value="voornaam" id="gebied" />
    Voornaam<br>
    <input name="gebied" type="radio" value="achternaam" id="gebied" />
    Achternaam<br>
    <input name="gebied" type="radio" value="afdeling" id="gebied" />    
    Afdeling</p>
      <p>&nbsp;</p>
      <p>Geef uw zoekcriteria in       : <br>
        <input name='zoekopdr' type='text' size="30" /> 
        <br>
        <br>
        <input type="submit" value="Zoeken" />
      </p></form></td>    
  </tr>
  <tr>
    <td></td>
  </tr>
</table>

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
//print_r($_POST);
    if($zoekopdr != ""){
    	$sql_z = "SELECT
                    id,
                    voornaam,
                    achternaam,
                    afdeling,
                    telwerk,
                    telmob,
                    email
                FROM
                    contacten
                WHERE
                    ".$gebied." LIKE '" . $zoekopdr."%'
                ";
	}else{
		$sql_z = "SELECT
                    id,
                    voornaam,
                    achternaam,
                    afdeling,
                    telwerk,
                    telmob,
                    email
                FROM
                    contacten
				";
	}
    $res_z = mysql_query($sql_z) or die (mysql_error());
    
    if(mysql_num_rows($res_z) >= 1){
        ?>
        <p>&nbsp;</p>
        <table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
          <tr bgcolor="#999999">
            <td><strong>Naam</strong></td>
            <td><strong>Afdeling</strong></td>
            <td><strong>Contact gegevens </strong></td>
          </tr>
          <?php
          $color = 1;
          //nu alle resultaten ophalen
          while ($row_z = mysql_fetch_array($res_z)){
          $color ^= 1;
          ?>
          <tr class="rij<?php echo $color;?>">
            <td><?php echo $row_z['voornaam'];?> <?php echo $row_z['achternaam'];?></td>
            <td><?php echo $row_z['afdeling'];?></td>
            <td><?php echo $row_z['telwerk'];?><br /><?php echo $row_z['telmob'];?><br /><a href="mailto:<?php echo $row_z['email'];?>"><?php echo $row_z['email'];?></a></td>
          </tr>
          <?php
          }
          ?>
        </table>
        <?php
    }else{
        echo '<div align="center"><strong>Er zijn geen zoekresultaten gevonden</strong></div>';
    }
}
?>
</body>
</html>
Haha thanks man,

het werkt. hoe zet ik nu de resultaten op alfabet?

dus ik voer iets in of niks kan nu ook en dan moeten mijn resultaten op alfabet gesorteerd worden...
Tja, dan zul je je query weer iets moeten aanpassen. Je zegt sorteren op alfabet, maar moet dan gesorteerd worden op voornaam of achternaam of beide?

Een versimpeld voorbeeldje waar eerst gesorteerd wordt op achternaam en daarna op voornaam:

SELECT
    voornaam,
    achternaam
FROM
    contacten
ORDER BY
    achternaam ASC,
    voornaam ASC
er moet gesorteerd worden op voornaam...

als ik bij mijn query order by invoer krijg in een ongeldige sql syntax...

weet niet wat ik fout doe...
Laat de query eens zien zoals jij hem aangepast hebt...

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
//print_r($_POST);
    if($zoekopdr != ""){
        $sql_z = "SELECT
                    id,
                    voornaam,
                    achternaam,
                    afdeling,
                    telwerk,
                    telmob,
                    email
                FROM
                    contacten
				ORDER BY
					voornaam ASC
                WHERE
                    ".$gebied." LIKE '" . $zoekopdr."%'
                ";
    }else{
        $sql_z = "SELECT
                    id,
                    voornaam,
                    achternaam,
                    afdeling,
                    telwerk,
                    telmob,
                    email
                FROM
                    contacten
				ORDER BY
					voornaam ASC	
                ";
    }
    $res_z = mysql_query($sql_z) or die (mysql_error());
    
    if(mysql_num_rows($res_z) >= 1){
        ?>
ooh hij doet het al man...

is wel goed zo,

laters... thnx
ORDER BY hoort na de WHERE clause in je query ;)

Reageren