eenvoudig zoekformulier

Status
Niet open voor verdere reacties.

jeel2008

Gebruiker
Lid geworden
30 okt 2008
Berichten
839
ik zoek me blauw op het internet, maar ziet niet zo snel hoe je eenvoudig je database kunt doorzoeken.
wel hoe je queries samenstelt etc, maar de gegevens kunnen tonen lijkt me ook niet onbelangrijk.

stel ik heb een database "cds".
daarin een tabel: "bands". (met bijvoorbeeld velden als: naam, titel, jaar).
mn gebruikersnaam is "beheerder" en mn wachtwoord "abc123" .

nu wil ik mn database doorzoeken op bijvoorbeeld het woord "young" .
en de resultaten laten weergeven op mn scherm.

hoe ziet het bestand eruit dat me verbindt met de database?
en hoe ziet dat zoekformuliertje eruit? (hoe maak je in de code duidelijk dat je de database "cds" wil doorzoeken? en hoe geef je de resultaten weer?)
en zijn dat twee verschillende bestanden?
allemaal zo eenvoudig mogelijk.

bij voorbaat dank, jeel2008
 
Beste,

Advies geven of een oplossing aanreiken gaat stukken gemakkelijker indien je een voorbeeldbestand publiceert. Maak desnoods een voorbeelddatabase volgens jouw inzichten.

mvg,
berre51
 
Hoi Jeel2008,

Ik heb hieronder alvast de volgende bestanden. De verbinding maken met de database en het weergeven van de gegevens 'young'.

PHP:
<?php
	# Maak eenmalig een bestand met de verbinding naar je database
	# Noem deze bijvoorbeeld config.php
	
	$host = "localhost"; 		# Dit is je adres van je database
	$username = "beheerder";	# Dit is de gebruikersnaam
	$password = "abc123";		# Dit is je wachtwoord
	$dbname = "cds";			# Dit is je naam van de databasae	

	
	### DO NOT EDIT BELOW THIS LINE ###

	# Verbinding maken met de database
	$mysqli = new mysqli($host, $username, $password, $dbname);
	
	# Nakijken of er een verbinding tot stand gebracht kan worden...
	if (!$mysqli) {
		die('Could not connect: ' . mysql_error());
	}
?>

PHP:
<?php
	# Allereerst gaan we de gegevens importeren van het zogenoemde config.php
	include_once('config.php'); # Plaats hier dus jou url

	# Nu wou je graag het woord YOUNG uit de database halen.
	$query = "SELECT * FROM `bands` WHERE `naam` = young OR `titel` = young";
	$result = $mysqli->query($query);

	while($row = $result->fetch_array(MYSQLI_BOTH))
			{
				# Nu gaan we de gegevens weergeven op je pagina
				print "Naam: ".$row['naam']."Titel: ".$row['titel']." Jaar: ".$row['jaar']"";
				
				# Je kunt natuurlijk de 'PRINT' regel in een tabel plaatsen om de resultaten netjes uit te lijnen
			}

Over het zoeken van een naam, titel of jaar door de gebruiker kom ik later op terug. Helaas hiervoor nu geen tijd om uit te leggen.
 
Laatst bewerkt:
zoeken en weergeven

hallo wesley, ok , heel hartelijk dank. ik ga het uitproberen. maar ik wilde niet zozeer 'young' eruit halen, maar gewoon zoeken op namen. enkele cds/lps die ik heb zijn van neil young. dus wil ik een zoekformulier maken en als ik dan 'young' intyp moeten alle resultaten voor de naam young op mn scherm verschijnen, zodat ik gelijk weet hoeveel en wat ik heb. zo'n zoek formulier lukt nog wel. :)
zie onder.
de vraag is nu: wat komt er in aa1.php? als ik dit doe, zie helemaal onder, dan komen AL mijn cds in beeld!

ik heb nu geen tijd, kom er nog op terug. vraag is alleen: waarom komen AL mn cds in beeld en niet wat ik zoek?

Code:
<!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=utf-8" />
<title>Naamloos document</title>
</head>

<body>
 <form id="form1" method="post" action="aa1.php">
      <p>zoek op deel achternaam</p>
      <p>
        <input type="text" name="query" />
        <input type="submit" name="Zoek" id="Zoek" value="Zoeken" />
      </p>
    </form>
</body>
</html>

