Ik ben een productendatabase aan het maken met zoekfunctie.
De zoekfunctie bestaat uit een dropdownmenu waar een merk gekozen moet worden en een zoekveldje.

De database bestaat uit 1 tabel met de naam producten. Er is een kolom die heet merk en hier staan dus de merken van de producten in.

Het dropdownmenu moet gevuld worden met de merken uit de kolom merk.
Maar daar staan de merken tientallen keren in, hoe kan ik er voor zorgen dat elk merk maar één keer geprint word?

Ik hoop dat ik de oplossing snel krijg omdat het deze dagen af moet zijn.

Alvast bedankt! En ik zou het fijn vinden als je het met een voorbeeldscriptje duidelijk wilt maken hoe ik dit aan moet pakken.

Groeten Leendert
SELECT DISTINCT veld FROM tabel WHERE veld = waarde
je kan het zo doen:

<?php
$query = "SELECT DISTINCT merk FROM producten";
$do = mysql_query($query);

while($restultaat = mysql_fetch_array($do)) {
echo $resultaat['merk'] . "<br />";
}
?>

SELECT DISTINCT betekent, selecteer alleen de unieke waarden:
http://www.webdevelopersnotes.com/tutorials/sql/online_mysql_guide_the_distinct_keyword.php3

dan doe je je query, en vervolgens met een while loop,
loop je alle merken af, en echo't die + (wat in php een . is) een <br> wat inhoudt, dat er een nieuwe regel gemaakt wordt.
dus het volgende wordt het ongeveer in je html body:

philips<br>
sony<br>
panasonic<br>

enz...

Succes!

Groet,

Barry
bedankt allebei!
Zo gaat het lukken :)
De database bestaat uit 1 tabel met de naam producten. Er is een kolom die heet merk en hier staan dus de merken van de producten in.
Dan is het datamodel verkeerd, één gegeven (in dit geval het merk) sla je slechts 1x op.

Ga normaliseren en maak een aparte tabel aan om de merken in te zetten. Dan kun je nooit meer met dubbele (reduntante) data komen te zitten. Dit voorkomt een hele berg problemen.

Dus terug naar de tekentafel!
Frank schreef op 09.01.2007 16:44
De database bestaat uit 1 tabel met de naam producten. Er is een kolom die heet merk en hier staan dus de merken van de producten in.
Dan is het datamodel verkeerd, één gegeven (in dit geval het merk) sla je slechts 1x op.

Ga normaliseren en maak een aparte tabel aan om de merken in te zetten. Dan kun je nooit meer met dubbele (reduntante) data komen te zitten. Dit voorkomt een hele berg problemen.

Dus terug naar de tekentafel!


Dan moet je toch joinen later?
Frank schreef op 09.01.2007 16:44
De database bestaat uit 1 tabel met de naam producten. Er is een kolom die heet merk en hier staan dus de merken van de producten in.
Dan is het datamodel verkeerd, één gegeven (in dit geval het merk) sla je slechts 1x op.

Ga normaliseren en maak een aparte tabel aan om de merken in te zetten. Dan kun je nooit meer met dubbele (reduntante) data komen te zitten. Dit voorkomt een hele berg problemen.

Dus terug naar de tekentafel!


In dit geval is dit de beste oplossing, de persoon ontvangt elke dag een .cvs bestand van de distributeur met alle producten er in. Hij moet de gegevens uit dit nieuwe bestand zo snel mogelijk in de database kunnen zetten. De producten worden dus elke dag opnieuw in de database gezet.

wat is hier fout aan:

<?php
$query = "SELECT DISTINCT merk FROM producten";
$do = mysql_query($query) or die("Er is iets fout gegaan!");
?>

<center>
<form action="producten.php" method="post">
<select name="merk">

<?php

while($restultaat = mysql_fetch_array($do)) {
print'<option value='.$resultaat["merk"].'>'.$resultaat["merk"].'</option>';
}

?>
</select>
</form>
</center>

het dropdown-veldje blijft leeg....Terwijl er wel producten in de database staan. Er is al verbinding met de database gelegd in het het script voor het gedeelte wat je nu ziet, verbinding is goed want ik kan printen uit de database.
probeer eens bij or die
dit neer te zetten:

or die(mysql_error());

Kijken wat voor fout die geeft...


Barry
Barry schreef op 09.01.2007 17:07
probeer eens bij or die
dit neer te zetten:

or die(mysql_error());

Kijken wat voor fout die geeft...


Barry


Hij geeft geen fout...

maar zit de fout misschien in deze tekens: ' en "
ok

en dit:

print'<option value='.$resultaat["merk"].'>'.$resultaat["merk"].'</option>';

naar dit veranderen:

echo "<option value=" . $resultaat['merk'] . ">" . $resultaat['merk'] . "</option>";

werkt dat?

(ja ik ben niet goed in debuggen, dat weet ik...)



Barry

Reageren