login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Php] Ingewikkelde query

Offline Simax - 10/03/2008 14:15 (laatste wijziging 10/03/2008 14:16)
Avatar van SimaxOnbekend Ik heb een tabel 'producten' en een tabel 'fabrikanten'. Nu wil ik al mijn producten weergeven doormiddel van..
  1. print "<table>";
  2. while($product = mysql_fetch_array($query))
  3. {
  4. print "<tr>".
  5. "<td><a href=\"?page=producten&categorie={$product["categorie"]}&product={$product["id"]}\">{$product["naam"]}</a></td>".
  6. "<td>{$product["fabrikant"]}</td>".
  7. "<td>{$product["serie"]}</td>".
  8. "<td>{$product["type"]}</td>".
  9. "<td><img src=\"images/toevoegen.png\" /></td>".
  10. "</tr>";
  11. }
  12. print "</table>";


maar het probleem is als volgt..
$product["fabrikant"] is gelijk aan het veld 'id' in de tabel 'fabrikanten'. Ik zou graag de fabrikantnaam weergeven.

Iemand die mij kan helpen?
Heb al van alles geprobeerd, maar niets werkt .
Alvast bedankt .

14 antwoorden

Gesponsorde links
Offline cloudstrife - 10/03/2008 14:23 (laatste wijziging 10/03/2008 14:24)
Avatar van cloudstrife PHP beginner Doe gewoon een join tussen de 2 tabellen. Er staat hierover een goede tutorial op sitemasters.

http://www.site...ySQL/Joins
Offline Simax - 10/03/2008 14:30 (laatste wijziging 10/03/2008 14:31)
Avatar van Simax Onbekend Dat heb ik geprobeerd..
  1. mysql_query("SELECT * FROM producten
  2. INNER JOIN fabrikanten ON(producten.fabrikant = fabrikanten.id)
  3. WHERE categorie = {$categorie}");


maar er word geen resultaat weergegeven
Offline cloudstrife - 10/03/2008 14:46
Avatar van cloudstrife PHP beginner probeer is in je phpmyadmin met een simpele query.

  1. SELECT * FROM producten JOIN fabrikanten ON producten.fabrikant = fabrikanten.id


En kijk dan is wat je terug krijgt.
Offline Simax - 10/03/2008 14:53
Avatar van Simax Onbekend Zou het kunnen komen doordat ik in beide tabellen een veld 'naam' gebruik?  
Offline cloudstrife - 10/03/2008 15:12
Avatar van cloudstrife PHP beginner
Spot schreef:
Zou het kunnen komen doordat ik in beide tabellen een veld 'naam' gebruik?  

Dat kan inderdaad problemen geven, ik neem aan dat de query dus wel lukt?
Offline nemesiskoen - 10/03/2008 15:14
Avatar van nemesiskoen Gouden medaille

PHP expert
Maak dan gebruik van "as":

  1. SELECT p.naam as pNaam, ... FROM product p [hier je join]
Offline Simax - 10/03/2008 15:25 (laatste wijziging 10/03/2008 15:26)
Avatar van Simax Onbekend Werkt niet .

En heb ok al zo geprobeerd..
  1. $product["fabrikanten.naam"];
Offline marten - 10/03/2008 15:41
Avatar van marten Beheerder In je while loop hoef je de tabelnaam er niet bij te zetten. Gaat het volgens mij ook fout op.
Offline Simax - 10/03/2008 15:53
Avatar van Simax Onbekend Maar hoe kan ik anders aangeven dat hij 'fabrikanten.naam' moet tonen in plaats van 'producten.fabrikant'?
Offline marten - 10/03/2008 15:55
Avatar van marten Beheerder door middel van AS zoals vage al zei.
Offline nemesiskoen - 10/03/2008 16:03
Avatar van nemesiskoen Gouden medaille

PHP expert
Citaat:
Werkt niet .

Werkt wel, anders type ik het niet... Je hebt het gewoon verkeerd geprobeerd.
Als je "as" gebruikt dan kan je de waarde aanroepen via de variabelnaam die je meegeeft na het as-keyword.
Dus:
"SELECT t.kolomnaam as blaat FROM tabel t"
=>
$array['blaat']
Offline Simax - 10/03/2008 16:10
Avatar van Simax Onbekend De fabrikantnaam komt uit een andere tabel, dus..
  1. SELECT producten.fabrikant AS fabrikantnaam ...


is niet mogelijk .
Offline cloudstrife - 10/03/2008 16:18
Avatar van cloudstrife PHP beginner
Spot schreef:
De fabrikantnaam komt uit een andere tabel, dus..
[..code..]

is niet mogelijk .

Is wel mogelijk hoor... probeer maar eens gewoon in je phpmyadmin met een gewone tabel zonder join of zo.
Offline ikkedikke - 10/03/2008 17:46
Avatar van ikkedikke PHP expert probeer eens het volgende:
  1. SELECT `categorie`,
  2. (SELECT `naam` AS fabrikantnaam FROM Fabrikanten WHERE `id` = `producten`.fabrikant),
  3. `type`,
  4. ...
  5. FROM `producten
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.212s