login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[SQL] Query fout.

Offline Chilion - 16/03/2010 12:38 (laatste wijziging 16/03/2010 12:40)
Avatar van ChilionMySQL interesse Maar, wat klopt er niet aan deze query?
  1. public $down = 'SELECT * FROM menu_down WHERE child = $menu["id"]';

17 antwoorden

Gesponsorde links
Offline Abbas - 16/03/2010 12:41
Avatar van Abbas Gouden medaille

Crew .NET
  1. $down = "SELECT * FROM menu_down WHERE child = ' " .$menu["id"] . " ' ";
Offline Chilion - 16/03/2010 12:44 (laatste wijziging 16/03/2010 12:59)
Avatar van Chilion MySQL interesse Heb nu dus dit:
  1. public $down = "SELECT * FROM menu_down WHERE child = ' " .$menu["id"] . " ' ";

Krijg deze foutmelding:
Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/chilion/domains/chilion.nl/public_html/marc/inc/menu.php on line 9
Offline smoos - 16/03/2010 13:24
Avatar van smoos PHP gevorderde Ik zou het eens proberen zonder public
Offline Chilion - 16/03/2010 13:43 (laatste wijziging 16/03/2010 13:44)
Avatar van Chilion MySQL interesse Ja, maar dat kan dus niet, want dan kan ik hem niet gebruiken.

Foutmelding:
Citaat:
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/chilion/domains/chilion.nl/public_html/marc/inc/menu.php on line 10


  1. <?php
  2.  
  3. require_once('database.php');
  4.  
  5. class Menu
  6. {
  7.  
  8. public $query = 'SELECT * FROM menu';
  9. private $_db;
  10. $down = "SELECT * FROM menu_down WHERE child = ' " .$menu["id"] . " ' ";
  11.  
  12. function __construct()
  13. {
Offline Ultimatum - 16/03/2010 14:29
Avatar van Ultimatum PHP expert Als child een integer is dan moeten er geen enkele quotes omheen.
  1. $down = "SELECT * FROM menu_down WHERE child = " .$menu[' id'];
Offline pijke - 16/03/2010 15:46 (laatste wijziging 16/03/2010 15:47)
Avatar van pijke Gouden medaille

Lid
misschien zo?
  1. public $down = "SELECT * FROM menu_down WHERE child = $menu['id']";

het is niet heel netjes, maar misschien werkt het.
Offline Ontani - 16/03/2010 15:51
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
hoe je het doet maakt nie uit maar gebruik enkele quotes binnen je $menu.
{$menu['id']} als je een array binnen dubbelequotes wilt gebruiken.

"SELECT * FROM menu_down WHERE child = '{$menu['id']}'";
of
"SELECT * FROM menu_down WHERE child = '" . $menu['id'] . "'";
Offline smoos - 16/03/2010 16:13 (laatste wijziging 16/03/2010 16:16)
Avatar van smoos PHP gevorderde
Chilion schreef:
Ja, maar dat kan dus niet, want dan kan ik hem niet gebruiken.

Foutmelding:
[..quote..]

[..code..]

Hoe wil je $menu['id'] aan $down geven als $menu['id'] niet bestaat?

Dat kan je doen in de constructor
  1. <?php
  2.  
  3. require_once('database.php');
  4.  
  5. class Menu {
  6. public $query = 'SELECT * FROM menu';
  7. private $_db;
  8. private $down;
  9.  
  10. function __construct($nMenuID){
  11. $this->down = "SELECT * FROM menu_down WHERE child = ".mysql_real_escape_string($nMenuID);
  12. }
  13. }
  14.  
  15. ?>

Offline Ibrahim - 16/03/2010 16:38
Avatar van Ibrahim PHP expert Zet je variabelen beter buiten quotes dan binnen, kom je nooit in de problemen. De reden dat Titjes' oplossing niet werkte is om twee dingen:

1) dubbele quotes bij $menu['id']
2) Een spatie binnen de single quotes van je SQL query ('<spatie> " . $menu["id"] . "<spatie>')

Bovenstaande reactie van smoos heeft een goede query, mits je het hele class gedoe niet erbij doet (beetje teveel van het goede smoos )
Offline smoos - 16/03/2010 16:48
Avatar van smoos PHP gevorderde
Ibrahim schreef:
Zet je variabelen beter buiten quotes dan binnen, kom je nooit in de problemen. De reden dat Titjes' oplossing niet werkte is om twee dingen:

1) dubbele quotes bij $menu['id']
2) Een spatie binnen de single quotes van je SQL query ('<spatie> " . $menu["id"] . "<spatie>')

Bovenstaande reactie van smoos heeft een goede query, mits je het hele class gedoe niet erbij doet (beetje teveel van het goede smoos )

Als je zijn reacties leest dan zie je dat het erom gaat dat hij zijn $down variable aanmaakt bij het declareren van de variabelen in zijn class. Daar bij het declareren mag je geen gebruik maken van andere variabelen functies of wat dan ook. Dat gaf voor hem de fout
Citaat:
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/chilion/domains/chilion.nl/public_html/marc/inc/menu.php on line 10

En die heb ik hierboven opgelost.

