login  Naam:   Wachtwoord: 
Registreer je!
 Forum

meerdere FROM (Opgelost)

Offline Lerac - 12/01/2008 14:06 (laatste wijziging 12/01/2008 14:08)
Avatar van LeracNieuw lid Ik heb de volgende insert query gemaakt ik weet geen mysql escape string enz. Maar ik wil eerst dat het werkt voordat ik daar moeilijk mee ga doen.:

INSERT THINGIE
  1. $query = "
  2. INSERT INTO afblocatie
  3. (
  4. afbeelding,
  5. thumbnail
  6. )
  7. VALUES
  8. (
  9. '".$_SESSION['afbeelding']."',
  10. '".$_SESSION['thumbnail']."'
  11. )";
  12. IF(!mysql_db_query($dbname,$query,$db)) die(mysql_error());
  13.  
  14. $query = "
  15. INSERT INTO afbcategorie
  16. (
  17. categorie
  18. )
  19. VALUES
  20. (
  21. '".$_POST['categorieen_voor_afbeeldingen']."'
  22. )";
  23. IF(!mysql_db_query($dbname,$query,$db)) die(mysql_error());
  24.  
  25. $query = "
  26. INSERT INTO afbomschrijving
  27. (
  28. omschrijving
  29. )
  30. VALUES
  31. (
  32. '".$_POST['omschrijving_voor_afbeelding']."'
  33. )";
  34. IF(!mysql_db_query($dbname,$query,$db)) die(mysql_error());
  35.  
  36. $query = "
  37. INSERT INTO afbtrefwoord
  38. (
  39. trefwoord
  40. )
  41. VALUES
  42. (
  43. '".$_POST['trefwoord']."'
  44. )";
  45. IF(!mysql_db_query($dbname,$query,$db)) die(mysql_error());


Nu wil ik dit opvullen het is een leeg voorbeeld dus begin daar niet over de inhoud:

  1. $sql = "
  2. SELECT
  3. thumbnail,
  4. afbeelding
  5. FROM
  6. afblocatie
  7. WHERE
  8.  
  9. ";


Mijn probleem is dat ik dus meerdere FROM nodig heb om aan een bepaalde zoekvraag te voldoen. hoe doe ik dat.

12 antwoorden

Gesponsorde links
Offline ranco - 12/01/2008 14:33
Avatar van ranco PHP gevorderde Gewoon, bij je FROM tabellen een comma neerzetten, en dan de rest van je benodige tabellen erbij zetten:

  1. $sql = "SELECT thumbnail, afbeelding
  2. FROM afblocatie, 2detabel, 3tabel
  3. WHERE enz enz
  4.  
  5. ";
Offline Lerac - 12/01/2008 14:38
Avatar van Lerac Nieuw lid oh...ik dacht niet dat het zo simpel was. Want je kunt moeilijk thumbnail selecteren van bijv 2detabel of 3tabel omdat die selectie niet aanwezig is in die tabel of niet soms?
Offline ranco - 12/01/2008 14:42
Avatar van ranco PHP gevorderde Nee, klopt, je veldnamen moet je wel aanpassen.
Stel je hebt 2 tabellen.

1. gebruikers
2. instellingen

Dan ziet zo je query eruit:

  1. SELECT gebruikers.naam, gebruikers.achternaam, instellingen.max_berichten, instellingen.achtergrondkleur
  2. FROM gebruikers, instellingen
  3. WHERE (gebruikers.id = instellingen.gebruikersid)


Bij de WHERE clausule koppel je beide tabellen aan elkaar. Hij haalt alleen de gegevens op van die ene persoon uit beide tabellen.
Offline Lerac - 12/01/2008 14:46
Avatar van Lerac Nieuw lid Onderstaan wil ik wat doe ik dan....die $sql gaat uiteindelijk mijn thumnail tonen.

  1. //zoeken op alles de ingevoerde zoekwoord mag in 1 of meerdere tabellen voorkomen (zie or regel 60 OR)
  2. $zoekexploded = explode(' ', $zoeken);
  3. //zorgt ervoor dat de variabelen weer leeg zijn (vooral belangrijk na een al reeds uitgevoerde zoekopdracht
  4. $like = "";
  5. $like2 = "";
  6. foreach($zoekexploded as $k=>$v)
  7. {
  8. if($k == 0)
  9. {
  10. $like .= "`trefwoord` LIKE '%".$v."%' ";
  11. $like2 .= "`omschrijving` LIKE '%".$v."%' ";
  12. }
  13. else
  14. {
  15. $like .= "AND `trefwoord` LIKE '%".$v."%' ";
  16. $like2 .= "AND `omschrijving` LIKE '%".$v."%' ";
  17. }
  18. }
  19. $sql = "
  20. SELECT
  21. thumbnail,
  22. trefwoord,
  23. categorie,
  24. omschrijving
  25. FROM
  26. afblocatie,
  27. afbcategorie,
  28. afbomschrijving,
  29. afbtrefwoord
  30. WHERE
  31. categorie LIKE '$zoekopcategorie' AND
  32. ".$like." OR
  33. ".$like2."
  34. ";
  35. }
Offline BramBo - 12/01/2008 15:30
Avatar van BramBo JS gevorderde Je dient prefixen toe te voegen, dus afbllocatie. of je gebruikt aliassen:

  1. SELECT al.thumbnail, at.trefwoord, ac.categorie, ao.omschrijving
  2. ROM afblocatie AS al, afbcategorie AS ac, afbomschrijving AS ao, afbtrefwoord AS at
  3. WHERE ....


Verder lijkt de database mij wat vreemd opgebouwd, weer natuurlijk verder niet wat de bedoeling er achter is. Maar ik zie geen overeenkomende velden waarmee je associatie creëert.
bekijk eens: http://www.teks...twerpen/10

Offline Lerac - 12/01/2008 15:59 (laatste wijziging 12/01/2008 16:31)
Avatar van Lerac Nieuw lid Zucht bedankt voor suggestie, maar dat is NIET noodzakelijk, werkt alleen makkelijker. Dan nog ben ik niets opgeschoten. Werkt niemand hier met meer dan 2 tabellen....kan me moeilijk voorstellen wellicht deze script meerinzicht geeft.

  1. <?php
  2. ini_set('display_errors', 'On');
  3. require_once("../../DBconnections/databaseconnectionuploaden.php");
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <title>Zoeken</title>
  10. </head>
  11.  
  12. <body>
  13. <!--inputvelden voor gebruiker om te zoeken-->
  14. <form form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
  15. Zoek op categorie:<br>
  16. <select name="zoekopcategorie">
  17. <option value="Bibliotheek">Bibliotheek</option>
  18. <option value="Conferentie">Conferentie</option>
  19. <option value="BVBo7">NVB07</option>
  20. <option value="Onderwijs">Onderwijs</option>
  21. <option value="Onderzoek">Onderzoek</option>
  22. <option value="Publicatie">Publicatie</option>
  23. <option value="Raak project">Raak project</option>
  24. <option value="Related">Related</option>
  25. <option value="Site">Site</option>
  26. <option value="Subsidie">Subsidie</option>
  27. <option value="Under content creation">Under content creaction</option>
  28. <option value="Jongeren">Jongeren</option>
  29. <option value="Zonder categorie">Zonder categorie</option>
  30. <option value="alles" selected="selected">alles</option>
  31. </select><p>
  32. in:<br>
  33. <select name="zoekenin">
  34. <option value="omschrijving">Omschrijving</option>
  35. <option value="trefwoord">Trefwoord</option>
  36. <option value="alles" selected="selected">alles</option>
  37. </select><p>
  38. Met <b>alle</b> woorden (hoofdlettergevoelig):
  39. <input name="zoeken" type="text" id="zoeken" size="30"><P>
  40. <input type="submit" value="zoeken"><P>
  41. </form>
  42.  
  43. <?php
  44. if($_SERVER['REQUEST_METHOD'] == 'POST')
  45. {
  46. $zoeken = mysql_real_escape_string($_POST['zoeken']);
  47. $zoekopcategorie = mysql_real_escape_string($_POST['zoekopcategorie']);
  48.  
  49. //beveiliging zodat andere mensen niet mijn script kunnen gebruiken om in mijn database te komen
  50. //beveiliging zodat andere mensen niet mijn script kunnen gebruiken om in mijn database te komen
  51. if ($_POST['zoekopcategorie'] == 'Bibliotheek' || $_POST['zoekopcategorie'] == 'Conferentie' || $_POST['zoekopcategorie'] == 'BVBo7' || $_POST['zoekopcategorie'] == 'Onderwijs' || $_POST['zoekopcategorie'] == 'Onderzoek' || $_POST['zoekopcategorie'] == 'Publicatie' || $_POST['zoekopcategorie'] == 'Raak project' || $_POST['zoekopcategorie'] == 'Related' || $_POST['zoekopcategorie'] == 'Site' || $_POST['zoekopcategorie'] == 'Subsidie' || $_POST['zoekopcategorie'] == 'Under content creation' || $_POST['zoekopcategorie'] == 'Jongeren' || $_POST['zoekopcategorie'] == 'Zonder categorie' && $_POST['zoekenin'] == 'alles')
  52. {
  53. //zoeken op alles de ingevoerde zoekwoord mag in 1 of meerdere tabellen voorkomen (zie or regel 60 OR)
  54. $zoekexploded = explode(' ', $zoeken);
  55. //zorgt ervoor dat de variabelen weer leeg zijn (vooral belangrijk na een al reeds uitgevoerde zoekopdracht
  56. $like = "";
  57. $like2 = "";
  58. foreach($zoekexploded as $k=>$v)
  59. {
  60. if($k == 0)
  61. {
  62. $like .= "`afbtrefwoord.trefwoord` LIKE '%".$v."%' ";
  63. $like2 .= "`afbomschrijving.omschrijving` LIKE '%".$v."%' ";
  64. }
  65. else
  66. {
  67. $like .= "AND `afbtrefwoord.trefwoord` LIKE '%".$v."%' ";
  68. $like2 .= "AND `afbomschrijving.omschrijving` LIKE '%".$v."%' ";
  69. }
  70. }
  71. $sql = "
  72. SELECT
  73. afblocatie.thumbnail,
  74. afbcategorie.categorie,
  75. afbomschrijving.omschrijving,
  76. afbtrefwoord.trefwoord,
  77. FROM
  78. afblocatie,
  79. afbcategorie,
  80. afbomschrijving,
  81. afbtrefwoord
  82. WHERE
  83. afbcategorie.categorie LIKE '$zoekopcategorie' AND
  84. ".$like." OR
  85. ".$like2."
  86. ";
  87. }
  88.  
  89. $res = mysql_query($sql);
  90.  
  91. if(!$res)
  92. {
  93. trigger_error(mysql_error().'<br />In query: '.$sql);
  94. }
  95. else
  96. {
  97. if (mysql_num_rows($res) >= 1)
  98. {
  99. while ($row = mysql_fetch_array($res))
  100. {
  101. //weergave van zoekresultaat
  102. echo '<p><img src="'.$row['thumbnail'].'" alt="thumbnail" /></p>';
  103. }
  104. echo "<p><a href=\"registered_user_area_zoeken.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
  105. }
  106. else
  107. {
  108. echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoeken]</b></p>";
  109. echo "<p><a href=\"registered_user_area_zoeken.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
  110. }
  111. }
  112. }
  113. ?>
  114. </body>
  115. </html>
