login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Zoeken op beginletter, eerste letter is geen alfabet letter.

Offline daboytommy87 - 13/03/2006 21:29 (laatste wijziging 13/03/2006 21:34)
Avatar van daboytommy87Nieuw lid Hallo allemaal, ik heb weer een probleem met me beginletters.

Het zoeken op beginletter gaat fantastisch, alleen nu wil ik ook de titels van films weergeven als deze begint met een 0,1,2 enz.

Maar kan de query niet vinden om te zoeken op de beginletter als dit geen letter uit het alfabet is. Ook kan je niet zoeken op INTEGER of iets dergelijks omdat mijn veld van me database gewoon TEXT is.

Ik heb al iets geprobeerd met COUNT als het een 1 is, dan worden alle titels met de gekozen beginletter weergegeven, maar krijg het niet voor elkaar dat wanneer het een 0 is dat de film titels beginnend met een ander teken weergegeven worden.

De code:
  1. <?php include("db_connectie2.php")?>
  2.  
  3. <?php
  4. //Query opbouwen eerste letter is aangeklikte beginletter.
  5. $query="SELECT * FROM film WHERE Titel LIKE '".addslashes($_GET["beginletter"])."%' ORDER BY Titel";
  6. $result = mysql_query($query) or die (mysql_error());
  7. $aantal=mysql_num_rows($result);
  8.  
  9. /*//Query opbouwen, eerste karakter moet een ander teken zijn.
  10. $queryNummer="SELECT * FROM film WHERE Titel LIKE INTEGER'%' ORDER BY Titel";
  11. $resultNummer = mysql_query($queryNummer) or die (mysql_error());
  12. echo $queryNummer;
  13. echo $resultNumme;
  14. $aantalNummer=mysql_num_rows($resultNummer);
  15. */
  16.  
  17. //Query opbouwen, geeft een 1 of 0 als de beginletter wel of niet in de database voorkomt, letters uit de database zijn a t/m z.
  18. $queryCount="SELECT COUNT(Letter) FROM letters WHERE Letter='".addslashes($_GET["beginletter"])."'";
  19. $resultQueryCount=mysql_query($queryCount) or die (mysql_error());
  20. $resultCount = mysql_result($resultQueryCount, 0, 0);
  21. ?>
  22.  
  23. <html>
  24. <head>
  25. <title>Resultaten</title>
  26.  
  27. <style type="text/css">
  28. TABLE { border-collapse: collapse; border: 2px solid #2aff00; }
  29. TD { border-collapse: collapse; border: 2px solid #2aff00; }
  30. TR { border-collapse: collapse; border: 2px solid #2aff00; }
  31. </style>
  32.  
  33. </head>
  34.  
  35. <body>
  36.  
  37. <?php
  38.  
  39. if(!isset($_GET['beginletter'])){
  40. echo ("Selecteer eerst een letter. <a href=\"select.php\">Selecteer een letter.</a>");
  41. exit();
  42. }
  43. elseif ($resultCount==1){
  44. echo ("<h2>U hebt gezocht op beginletter: ".$_GET["beginletter"]."</h2>");
  45. if($aantal == 0){
  46. echo "Er zijn nog geen films gevonden met begin letter <b>".$_GET["beginletter"]."</b>";
  47. }
  48. else{
  49. echo("Er zijn $aantal resultaten gevonden.<br><br>");
  50. echo "<table>\n";
  51. echo "<tr>\n";
  52. echo "<td bgcolor=#2aff00 COLSPAN=2><b>Titel</b></td>\n";
  53. echo "</tr>";
  54. while ($rij = mysql_fetch_array($result)){
  55. echo "<tr>\n";
  56. echo "<td>".$rij["Titel"]."</td>\n";
  57. echo "<td bgcolor=#2aff00><a target=_blank href=".$rij["Imdb"]."><img border=0 src=imdb.jpg></a></td>\n";
  58. echo "</tr>\n";
  59. }
  60. }
  61. }
  62. else{
  63. echo ("<h2>U hebt gezocht op beginletter: 0t/m9</h2>");
  64. if($aantalNummer == 0){
  65. echo "Er zijn nog geen films gevonden met begin letter <b>".$_GET["beginletter"]."</b>";
  66. }
  67. else{
  68. echo("Er zijn $aantalNummer resultaten gevonden.<br><br>");
  69. echo "<table>\n";
  70. echo "<tr>\n";
  71. echo "<td bgcolor=#2aff00 COLSPAN=2><b>Titel</b></td>\n";
  72. echo "</tr>";
  73. while ($rij = mysql_fetch_array($resultNummer)){
  74. echo "<tr>\n";
  75. echo "<td>".$rij["Titel"]."</td>\n";
  76. echo "<td bgcolor=#2aff00><a target=_blank href=".$rij["Imdb"]."><img border=0 src=imdb.jpg></a></td>\n";
  77. echo "</tr>\n";
  78. }
  79. }
  80. }
  81.  
  82. ?>
  83. </table>
  84. <hr>
  85. <a href="select.php">Kies een nieuwe beginletter.</a> | <a href="index.php">Ga terug naar het gehele overzicht.</a>
  86.  
  87. </body>
  88. </html>


Hopelijk kan iemand mij helpen, alvast bedankt.

6 antwoorden

Gesponsorde links
Offline ikkedikke - 13/03/2006 21:48 (laatste wijziging 13/03/2006 21:48)
Avatar van ikkedikke PHP expert
  1. <?
  2. if($aantal == 0){
  3. echo "Er zijn nog geen films gevonden met begin letter <b>".$_GET["beginletter"]."</b>";
  4. // alle films met de volgende letter zoeken
  5. $sSql = 'SELECT * FROM films WHERE ASCII(SUBSTRING(Titel,1,1)) > ASCII(SUBSTRING("'.addslashes($_GET["beginletter"].'",1,1))';
  6. }
  7. ?>
Offline daboytommy87 - 13/03/2006 22:11 (laatste wijziging 13/03/2006 22:11)
Avatar van daboytommy87 Nieuw lid Het werkt, hartstikke bedankt, heb alleen wel de query aangepast naar het volgende:

  1. <?php
  2. $queryNummer="SELECT * FROM film WHERE ASCII(SUBSTRING(Titel,1,1)) < ASCII(\"A\") ORDER BY Titel";
  3. ?>
Offline Thomas - 13/03/2006 22:24 (laatste wijziging 13/03/2006 22:25)
Avatar van Thomas Moderator Of

  1. SELECT *
  2. FROM whatever
  3. WHERE Titel REGEXP '^[^a-zA-Z]'


Geeft alle titels die niet met een letter beginnen.
Offline daboytommy87 - 13/03/2006 22:44
Avatar van daboytommy87 Nieuw lid Werkt inderdaad ook, en is een stuk korter. Maar heb de query van ikkedikke nog verder aangepast naar:

  1. SELECT *
  2. FROM film
  3. WHERE ASCII(SUBSTRING(Titel,1,1)) < ASCII('A') AND ASCII(SUBSTRING(Titel,1,1)) >= ASCII('0') ORDER BY Titel


Hierdoor krijg je echt alleen de getallen.

Is dat ook mogelijk met een REGEXP?
Offline BramBo - 14/03/2006 09:53
Avatar van BramBo JS gevorderde Die Query van FangorN zou ook alleen getallen moeten fetchen evt. [0-9] in je REGEXP maar dit is in theorie hetzelfde
Offline daboytommy87 - 14/03/2006 13:58
Avatar van daboytommy87 Nieuw lid Klopt, maar de notatie is een stuk korter 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.271s