Beetje rondkijken voor je commentaar geeft
Offline Chilion - 18/03/2010 09:05 (laatste wijziging 18/03/2010 09:07)
Avatar van Chilion MySQL interesse
Citaat:
Warning: Missing argument 1 for Menu::__construct(), called in /home/chilion/domains/chilion.nl/public_html/marc/inc/menu.php on line 43 and defined in /home/chilion/domains/chilion.nl/public_html/marc/inc/menu.php on line 12

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /home/chilion/domains/chilion.nl/public_html/marc/inc/menu.php on line 14


En code:

  1. <?php
  2.  
  3. require_once('database.php');
  4.  
  5. class Menu
  6. {
  7.  
  8. public $query = 'SELECT * FROM menu';
  9. private $_db;
  10. private $down;
  11.  
  12. function __construct($nMenuID)
  13. {
  14. $this->down = "SELECT * FROM menu_down WHERE child = ".mysqli_real_escape_string($nMenuID, $this->link);
  15. $_db = new Database();
  16. $result = mysqli_query($_db->link, $this->query);
  17.  
  18. echo '<ul id="nav">';
  19.  
  20.  
  21. while($menu = mysqli_fetch_array($result))
  22. {
  23.  
  24. $resdown = mysqli_query($_db->link, $this->down);
  25.  
  26. echo '
  27. <br /><li class="menu_knop"><a href="">'.$menu['name'].'</a>
  28. <ul>
  29. <li><a href="">';
  30. while($down = mysqli_fetch_array($resdown))
  31. {
  32. echo $down['name'];
  33. }
  34. echo ' </a></li>
  35. </ul>
  36. </li>';
  37. }
  38.  
  39. echo '</ul>';
  40. }
  41. }
  42.  
  43. new Menu();
  44.  
  45. ?>
Offline lemoinet - 18/03/2010 10:03
Avatar van lemoinet PHP gevorderde je roept je menu aan zonder ID maar hij verwacht er wel een.

new Menu(); -> __construct()

new Menu(1); -> __construct(1)
Offline Chilion - 18/03/2010 10:06
Avatar van Chilion MySQL interesse Ja, er zijn meerdere id's, die ga ik neit allemaal aanmaken, of snap ik je nu totaal verkeerd?
Offline lemoinet - 18/03/2010 10:12
Avatar van lemoinet PHP gevorderde je verstaat me verkeerd.

je roept je klasse aan zonder parameter, maar hij heeft wel een parameter nodig.
Zoals de foutmelding al aangeeft. Hij mist een argument.
Hij probeert __construct() aan te roepen maar die bestaat niet
Offline Chilion - 18/03/2010 10:16
Avatar van Chilion MySQL interesse En hoe ga ik dat dan verwerken in bovenstaande code?
Offline lemoinet - 18/03/2010 10:26 (laatste wijziging 18/03/2010 10:35)
Avatar van lemoinet PHP gevorderde ik snap eigenlijk totaal niets van je code. wil je een soort van treeview genereren?
staan dan de parents in menu en de child in menu_down?

  1. class Menu
  2. {
  3. private $_db;
  4.  
  5. function __construct()
  6. {
  7. $_db = new Database();
  8. $result = mysqli_query($_db->link, 'SELECT id, name FROM');
  9.  
  10. echo '<ul id="nav">';
  11.  
  12. while($menu = mysqli_fetch_array($result))
  13. {
  14. echo '<li class="menu_knop"><a href="">' . $menu['name'] . '</a>';
  15. node($menu['id'])
  16. echo '</li>'
  17. }
  18.  
  19. echo '</ul>';
  20. }
  21.  
  22. function node($nMenuID)
  23. {
  24. $result = mysqli_query($_db->link, 'SELECT name FROM menu_down WHERE child = ' . $nMenuID);
  25.  
  26. if(null != result)
  27. {
  28. echo '<ul>';
  29. while($menu = mysqli_fetch_array($result))
  30. {
  31. echo '<li><a href="">' . $menu['name'] . '</a></li>';
  32. }
  33. echo '</ul>';
  34. }
  35. }
  36. }
Offline Chilion - 18/03/2010 11:22 (laatste wijziging 18/03/2010 11:30)
Avatar van Chilion MySQL interesse Edit, ja. Je snapt hem. Het een soort drop down menu zeg maar 

je code lichtelijk aangepast naar dit:
  1. <?php
  2.  
  3. require_once('database.php');
  4.  
  5. class Menu
  6. {
  7. private $_db;
  8.  
  9. function __construct()
  10. {
  11. $_db = new Database();
  12. $result = mysqli_query($_db->link, 'SELECT id, name FROM');
  13.  
  14. echo '<ul id="nav">';
  15.  
  16. while($menu = mysqli_fetch_array($result))
  17. {
  18. echo '<li class="menu_knop"><a href="">' . $menu['name'] . '</a>';
  19. node($menu['id']);
  20. echo '</li>';
  21. }
  22.  
  23. echo '</ul>';
  24. }
  25.  
  26. function node($nMenuID)
  27. {
  28. $result = mysqli_query($_db->link, 'SELECT name FROM menu_down WHERE child = ' . $nMenuID);
  29.  
  30. if(null != result)
  31. {
  32. echo '<ul>';
  33. while($menu = mysqli_fetch_array($result))
  34. {
  35. echo '<li><a href="">' . $menu['name'] . '</a></li>';
  36. }
  37. echo '</ul>';
  38. }
  39. }
  40. }
  41.  
  42. new Menu();
  43.  
  44. ?>


deze foutmelding:
Citaat:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /home/chilion/domains/chilion.nl/public_html/marc/inc/menu.php on line 16
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.268s