Offline ranco - 12/01/2008 16:00 (laatste wijziging 12/01/2008 16:02)
Avatar van ranco PHP gevorderde @BramBo: Je hoeft totaal geen prefixes te gebruiken als je dit onhandig vind.

@Lerac: je hebt de tabellen niet met elkaar verbonden via een where clausule...

Nu werkt je query inderdaad niet
Offline Lerac - 12/01/2008 16:04 (laatste wijziging 12/01/2008 16:06)
Avatar van Lerac Nieuw lid Dat zeg ik net ook.....maar ik heb nog steeds geen oplossing gekregen....zit nog steeds vast. In jouw voorbeeld had je er maar 1tje dus ik zit muurvast met die redenering. Al die tabellen zijn aan elkaar gekoppeld.

  1. $sql = "
  2. SELECT
  3. afblocatie.thumbnail,
  4. afbcategorie.categorie,
  5. afbomschrijving.omschrijving,
  6. afbtrefwoord.trefwoord,
  7. FROM
  8. afblocatie,
  9. afbcategorie,
  10. afbomschrijving,
  11. afbtrefwoord
  12. WHERE
  13. afblocatie.id = afbtrefwoord.id
  14. afblocatie.id = afbcategorie.id
  15. afblocatie.id = afbomschrijving.id
  16. afblocatie.id = afbtrefwoord.id
  17. afbcategorie.categorie LIKE '$zoekopcategorie' AND
  18. ".$like." OR
  19. ".$like2."
  20. ";
Offline ranco - 12/01/2008 17:06
Avatar van ranco PHP gevorderde Volgens mij moet deze code werken... Wat voor foutmelding krijg je nu?
Offline Rens - 12/01/2008 18:48 (laatste wijziging 12/01/2008 18:48)
Avatar van Rens Gouden medaille

Crew algemeen
  1. $sql = "SELECT
  2. afblocatie.id,
  3. afblocatie.thumbnail,
  4. afbcategorie.categorie,
  5. afbomschrijving.omschrijving,
  6. afbtrefwoord.trefwoord,
  7. FROM
  8. afblocatie
  9. INNER JOIN
  10. afbtrefwoord
  11. ON
  12. afblocatie.id = afbtrefwoord.id
  13. INNER JOIN
  14. afbcategorie
  15. ON
  16. afblocatie.id = afbcategorie.id
  17. INNER JOIN
  18. afbomschrijving
  19. ON
  20. afblocatie.id=afbomschrijving.id
  21. WHERE
  22. afbcategorie.categorie LIKE '".$zoekopcategorie."'
  23. AND
  24. (
  25. afbcategorie.categorie LIKE '".$like."'
  26. OR
  27. afbcategorie.categorie LIKE '".$like2."'
  28. )";

Probeer die query eens.
Is met een join op 3 tabellen, zou dus best wel eens traag/trager kunnen zijn...

Jouw code zoals hij (volgens mij moet werken):
  1. $sql = "
  2. SELECT
  3. afblocatie.thumbnail,
  4. afbcategorie.categorie,
  5. afbomschrijving.omschrijving,
  6. afbtrefwoord.trefwoord,
  7. FROM
  8. afblocatie,
  9. afbcategorie,
  10. afbomschrijving,
  11. afbtrefwoord
  12. WHERE
  13. afblocatie.id = afbtrefwoord.id
  14. AND
  15. afblocatie.id = afbcategorie.id
  16. AND
  17. afblocatie.id = afbomschrijving.id
  18. AND
  19. afblocatie.id = afbtrefwoord.id
  20. AND
  21. afbcategorie.categorie LIKE '".$zoekopcategorie."'
  22. AND
  23. (
  24. afbcategorie.categorie LIKE '".$like."'
  25. OR
  26. afbcategorie.categorie LIKE '".$like2."'
  27. )
  28. ";

Bekijk de code en zie wat er aangepast is...
Offline Lerac - 12/01/2008 22:15 (laatste wijziging 12/01/2008 22:18)
Avatar van Lerac Nieuw lid Foutmelding blifjt: Beide opties geprobeerd maar toch dezelfe error....
1e optie:
Notice: 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 'FROM afblocatie, afbcategorie, afbomschrijving, afbtrefwoord ' at line 6
In query: SELECT afblocatie.thumbnail, afbcategorie.categorie, afbomschrijving.omschrijving, afbtrefwoord.trefwoord, FROM afblocatie, afbcategorie, afbomschrijving, afbtrefwoord WHERE afblocatie.id = afbtrefwoord.id AND afblocatie.id = afbcategorie.id AND afblocatie.id = afbomschrijving.id AND afblocatie.id = afbtrefwoord.id AND afbcategorie.categorie LIKE 'BVBo7' AND ( afbcategorie.categorie LIKE '`afbtrefwoord.trefwoord` LIKE '%fiets%' ' OR afbcategorie.categorie LIKE '`afbomschrijving.omschrijving` LIKE '%fiets%' ' )


2e optie
Notice: Unknown column 'fiets' in 'where clause'
In query: SELECT afblocatie.id, afblocatie.thumbnail, afbcategorie.categorie, afbomschrijving.omschrijving, afbtrefwoord.trefwoord FROM afblocatie INNER JOIN afbtrefwoord ON afblocatie.id = afbtrefwoord.id INNER JOIN afbcategorie ON afblocatie.id = afbcategorie.id INNER JOIN afbomschrijving ON afblocatie.id=afbomschrijving.id WHERE afbcategorie.categorie LIKE 'BVBo7' AND ( afbcategorie.categorie LIKE '`afbtrefwoord.trefwoord` LIKE '%fiets%' ' OR afbcategorie.categorie LIKE '`afbomschrijving.omschrijving` LIKE '%fiets%' ' ) in /home/..../domains/..../public_html/waterwolf/geavanceerd_zoeken.php on line 106
Offline Rens - 13/01/2008 12:55 (laatste wijziging 13/01/2008 12:55)
Avatar van Rens Gouden medaille

Crew algemeen
1e: Je hebt een komma net voor je FROM staan.
2e: Lees en je zult het zelf wel vinden.
Het staat er letterlijk dus doe zelf maar wat moeite...
Citaat:
Unknown column 'fiets' in 'where clause'
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.245s