Code:
<?php

 
 // connect to our Database 
 mysql_connect("localhost", "mijncds", "ww") or die(mysql_error());
 
 // open db
 mysql_select_db("cds") or die(mysql_error());
 
  
 //Now we search for our search term, in the field the user specified 
 $data = mysql_query("SELECT * FROM band2 WHERE naam LIKE '%$query'"); 

 
 //And we display the results 
 while($result = mysql_fetch_array( $data ))
 { 
 echo $result['naam']; 
 echo " "; 
 
 } 

 ?>
 
Laatst bewerkt:
Probeer eens onderstaande code.

PHP:
<?php    
    $host = "localhost";        # Dit is je adres van je database
    $username = "beheerder";    # Dit is de gebruikersnaam
    $password = "abc123";       # Dit is je wachtwoord
    $dbname = "cds";            # Dit is je naam van de databasae   
 
    
 
    # Verbinding maken met de database
    $mysqli = new mysqli($host, $username, $password, $dbname);
    
    # Nakijken of er een verbinding tot stand gebracht kan worden...
    if (!$mysqli) 
	{
        die('Could not connect: ' . mysql_error());
    }

	// Voordat je in de database gaat kijken naar een resultaat moet je uit je formulier de gegevens halen.
	// Probeer eens het volgende;
	
	$formulier_query = $_POST['query'];
 
	$query = "SELECT * FROM band2 WHERE naam LIKE '%$formulier_query%'";
    $result = $mysqli->query($query);
 
    while($row = $result->fetch_array(MYSQLI_BOTH))
    {
		echo $result['naam']; 
	}
 ?>

Je was vergeten om de gegevens uit je formulier te halen ;)
 
zoeken en weergeven

ik heb het geprobeerd, volgens je voorbeeld.
maar krijg een of andere rare melding waar ik als niet-phper niet zo veel van snap:
(toch heb ik een veldnaam in de database cds die 'naam' heet).

Fatal error: Cannot use object of type mysqli_result as array in /home/vhosts/jeelsites.nl/httpdocs/cc1.php on line 33

mn bestanden waren deze (grotendeels hetzelfde als vorige keer)]
(heb line 33, dus waar het fout gaat volgens de parser, bold gemaakt, zie onderste codefragment)


zoekbestand:
Code:
<!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=utf-8" />
<title>Naamloos document</title>
</head>

<body>
 <form id="form1" method="post" action="cc1.php">
      <p>zoek op deel achternaam</p>
      <p>
        <input type="text" name="query" />
        <input type="submit" name="Zoek" id="Zoek" value="Zoeken" />
      </p>
    </form>
</body>
</html>

resultatenbestand
Code:
<?php
    # Maak eenmalig een bestand met de verbinding naar je database
    # Noem deze bijvoorbeeld config.php
    
    $host = "localhost";        # Dit is je adres van je database
    $username = "xx";    # Dit is de gebruikersnaam
    $password = "xxx";       # Dit is je wachtwoord
    $dbname = "cds";            # Dit is je naam van de databasae   
 
     
    ### DO NOT EDIT BELOW THIS LINE ###
 
    # Verbinding maken met de database
    $mysqli = new mysqli($host, $username, $password, $dbname);
    
    # Nakijken of er een verbinding tot stand gebracht kan worden...
    if (!$mysqli) {
        die('Could not connect: ' . mysql_error());
    }
	
	
	
	// Voordat je in de database gaat kijken naar een resultaat moet je uit je formulier de gegevens halen.
    // Probeer eens het volgende;
    
    $formulier_query = $_POST['query'];
 
    $query = "SELECT * FROM band2 WHERE naam LIKE '%$formulier_query%'";
    $result = $mysqli->query($query);
 
    while($row = $result->fetch_array(MYSQLI_BOTH))
    {
        [B]echo $result['naam'];[/B] 
    }
?>
 
naam.jpg

http://jeelsites.nl/cc0.html
bljif deze melding krijgen:

Fatal error: Cannot use object of type mysqli_result as array in /home/vhosts/jeelsites.nl/httpdocs/dd1.php on line 28

iemand een idee wat ik daarmee aan moet?

ps: als je naar http://jeelsites.nl/aa0.html gaat
en je geeft een zoekopdracht geeft ie alles weer.
bijna goed dus...:confused:

ik bedoel: het werkt, alleen selecteert ie alles , de gehele database.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan