PHP vraag (geen idee hoe het heet)

Status
Niet open voor verdere reacties.

Gammort

Gebruiker
Lid geworden
12 dec 2006
Berichten
271
Hey all,

Ik heb een vraagje betreft iets, ik weet niet hoe het heet dus ik hoop dat jullie me kunnen helpen.

Ik moet een site maken waarop 2e hands auto's uit de database worden gehaald, ik wil dit per merk doen.

Dus... ik wil op een link klikken, bijvoorbeeld Volkswagen en dan moet die alle volkswagens tonen.

PHP:
$result = mysql_query("SELECT * FROM autoos where merk = 'Volkswagen' ");

Ik dacht eraan om dit op te lossen door dan in de url: index.php?merk=volkswagen
te krijgen, maar ik heb geen idee hoe dat moet, kan iemand me verder helpen?

Alvast bedankt,

Rick
 
Ik ga er vanuit dat je 2 databasetabellen hebt.

Een met de merken en een met de auto's.
Elke auto heeft een merk_id waarmee je hem kunt koppelen aan een merk.

Zo niet dan zul je eerst je databaseschema op orde moeten brengen.

Wat je dan kun doen is op de eerste pagina een dropdown maken a.d.h.v. de merk-tabel.
PHP:
$merkQuery = "SELECT merk_id, merk_naam FROM merken";
$merkResult = mysql_query($merkQuery);
if(!$merkResult) {
  echo 'Er is een fout opgetreden bij het ophalen van de merken! MySQL zegt: '. mysql_error();
} else {
  echo '<select name="merk">';
  while($merkRow = mysql_fetch_assoc($merkResult)) {
    echo '<option value="'. $merkRow['merk_id'] .'">'. $merkRow['merk_naam'] .'</option>';
  }
  echo '</select>';
}
Vervolgens kun je op de verwerkpagina de variabele $_POST['merk'] gebruiken voor je query in de auto-tabel.
PHP:
$autoQuery = "SELECT * FROM autos WHERE merk_id='". $_POST['merk'] ."'";
 
De link zelf kun je gewoon in je A zetten:
HTML:
<a href="/index.html?merk=Volkswagen">Volkswagen</a>

In je PHP code kun je vervolgens die waarden uitlezen uit de URL met behulp van de speciale $_GET array:

PHP:
if ( isset ( $_GET['merk'] ) ) {
  $sMerk = $_GET['merk'];
  // haal hier je auto's op
}
else {
  // blijkbaar is er geen merk opgegeven; laat de homepage zien?
}

Houd er wel rekening mee dat je ALTIJD een mysql_real_escape_string over gebruikersdata heen moet halen om te voorkomen dat mensen je database bewust of onbewust kunnen beschadigen.
 
Inderdaad, een afhankelijk van of magic_quotes aan staan ook nog door stripslashes voordat je het door mysql_real_escape_string (of $mysqli_object->real_escape_string) haalt. Anders krijg je dubbele slashes in je data.
 
Ik heb de manier van Tha Devil gebruikt

Dit heb ik nu:
PHP:
<?php
$merkQuery = "SELECT merk_id, merk_naam FROM merken"; 
$merkResult = mysql_query($merkQuery); 
if(!$merkResult) { 
  echo 'Er is een fout opgetreden bij het ophalen van de merken! MySQL zegt: '. mysql_error(); 
} else { 
  echo '<select name="merk">'; 
  echo '<option value="">Kies een merk</option>';
  while($merkRow = mysql_fetch_assoc($merkResult)) { 
    echo '<option value="'. $merkRow['merk_id'] .'">'. $merkRow['merk_naam'] .'</option>'; 
  } 
  echo '</select>';
}  

$autoQuery = "SELECT * FROM autoos WHERE merk_id='". $_POST['merk'] ."'";  

$result = mysql_query($autoQuery);

        //Loop through all table rows
        while ($row = mysql_fetch_assoc($result))
        {
echo "<table width='600' border='1'>";
echo "  <tr>";
echo "    <td rowspan='4'><img src='" . $row['fotoURL'] . "' alt=' ' /></td>";
echo "    <th>Merk</th>";
echo "    <td>". $row['merk'] ."</td>";
echo "    <th>Type</th>";
echo "    <td>". $row['type'] ."</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <th>Brandstof</th>";
echo "    <td>". $row['brandstof'] ."</td>";
echo "    <th>Motorinhoud</th>";
echo "    <td>". $row['motorinhoud'] ."</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <th>Vermogen</th>";
echo "    <td>". $row['vermogen'] ."</td>";
echo "    <th>Bouwjaar</th>";
echo "    <td>". $row['bouwjaar'] ."</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <th>Kleur</th>";
echo "    <td>". $row['kleur'] ."</td>";
echo "    <th>Vraagprijs</th>";
echo "    <td>". $row['vraagprijs'] ."</td>";
echo "  </tr>";
echo "</table>";
        }
?>

Maar als ik de pagina open staan er standaard alle Opel modellen (id = 0), en als ik een nieuwe auto selecteer in de dropdown komen er geen andere auto's voor in de plaats, en nu is mijn vraag, hoe krijg ik dit werkend, en hoe zorg ik dat alle auto's standaard weergeven zijn (ongeacht het merk ;))

Alvast bedankt :)

Rick
 
Oef. Het eerste is om nooit een id van 0 te gebruiken; altijd beginnen bij 1.

Dan moet je, om je select box aan de praat te krijgen, een <form> element toevoegen, en een submit button:

HTML:
<form method="post" action="">
<input type="submit" value="Klik hier =0" name="submit" />
<select>
<option>....</option>
</select>
</form>

Daarna moet je aan het begin van je script checken of $_POST['merk'] wel informatie bevat; en zo niet, dan moet je een query uitvoeren waarbij je ALLES ophaalt, ipv op ID:

PHP:
if ( isset ( $_POST['merk'] ) ) {
  $autoQuery = "SELECT * FROM autoos WHERE merk_id='". $_POST['merk'] ."'";   
}
else {
  $autoQuery = "SELECT * FROM autoos WHERE 1";
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan