2e zoeker in programma

Status
Niet open voor verdere reacties.

rmv66

Gebruiker
Lid geworden
5 nov 2009
Berichten
14
Beste mensen ,

Dit is de eerste keer dat ik een verzoek doe op jullie know-how.

Ik ben geheel nieuw bezig met php en sql.
Ben nu al geruime tijd aan het zoeken voor een tweede zoeker.
Er wordt nu gezocht op 1 kolom ( capcode ) maar ik wil graag dat er
een keuze gemaakt kan worden tussen 4 kolommen.

Wie o wie kan mij aub helpen.

{
$key = $_POST2['artikel'];
}


// Toon als $_POST['capcode_zoek'] verstuurd is
if(isset($_POST['capcode_zoek']))
{
// Stel variable in voor onze post zoekwoord.
$zoekwoord = $_POST['zoekwoord'];

// Je zoekwoord is korter dan 3 karakters en dan krijg je teveel resultaten
if(strlen($zoekwoord) <= 2){
echo "Je zoekterm is te kort.";
}
else
{
// Zoek op zoekwoord en vraag aantal op om te gebruiken :)
$sql = mysql_query("SELECT * FROM capcode_inv WHERE artikel LIKE '%$zoekwoord%' ORDER BY artikel ASC")or die(mysql_error());
$aantal = mysql_num_rows($sql);

// Als er geen zijn toon niets.
if($aantal == "0")
{
echo "<b>Resultaten:</b><br />";
echo "Er is niets gevonden in de database...";
}
else
{
// Als er wel zijn toon mooi tabelletje + wat informatie.
echo "U hebt gezocht op '".$zoekwoord."'.<br /><br />";
echo "<b>Resultaten:</b><br />";
// Stel het toon tabelletje op
echo "<table cellpadding='2' cellspacing='1' border='2' width='700'>";
echo "<tr>";
echo "<td width='20%'><b>Capcode</b></td>";
echo "</tr>";

// Zet een while loop en haal informatie op
while($result = mysql_fetch_assoc($sql))
{
// Defineer opgehaalde items
$artikel = $result['artikel'];
$omschrijving = $result['omschrijving'];
$locatie = $result['locatie'];
$tekst = $result['tekst'];
// Toon lijstje
echo "<tr>";
echo "<td width=\"50\">".$artikel."</td>";
echo "<td width=\"200\">".$locatie."</td>";
echo "<td width=\"250\">".$tekst."</td>";
echo "<td width=\"200\">".$omschrijving."</td>";
echo "</tr>";
}

// Beeindig tabel
echo "</table>";
echo "Aantal records : .$aantal.<br>";
echo "Bovenstaande is gevonden.<br><a href='./capcode_zoek.php'>Nieuwe zoekopdracht...</a>";
}
}
}
else
{
// Zoek capcode_inv
echo "<form method='post' action='capcode_zoek.php'>";
echo "<b>Door bestand capcode 's zoeken</b><br />";
echo "Capcode : <input type='text' name='zoekwoord'>";
echo "<input type='submit' name='capcode_zoek' value='Zoek Nu!'><br />";
echo "</form>";


}
?>

Dit is wat er nu draait

met vriendelijke groet Richard - Apeldoorn
 
Nu zoek je op artikel hé? Je kan de query gewoon uitbreiden als volgt:
PHP:
$zoekwoord = $_POST['zoekwoord']; 
$zoekwoord2 = $_POST['zoekwoord2']; 
$zoekwoord3 = $_POST['zoekwoord3']; 
$zoekwoord4 = $_POST['zoekwoord4']; 

