zoeken in database

Status
Niet open voor verdere reacties.
Ik bewaar alle voorgaande versies de gemaakte PHP-files. In een van die versies maakte ik ook al gebruik van hetzelfde include-commando en verwijzing naar hetzelfd bestand. Toen was het resultaat van de zoekopdracht een lange lijst van bijna alle records.
Hierdoor weet ik zeker dat de database op de juiste manier wordt geopend en gebruikt.
Maar toch wordt met de huidige zoekoppdracht geen zoekresultaat weergegeven. Rara, hoe kan dat?
 
Heb je de query al aangevuld met or die(mysql_error());? Wellicht geeft je dat een hint. Dan weten wij ook wat er mis zou kunnen zijn.

Naar mijn weten staat op de vorige pagina een script dat hoort te werken.
 
Wanneer ik die code uitbreid tot:
Code:
$res = mysql_query("SELECT * FROM `bhe_files` WHERE titel LIKE '%$trefwoord%'") or die(mysql_error());
krijg ik geen resultaten te zien.
Voor de zekerheid nog even gekeken wat er gebeurt als ik een fout wachtwoord voor de database opgeef. Ik wijzig verbind.php en verander het wachtwoord en ja hoor, ik krijg een foutmelding dat het wachtwoord fout is.

Hoe (on)gevaarlijk is het als ik hier de link neerzet naar de gewraakte php-file, zodat jullie zelf het resultaat kunnen "zien".
 
Kan geen gevaar.
 
ok, op http://notenkraker.samendienen.nl/search.php staat het script, dat ik voor de volledigheid ook nog hieronder weergeef:
Code:
<html>

<head>
<title>Zoeken in database</title>
</head>

<body>
<?php
if (isset($_GET['trefwoord'])) {
  //Maak een connectie met de server en selecteer de database
  include('verbind.php');
    
  $trefwoord = $_GET['trefwoord'];
  //Haal de gegevens uit de tabel waar een woord als $_GET['trefwoord'] in voorkomt.
  $res = mysql_query("SELECT * FROM `bhe_files` WHERE titel LIKE '%$trefwoord%'") or die(mysql_error());
  
  //Begin html
  echo '
          <table>
           <tr>
             <td><b>Zoekresultaten</b></td>
           </tr>';
                
  //Weergeef gegevens
  while ($row = mysql_fetch_array($res)) {
    echo '<tr><td>'. $row->titel .'</td></tr>';
  }
  //Sluit tabel
  echo '</table>';
}
//Als er nog niet is gezocht
else {
echo '
<form method="GET">
    <table>
        <tr>
            <td colspan="2"><b>Zoeken in database</b></td>
        </tr>
        <tr>
            <td>Trefwoord:</td>
            <td>
                <input type="text" name="trefwoord" />
            </td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Zoeken"></td>
        </tr>
    </table>
</form>';
}
?>
</body>

</html>

In bericht #17 staat het script verbind.php

Ik hoop dat een van jullie in staat is mij te helpen en de fout te vinden.
 
Laatst bewerkt:
Ik heb zelf even zo'n scriptje gemaakt en bij mij werkt hij wel.

Ik denk dat ik jouw fout heb gevonden.

Haal de single quotes eens uit de query.
PHP:
$res = mysql_query("SELECT * FROM bhe_files WHERE titel LIKE '%$trefwoord%'") or die(mysql_error());

Ik had ze eerst zonder, toen kreeg ik netjes een pagina. Daarna deed ik quotes om de tabelnaam en toen kreeg ik meteen
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/***/domains/***.net/public_html/taken/zoek.php on line 14

terwijl ik niet eens or die(mysql_error()); er achter had staan.
 
Laatst bewerkt:
Ik heb de kwootjes weggehaald, maar ook nu geen resultaat.
Ter info: de file search6.php geeft wel een zoekresultaat (weliswaar veel te veel). Voor de volledigheid de inhoud van search6.php:
Code:
<html>

<head>
<title>Zoeken in database</title>
</head>

<body>
<?php
if (isset($_GET['trefwoord']))
{
    //Maak een connectie met de server en selecteer de database
    include('verbind.php');
    
    //Haal de gegevens uit de tabel waar een woord als $_GET['trefwoord'] in voorkomt.
    $res = mysql_query("SELECT * FROM `bhe_files` WHERE titel LIKE '%$trefwoord%'");
    
    //Begin html 
    echo '
            <table>
                <tr>
                    <td><b>Zoekresultaten</b></td>
                </tr>';
                
    //Weergeef gegevens
    while ($row = mysql_fetch_object($res))
    {
        echo '
                <tr>
                <td>'. $row->titel .'</td></tr>'; 
    }
    
    //Sluit tabel
    echo '</table>';
                    
}

//Als er nog niet is gezocht
else
{
echo '
<form method="GET">
    <table>
        <tr>
            <td colspan="2"><b>Zoeken in database</b></td>
        </tr>
        <tr>
            <td>Trefwoord:</td>
            <td>
                <input type="text" name="trefwoord" />
            </td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Zoeken"></td>
        </tr>
    </table>
</form>';
}
?> 
</body>

</html>
 
Hmm ik denk dat ik dan op iets terug moeten komen...

$row['titel'] is dus niet gelijk aan $row->titel

PHP:
<html>

<head>
<title>Zoeken in database</title>
</head>

<body>
<?php
if (isset($_GET['trefwoord'])) {
  //Maak een connectie met de server en selecteer de database
  include('verbind.php');
    
  $trefwoord = $_GET['trefwoord'];
  //Haal de gegevens uit de tabel waar een woord als $_GET['trefwoord'] in voorkomt.
  $res = mysql_query("SELECT * FROM 'bhe_files' WHERE titel LIKE '%$trefwoord%'") or die(mysql_error());
  
  //Begin html
  echo '
          <table>
           <tr>
             <td><b>Zoekresultaten</b></td>
           </tr>';
                
  //Weergeef gegevens
  while ($row = mysql_fetch_array($res)) {
    echo '<tr><td>'. $row['titel'] .'</td></tr>';
  }
  //Sluit tabel
  echo '</table>';
}
//Als er nog niet is gezocht
else {
echo '
<form method="GET">
    <table>
        <tr>
            <td colspan="2"><b>Zoeken in database</b></td>
        </tr>
        <tr>
            <td>Trefwoord:</td>
            <td>
                <input type="text" name="trefwoord" />
            </td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Zoeken"></td>
        </tr>
    </table>
</form>';
}
?>
</body>

</html>
Try it
 
Het zit niet mee. Ook dit werkt niet. Ik krijg echter wel een foutmelding te zien:
Code:
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 ''bhe_files' WHERE titel LIKE '%zoek%'' at line 1
Voor de goede orde: mijn server gebruikt MySQL client version: 4.1.20
 
Heb je PHPMyAdmin? Voer daar die query eens uit en kijk of daar een resultaat komt. (Database selecteren > SQL)
 
In plaats van
Code:
SELECT * FROM 'bhe_files' WHERE titel LIKE '%$trefwoord%'
vul ik in PHPMyAdmin in
Code:
SELECT * FROM 'bhe_files' WHERE titel LIKE 'Gaat'
Resultaat:
Code:
SQL-query: Documentatie

SELECT *
FROM 'bhe_files'
WHERE titel LIKE 'Gaat'
LIMIT 0 , 30

MySQL retourneerde: Documentatie
#1064 - 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 ''bhe_files' WHERE titel LIKE 'Gaat'
LIMIT 0, 30' at line 1

De helptekst is voor mij niet duidelijk.
 
en vul dit eens in:
Code:
SELECT * FROM bhe_files WHERE titel LIKE '%gaat%'
 
en vul dit eens in:
Code:
SELECT * FROM bhe_files WHERE titel LIKE '%gaat%'

Als ik dit invul in MySQL, dan krijg ik, precies zoals verwacht, een lijstje met titels.

Maar als ik in mijn php-file de zin aanpas:
Code:
$res = mysql_query("SELECT * FROM bhe_files WHERE titel LIKE '%$trefwoord%'");
, dan krijg ik geen resultaat. Waardoor zou dat komen?
 
Dit is het script welke ik heb gebruikt, pas het eens aan naar jouw database en kijk of er schot in de zaak zit:
PHP:
<?php
$host = "localhost";
$username = " ";
$password = " ";
$database = " ";
$connection = mysql_connect($host, $username, $password);
$database = mysql_select_db($database, $connection);
 
if(isset($_GET['trefwoord'])) {
  $trefwoord = $_GET['trefwoord'];
  $query = "SELECT * FROM bhe_files WHERE titel LIKE '%$trefwoord%'";
  $result = mysql_query($query);
  echo '<table><tr><td><b>Resultaten</b></td></td>';
  while($row = mysql_fetch_array($result)) {
    echo '<tr><td>'. $row['naam'] .'</td></tr>';
  }
  echo'</table>';
} else {
echo '
<form method="GET">
    <table>
        <tr>
            <td colspan="2"><b>Zoeken in database</b></td>
        </tr>
        <tr>
            <td>Trefwoord:</td>
            <td>
                <input type="text" name="trefwoord" />
            </td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Zoeken"></td>
        </tr>
    </table>
</form>';
}
?>

Als die niet werkt dan weet ik het ook niet meer :(
 
Ik neem aan dat ik eigenlijk alleen maar de regels 3, 4 en 5 moet aanpassen?
Helaas krijg ik nog steeds geen resultaten op het scherm...
Kan ik evt. foutmeldingen die een dergelijke PHP-file veroorzaakt ook op het scherm laten weergeven of is dit slechts een functie binnen PHPMyAdmin?
 
Is wel mogelijk, dan moet je deze regel even bovenaan het script zetten.

PHP:
error_reporting(E_ALL);
 
Ja, door die mysql_error() te gebruiken, maar als dat ook niet werkt zit er iets niet helemaal goed in je code. Ik lig er overigens ook af, maar het enige dat je nog kunt proberen is het volgende:

PHP:
  $query = "SELECT * FROM bhe_files WHERE titel LIKE '%$trefwoord%'"; 
  echo $query;
  $result = mysql_query($query);

En dan de query kopiëren in PHPMA.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan