login  Naam:   Wachtwoord: 
Registreer je!
 Forum

http-fout 500 op zoek.php pagina (Opgelost)

Offline willie - 25/11/2011 21:13
Avatar van willie0 Ik heb een stukje zoek script om te kunnen zoeken op de site.
Maar ik kan de pagina niet oproepen zonder de http-fout 500 pagina te zien.
  1. <?php
  2.  
  3.  
  4. include "connect.php";
  5.  
  6. `
  7. $zoekwoord = $_POST['zoekwoord'];
  8.  
  9. $res = mysql_query("SELECT text FROM agenda, gedichten, pagina WHERE text LIKE '$zoekwoord'");
  10. while ($obj = mysql_fetch_object($res)){
  11.  
  12. echo $obj->text."";
  13. }
  14. ?>
  15. <form method='post' action='zoek.php'>
  16. zoek naar: <input type='text' name='zoekwoord'><br />
  17. <input type='submit' name='zoek' value='Zoek Nu!'><br /><br />

Ik kom hier niet uit.

9 antwoorden

Gesponsorde links
Offline Pieter - 25/11/2011 21:50
Avatar van Pieter Gouden medaille

SEO guru
Regel 7, wat doet die ' daar?
Offline willie - 25/11/2011 22:01 (laatste wijziging 25/11/2011 22:24)
Avatar van willie 0 klein foutje had ik niet zien staan.
Ik heb het weg gehaald, maar krijg nu de melding
  1. Column 'text' in field list is ambiguous
En dit is het nu
  1. <?php
  2.  
  3.  
  4. include "connect.php";
  5.  
  6. $zoekwoord = $_POST['zoekwoord'];
  7.  
  8. $res = mysql_query("SELECT text FROM agenda, gedichten, pagina WHERE text LIKE '$zoekwoord' ") or die(mysql_error());
  9. while ($obj = mysql_fetch_object($res)){
  10.  
  11. echo $obj->text."";
  12. }
  13. ?>
  14. <form method='post' action='zoek.php'>
  15. zoek naar: <input type='text' name='zoekwoord'><br />
  16. <input type='submit' name='zoek' value='Zoek Nu!'><br /><br />
Offline Kevin - 25/11/2011 22:25
Avatar van Kevin Crew Ajax/REST Probeer eens of het met mysql_fetch_array() wel werkt?
Offline willie - 25/11/2011 22:31
Avatar van willie 0 Blijft het zelfde, dat had ik allemaal al geprobeert.
Offline Aar - 25/11/2011 22:45
Avatar van Aar PHP interesse Moet je niet eens een fatsoenlijke controle inbouwen of je formulier verstuurd is? Lijkt me wel zo netjes, ook raad ik aan om foutafhandeling in te bouwen. Variabelen mogen ook buiten quotes, en zorg voor mysql_real_escape_string(), want je bent behoorlijk hackbaar.

Wat mij betreft, breken die boel.
Offline Pieter - 26/11/2011 13:15
Avatar van Pieter Gouden medaille

SEO guru
Dit is de verklaring van de fout:

http://sqlzoo.net/howto/source/z.dir/err918/mysql
Offline willie - 26/11/2011 15:28 (laatste wijziging 26/11/2011 15:41)
Avatar van willie 0 Ps ik ben nog aan het proberen, dit is niet het geen wat er al op de site staat.
Ik wil gewoon kijken als ik kan zoeken in de database in het veld text naar een bepaald woord.

Nu is het zo
  1. <?php
  2.  
  3. include "connect.php";
  4.  
  5. $zoekwoord = $_POST['zoekwoord'];
  6. echo "$zoekwoord";
  7.  
  8. $res = mysql_query("SELECT text FROM gedichten WHERE text LIKE $zoekwoord ") or die(mysql_error());
  9. while ($obj = mysql_fetch_object($res)) {
  10. echo $obj->text." ";
  11. echo <br />";
  12. }
  13.  
  14. mysql_free_result($res);
  15. ?>
  16. <form method='post' action='zoek.php'>
  17. zoek naar: <br />
  18. <input type='text' name='zoekwoord'><br />
  19. <input type='submit' name='zoek' value='Zoek Nu!'>

Nu heeft hij een controlle als het zoekwoord is gepost.
Dat doet die dus wel.
Offline Filip - 26/11/2011 17:36
Avatar van Filip IRC guru Text is een reserved word. Hoewel er een exception opstaat dat het wel zonder backticks bruikbaar is, kan je dat woord dus best gaan vermijden. Dit is geen bijdrage aan de topic zelf, maar wel even een melding tussendoor zodat je dat weet. Als je googled op 'mysql reserved words' vind je hier wel meer informatie over.

Dan om even te reageren op de code hierboven.

1) zoals al 1000 keer gezegd, echo $zoekwoord; variablen kan je best BUITEN de quotes zetten. De manier dat jij gebruikt is al lang bestempeld als bad coding.
2) $zoekwoord = $_POST... dit is geen controle, het enige dat je daar mee haalt is een warning als die postvar niet geset is. Je kan beter een if er rond zetten die kijkt of $_SERVER['HTTP_REQUEST_METHOD'] == 'POST' (MET hoofdletters), en daarna een isset op je zoekwoord.
3) Je query is gewoon te lelijk voor woorden... hieronder een deftige versie. Verder matched die ook enkel het exacte zoekwoord. Stel dat dit zoekwoord test is, dan heb je wel een hit op test, maar geen hit op testje.

  1. <?php
  2. $res = mysql_query("SELECT `text` FROM gedichten WHERE `text` LIKE '". $zoekwoord ."' ") or die(mysql_error());
  3. ?>


Let er op, de var staat BUITEN de quotes en als je een echo zou doen van de query krijg je:
LIKE 'test'

Dit gaat geen fout geven. Heb ook ineens de backticks er bij gezet.
Offline willie - 26/11/2011 20:44
Avatar van willie 0 Oke alles is dus fout.
Ik had onder tussen verder gezocht en iets gevonden,
Ik heb het geprobeert en het werkt goed.db zoek script
Deze kan ik aanpassen voor mijn site.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.215s