$sql = mysql_query("SELECT * FROM capcode_inv 
WHERE artikel LIKE '%$zoekwoord%' 
AND artikel2 LIKE '%$zoekwoord2%
AND artikel3 LIKE '%$zoekwoord3%
AND artikel4 LIKE '%$zoekwoord4%'
ORDER BY artikel ASC")or die(mysql_error());

aand hand van if tags kan je nu checken of er wel degelijk iets is ingevuld bij zoekwoord, zoekwoord2, zoekwoord3...

bv. als zoekwoord en zoekwoord2 is zou hij volgende code query moete gebruiken

PHP:
$sql = mysql_query("SELECT * FROM capcode_inv 
WHERE artikel LIKE '%$zoekwoord%' 
AND artikel2 LIKE '%$zoekwoord2%'
ORDER BY artikel ASC")or die(mysql_error());

Dat kan je dan ook weer nakijken met een if structuur!

Succes ;-). Het is een hele karwij om alle if'kes juist te hebben staan! :-)..

BTW!! Ik heb al opgemerkt, als je GEEN NULL resultaten op uw zoekwaarde hebt dan hoef je niet te controleren of er wel iets is ingevuld.. Dan kan je gewoon de bovenste query gebruiken!
 
Beste dieterke ,

Als ik het volgende heb , geeft hij aan -- je zoekterm is te kort --

// Stel variable in voor onze post zoekwoord.
$zoekwoord = $_POST['zoekwoord'];
$zoekwoord = $_POST['zoekwoord2'];
$zoekwoord = $_POST['zoekwoord3'];
$zoekwoord = $_POST['zoekwoord4'];

// Je zoekwoord is korter dan 3 karakters en dan krijg je teveel resultaten
if(strlen($zoekwoord) <= 2){
echo "Je zoekterm is te kort.";
}
else
{
// Zoek op zoekwoord en vraag aantal op om te gebruiken :)
$sql = mysql_query("SELECT * FROM capcode_inv WHERE artikel LIKE '%$zoekwoord%' AND locatie LIKE '%$zoekwoord2%' AND tekst LIKE '%$zoekwoord3%' AND omschrijving LIKE '%$zoekwoord4%' ORDER BY artikel ASC")or die(mysql_error());
$aantal = mysql_num_rows($sql);


Denk ik . doe de zoekterm weg van min 3 tekens :

// Je zoekwoord is korter dan 3 karakters en dan krijg je teveel resultaten
//if(strlen($zoekwoord) <= 2){
// echo "Je zoekterm is te kort.";

Nu zoekt hij helemaal niets en krijg ik foutmelding op het scherm

Wat doe ik verkeerd hierin , volgens mij had ik het zo gedaan zoals jij het vertelde.

Richard
 
Beste mensen ,

Als ik het volgende doe , en dat is eigenlijk de bedoeling , 1 zoekwoord en dan zoeken in 4 of meerdere kolommen zoeken , dan komt er te staan er is niets gevonden in de database.

En ik heb nu verschillende varianten gebruikt maar geen resultaat.


// Toon als $_POST['capcode_zoek'] verstuurd is
if(isset($_POST['capcode_zoek']))
{
// Stel variable in voor onze post zoekwoord.
$zoekwoord = $_POST['zoekwoord'];


// Je zoekwoord is korter dan 3 karakters en dan krijg je teveel resultaten
if(strlen($zoekwoord) <= 2){
echo "Je zoekterm is te kort.";
}
else
{
// Zoek op zoekwoord en vraag aantal op om te gebruiken :)
$sql = mysql_query("SELECT * FROM capcode_inv WHERE artikel LIKE '%$zoekwoord%' AND locatie LIKE '%$zoekwoord%' AND tekst LIKE '%$zoekwoord%' AND omschrijving LIKE '%$zoekwoord%' ORDER BY artikel ASC")or die(mysql_error());
$aantal = mysql_num_rows($sql);

// Als er geen zijn toon niets.
if($aantal == "0")
{
echo "<b>Resultaten:</b><br />";
echo "Er is niets gevonden in de database...";
 
ik heb nu gevonden AND veranderen in OR en nu zoekt hij wel in alle kolommen die ik aangeef.
 
als je meerdere zoekwoorden wilt hebruiken in je query.
De gebruiker zal de zoekwoorden altijd scheidden met een spacie of een komma.
Als je dus de $_POST['zoekwoord']
explode op een spatcie en komma, dan krijg je de zoek woorden in een array te staan.

Vervolgens gebruik je de array om de zoek opdracht in je query te maken.
PHP:
// set variable and clean string
	$search_key = trim(strip_tags($_GET['search_key']));
	
         	// set deviders to a space
		$seperator = array('.', ',', '/', '-','#', '%', '&');
		$search_key = str_replace($seperator, ' ',$search_key);
		// make array from search keywords
		$search_array = explode(' ', $search_key);
		$first = false;
		foreach( $search_array as $key) {
			if(!$first)  {
				$sub_cat = " description LIKE '%".$key."%'";
				$post	 = " post LIKE '%".$key."%'";
				$first = true;
			} else {
				$sub_cat .= " OR description LIKE '%".$key."%'";
				$post	 .= " OR post LIKE '%".$key."%'";
			}
		}
Misschien dat je hier wat aan hebt!
 
Beste Phobia ,

Hartelijk bedankt dat je wilt meedenken / helpen.

Alleen snap ik nog niet waar ik dit moet inplakken / overschrijven , en
moet ik dan nog wat toevoegen ( tekstvak ) om een woord in te typen.

Ik zie ook vaak op andere forums kleine stukjes code maar daar ben ik
nog helemaal nieuw in.

mvg , richard
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan