Zoeken in database

Status
Niet open voor verdere reacties.

mpieters

Nieuwe gebruiker
Lid geworden
8 nov 2012
Berichten
3
Hallo,

Ik heb een simpel formulier met 2 inputs gemaakt om in mijn database te zoeken.
Alles werkt prima, behalve wanneer ik 1 van de twee of allebei de inputs niet invul, dan laat hij alleen de gegevens uit de database zien met een niet ingevulde waarde.
Ik zou graag willen dat wanneer ik een input niet invul hij alle gegevens van de database laat zien.

Hoe moet ik dat doen?
Alvast bedankt!
 
Welke database? En hoe ziet je query er uit?
 
Dit is het formulier:
HTML:
<form action="show.php" method="get">
Soort:	<input type="text" name="soort"> <br>		
Jaar: 	<input type="text" name="jaar"> <br>
<input type="submit" />
</form>

En de code die zoekt in de database is:
PHP:
<?php
$con = mysql_connect("","","");
mysql_select_db('test'); 
$soort = $_GET["soort"];
$jaar  = $_GET["jaar"];

$query = sprintf("SELECT Soort, Formaat, Persing, Staat, KleurVinyl, Label, Aantal, Bijzonderheden, Jaar, Titel, Code FROM cramps
    WHERE Soort='%s' AND Jaar='%s'",
    mysql_real_escape_string($soort),
    mysql_real_escape_string($jaar));

// Perform Query
$result = mysql_query($query);

if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

while ($row = mysql_fetch_assoc($result)) {
echo "<b>Titel:</b> "   			,$row['Titel'];
echo "<br/><b>Soort:</b> "  		,$row['Soort'];
echo "<br/><b>Formaat:</b> "		,$row['Formaat'];
echo "<br/><b>Jaar:</b> "   		,$row['Jaar'];
echo "<br/><b>Persing:</b> " 		,$row['Persing'];
echo "<br/><b>Staat:</b> "			,$row['Staat'];
echo "<br/><b>Kleur Vinyl:</b> "	,$row['Kleur Vinyl'];
echo "<br/><b>Code:</b> "   		,$row['Code'];
echo "<br/><b>Label:</b> "   		,$row['Label'];
echo "<br/><b>Aantal:</b> "  		,$row['Aantal'];
echo "<br/><b>Bijzonderheden:</b> ",$row['Bijzonderheden']; 
echo "<br/><br/>" ; 
}

mysql_free_result($result);
?>

Ik gebruik phpmyadmin.
 
Deze regel
PHP:
$query = sprintf("SELECT Soort, Formaat, Persing, Staat, KleurVinyl, Label, Aantal, Bijzonderheden, Jaar, Titel, Code FROM cramps
    WHERE Soort='%s' AND Jaar='%s'",
    mysql_real_escape_string($soort),
    mysql_real_escape_string($jaar));
wijzigen in:
PHP:
$query = array('SELECT Soort, Formaat, Persing, Staat, KleurVinyl, Label, Aantal, Bijzonderheden, Jaar, Titel, Code FROM cramps');
if($soort != "")
{
    $query[] = sprintf(count($query) > 1 ? "WHERE Soort = '%s'" : "AND Soort = '%s'", mysql_real_escape_string($soort));
}
if($jaar != "")
{
    $query[] = sprintf(count($query) > 1 ? "WHERE Jaar = '%s'" : "AND Jaar = '%s'", mysql_real_escape_string($jaar));
}
$query = implode(' ', $query);

Niet getest
 
Bedankt! wanneer ik nu niks invul laat hij inderdaad alle gegevens zien :)
Alleen als ik bij jaar bijvoorbeeld 1980 invul wil ik graag dat hij alles laat zien uit 1980.
Hij geeft echter nu deze foutmelding wanneer ik dat invul:
Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND Jaar = '1980'' at line 1 Whole query: SELECT Soort, Formaat, Persing, Staat, KleurVinyl, Label, Aantal, Bijzonderheden, Jaar, Titel, Code FROM cramps AND Jaar = '1980'

Hoe kan ik dat oplossen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan