[php] zoeken in db maar geeft fout

Status
Niet open voor verdere reacties.

djwouter

Gebruiker
Lid geworden
23 aug 2008
Berichten
142
hallo ik krijg steets een foutmelding met het volgende script wat ik ook zoek hij haalt niks uit de database....

de zoek actie gaat goed tot dat hij een mysql functie moet doen dan gaat het fout... wat zou het kunnen zijn ?

hier onder het script (php gedeelte dan he )

de functie voor zoekterm werkt wel ;) de variable zoek komt vanaf een GET functie



PHP:
<?
    //-- natuurlijk moet er eerst een connectie met de database worden gemaakt:
    if (!@mysql_select_db("muziek", @mysql_connect("localhost", "root", "usbw")))
    {
        echo "Er kan geen database connectie gemaakt worden.";
        exit();
    }

    //-- $HTTP_POST_VARS[zoekterm] is de naam van het zoekveld in het formulier wat we 
    //-- hebben gemaakt in het vorige 'hoofdstuk'. Dit is dus de SQL code:
    $sql = "SELECT cd,cd_nummer,titel,groten,type FROM muziek_db WHERE titel LIKE $zoek";
    
    //-- voer de SQL code uit en zet dit in een variabele zodat we zometeen kunnen 
    //-- kijken of er een resultaat is
    $res = mysql_query($sql);
    
    //-- bekijk nu of er een resultaat is, of het zoekwoord dus gevonden is of niet
    if (mysql_num_rows($res) >= 1)
    {
        //-- er is een resultaat gevonden, toon de resultaten via een while () loop
        while ($row = mysql_fetch_array($res))
        $num = mysql_num_rows($res); 
		
		echo" <table width=\"986\" border=\"1\">
  <tr>
    <th width=\"53\" scope=\"col\">cd </th>
    <th width=\"112\" scope=\"col\">cd nummer</th>
    <th width=\"580\" scope=\"col\">titel</th>
    <th width=\"87\" scope=\"col\">grote</th>
    <th width=\"120\" scope=\"col\">type</th>
  </tr>
";
		
		$i=0;
        while ($i < $num) {
		{
			
			echo" <tr>
    <td></td>
    <td>$row[cd]</td>
    <td>$row[cd_nummer]</td>
    <td>$row[titel]/td>
    <td>$row[type]</td>
  </tr> ";
            
			$i++;
}
echo "</table>"; 
		}
        
        echo "<a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
    }
    //-- als er geen resultaat is gevonden, dus als het zoekwoord niet gevonden is:
    else
    {
        echo "<p>Er is niets gevonden op jou zoekterm:<b> $zoek </b></p>";
        
        echo "<p><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
    }
?>
de foutmelding


Code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\muziek db\UsbWebserver\Root\zoek.php
 
Het kan aan verschillende dingen liggen:

1. $zoek in je query moet nog tussen quotes
2. De waarde van $zoek is niet gevuld
3. Er is geen goede connectie met de database
4. De query klopt niet, m.a.w. de velden die je opvraagt, komen niet overeen met de velden in de database.
 
Het kan aan verschillende dingen liggen:

1. $zoek in je query moet nog tussen quotes
....
de database.

wat bedoel je hier mee ?

in de sql regel ?

de rest is alemaal goed

heb het nog een keer gecontroleert zelfs ale spaties in database vervangen door _

ik weet niet wat het moet zijn...

wat er staat de hele tijd er is niets gevonden op jou zoek term: en dan staat er wat ik in getypt heb bij zoeken,,,

de dat gaat goed de sql lijn is goed dan,,,

wat zou het kunnen zijn ?
 
Nee, de query gaat niet goed, daarom krijg je de error.

Probeer eens:

PHP:
$sql = "SELECT cd,cd_nummer,titel,groten,type FROM muziek_db WHERE titel LIKE '"  . $zoek . "'";
 
Doe eens een
PHP:
echo mysql_error();

Dan krijg je als het goed is de beschrijving van de fout die er optreed.
 
deze error krijg ik,

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 'WHERE titel LIKE 'Dj'' at line 4

ik weet echt niet wat ik fout doe,,,,

Code:
$querynieuws = "
				SELECT * 
				FROM muziek_db 
				ORDER BY cd DESC 
				WHERE titel LIKE '".$zoek."' 
				";

de sql
 
hij heeft geeft nu aleen de lege rij aan als ik niks in vul maar als ik iets in vul dan pakt hij hem niet...

PHP:
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

				$querynieuws = "
				SELECT * 
				FROM muziek_db 
				WHERE titel LIKE '".$zoek."'
				ORDER BY cd DESC 
				
				";
				mysql_query($querynieuws)or die(mysql_error());
$resultnieuws = (mysql_query($querynieuws));

$numnieuws = (mysql_num_rows($resultnieuws));

mysql_close();



$inieuws=0;


while ($inieuws < $numnieuws) 

{
	
echo" <table width=\"930\" border=\"1\">
  <tr>
    <th width=\"53\" scope=\"col\">cd </th>
    <th width=\"112\" scope=\"col\">cd nummer</th>
    <th width=\"580\" scope=\"col\">titel</th>
    <th width=\"87\" scope=\"col\">grote</th>
    <th width=\"120\" scope=\"col\">type</th>
  </tr>
";	

$cd=mysql_result($resultnieuws,$inieuws,"cd");
$cd_nummer=mysql_result($resultnieuws,$inieuws,"cd_nummer");
$titel=mysql_result($resultnieuws,$inieuws,"titel");
$groten=mysql_result($resultnieuws,$inieuws,"groten");
$type=mysql_result($resultnieuws,$inieuws,"type");


echo "<tr>
    <td>$cd</td>
    <td>$cd_nummer</td>
    <td>$titel</td>
    <td>$groten</td>
    <td>$type</td>
  </tr>


";

$inieuws++;
}



?>
 
hij doet het nu wel... maar ik moet PRESIES invullen wat er in de rij staat...

ik wil eigenlijk hebben dat als ik een artiest in typ ofzo dat hij hem dan ook weergeeft....

ho moet ik dat dan doen ?
cd cdnummer titel grote type
1 1 Starkoo - Laat Me Nu Toch Niet Alleen.mp3 9.182,8 MPEG Layer 3 Audio File

dit is mijn tabel
 
Laatst bewerkt:
Je kunt een procent teken als wildcard gebruiken.

[sql]
SELECT *
FROM table
WHERE field LIKE 'a%'
[/sql]

Dit geeft als resultaten alle rijen die beginnen met een 'a'.

[sql]
SELECT *
FROM table
WHERE field LIKE 'a%b'
[/sql]

Dit geeft alle resultaten die beginnen met een 'a' en eindigen met een 'b'

Succes ;)
 
heel erg bedankt dit is al een goede stap in in de goede richting hij werkt nu bijna na behoren.

nu heb ik nog een vraag kan ik het ook nog zo maken dat hij zoekt over het hele stuk zoekt nu kan ik aleen vanaf het begin zoeken maar ik wil bijvoorbeeld de titel zoeken,,,

is dit mogelijk ?
 
Sorry maar die begrijp ik niet helemaal? Je zoekt nu toch in de titel? Dan zou hij ook alleen daar moeten zoeken.
 
hij zoekt nu aleen op de begin letters....

als ik nou een record heb bijv deze Starkoo - Verliefd Zijn.mp3

en ik zoek op Verliefd zijn dat hij hem dan ook vind....
 
Gewoon zoeken op '%$zoek%';

Dan krijg je alles met $zoek erin.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan