Jeg er ved at lave en s�gefunktion til min database, men jeg
l�ber ind i et problem n�r i mn query:
Mit problem er at jeg skal s�ge efter variablen "$trimmed" i alle
felterne i min database.
"$trimmed" bliver sat via formen, i et input felt.
Min query ser s�dan ud nu:
$query = "SELECT * FROM clients WHERE firmanavn LIKE
\"%$trimmed%\" ";
"Clients" er selvf�lgelig min tabel og "firmanavn" er min collum,
men den skal ogs� kigge efter "$trimmed" i de andre collumns
(gade, postnr, by, navn, osv...)
P� forh�nd tak,
/Frederik Junkuhn
--
Vil du l�re at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- P�dagogiske tutorials p� dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
$query = "SELECT * FROM clients
WHERE (clients .firmanavn LIKE \"%$trimmed%\") OR "
(clients.gade LIKE \"%$trimmed%\") OR "
(clients.bynavn LIKE \"%$trimmed%\")
; "
osv.
..og s� b�r du forresten omd�be feltet 'by' til 'bynavn' el.lign - 'by'
er et reserveret ord i mange programmeringssprog og kan let give
problemer...
Det ser ikke ud til at virke...
Min query ser nu s�dan ud:
$query = "SELECT * FROM clients WHERE (clients.firmanavn LIKE
\"%$trimmed%\") OR (clients.gade LIKE \"%$trimmed%\") OR (clients.postnr
LIKE \"%$trimmed%\")";
Gert Krabsen wrote in dk.edb.internet.webdesign.serverside.php:
> Frederik Junkuhn skrev:
> > Hej,
> >
> > Jeg er ved at lave en s�gefunktion til min database, men jeg
> > l�ber ind i et problem n�r i mn query:
> >
> > Mit problem er at jeg skal s�ge efter variablen "$trimmed" i alle
> > felterne i min database.
> >
> > "$trimmed" bliver sat via formen, i et input felt.
> >
> > Min query ser s�dan ud nu:
> >
> > $query = "SELECT * FROM clients WHERE firmanavn LIKE
> > \"%$trimmed%\" ";
> >
> > "Clients" er selvf�lgelig min tabel og "firmanavn" er min collum,
> > men den skal ogs� kigge efter "$trimmed" i de andre collumns
> > (gade, postnr, by, navn, osv...)
> >
>
>
> $query = "SELECT * FROM clients
> WHERE (clients .firmanavn LIKE \"%$trimmed%\") OR "
> (clients.gade LIKE \"%$trimmed%\") OR "
> (clients.bynavn LIKE \"%$trimmed%\")
> ; "
>
>
> osv.
>
>
> ...og s� b�r du forresten omd�be feltet 'by' til 'bynavn' el.lign - 'by'
> er et reserveret ord i mange programmeringssprog og kan let give
> problemer...
>
og hvad sker der, n�r du k�rer den?
hint:
$result = mysql_query($query );
if (!$result) die ("Fejl i:".$query ." Fejl: ".mysql_error()."\n");
>
$query = "SELECT * FROM clients WHERE (clients.firmanavn LIKE \"%$trimmed%\")
OR (clients.gade LIKE \"%$trimmed%\") OR (clients.byen LIKE \"%$trimmed%\")";
$numresults=mysql_query($query, $db_link);
$numrows=mysql_num_rows($numresults);(DETTE ER LINIE 201)
if ($numrows == 0){
echo "<h2>Resultater</h2><br />";
echo "<p>Desv�rre, kan ikke finde: "" . $trimmed . "" i
databasen.</p>";
Gert Krabsen wrote in dk.edb.internet.webdesign.serverside.php:
Din fejlbesked relaterer sig jo ikke til, hvorfor sql'en g�r galt men
til en konsekvens af, at den _er g�et galt_. Nemlig at der ikke er nogle
r�kker i datas�ttet $numresults (fordi det ikke er dannet p� grund af en
fejl i sql'en).
Hint - det er den her, der er interessant:
if (!$result) die ("Fejl i:".$query ." Fejl: ".mysql_error()."\n");
idet den returnerer den fejl, der g�r, at mySql afviser sql'en
Frederik Junkuhn skrev:
Fejl i:SELECT * FROM clients WHERE (firmanavn LIKE "%pa%") OR (adresse LIKE
"%pa%") OR (byen LIKE "%pa%") Fejl:
Det ser ud som om jeg ikke f�r neget retur fra mysql_error()..
har placeret if-s�tninger s�ledes:
$query = "SELECT * FROM clients WHERE (firmanavn LIKE \"%$trimmed%\") OR
(adresse LIKE \"%$trimmed%\") OR (byen LIKE \"%$trimmed%\")";
$numresults=mysql_query($query, $db_link);
$numrows=mysql_num_rows($numresults);
if (!$result) die ("Fejl i:".$query ." Fejl: ".mysql_error()."\n");
Gert Krabsen wrote in dk.edb.internet.webdesign.serverside.php:
> Og hvad f�r du, hvis du g�r som jeg skrev?
>
> Din fejlbesked relaterer sig jo ikke til, hvorfor sql'en g�r galt men
> til en konsekvens af, at den _er g�et galt_. Nemlig at der ikke er nogle
> r�kker i datas�ttet $numresults (fordi det ikke er dannet p� grund af en
> fejl i sql'en).
>
>
> Hint - det er den her, der er interessant:
>
> if (!$result) die ("Fejl i:".$query ." Fejl: ".mysql_error()."\n");
>
> idet den returnerer den fejl, der g�r, at mySql afviser sql'en
>
>
>
> Frederik Junkuhn skrev:
> > Jeg f�r denne warning:
> > Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given
> > in /home/www/junkuhn.com/kunder.php on line 201
> >
> > $query = "SELECT * FROM clients WHERE (clients.firmanavn LIKE
\"%$trimmed%\")
> > OR (clients.gade LIKE \"%$trimmed%\") OR (clients.byen LIKE
\"%$trimmed%\")";
> > $numresults=mysql_query($query, $db_link);
> > $numrows=mysql_num_rows($numresults);(DETTE ER LINIE 201)
> > if ($numrows == 0){
> > echo "<h2>Resultater</h2><br />";
> > echo "<p>Desv�rre, kan ikke finde: "" . $trimmed . "" i
> > databasen.</p>";
> >
> >
>
>
>
>
>
>
>
>
>
>
>
> >
> >
> > Gert Krabsen wrote in dk.edb.internet.webdesign.serverside.php:
> >> Frederik Junkuhn skrev:
> >>> Hmm,
> >>>
> >>> Det ser ikke ud til at virke...
> >>>
> >>> Min query ser nu s�dan ud:
> >>>
> >>> $query = "SELECT * FROM clients WHERE (clients.firmanavn LIKE
> >>> \"%$trimmed%\") OR (clients.gade LIKE \"%$trimmed%\") OR (clients.postnr
> >>> LIKE \"%$trimmed%\")";
> >>>
> >>>
> >>
> >> og hvad sker der, n�r du k�rer den?
> >>
> >> hint:
> >>
> >>
> >> $result = mysql_query($query );
> >>
> >> if (!$result) die ("Fejl i:".$query ." Fejl: ".mysql_error()."\n");
> >>
> >>
> >>
> Jeg f�r dette retur:
>
> Fejl i:SELECT * FROM clients WHERE (firmanavn LIKE "%pa%") OR (adresse
> LIKE "%pa%") OR (byen LIKE "%pa%") Fejl:
I SQL bruger man _altid_ ' til litterals, og ikke ".
Muligvis underst�tter mySQL det, men det er ikke standard, s� pr�v:
SELECT * FROM clients WHERE (firmanavn LIKE '%pa%') OR (adresse LIKE '%pa%')
OR (byen LIKE '%pa%')
( i �vrigt beh�ver du ikke () i din OR s�tning)
--
Med venlig hilsen
Stig Johansen
$query = "SELECT * FROM clients WHERE firmanavn LIKE '%$trimmed%' OR adresse
LIKE '%$trimmed%' OR byen LIKE '%$trimmed%'";
Og jeg for stadig kun dette retur:
Fejl i:SELECT * FROM clients WHERE (firmanavn LIKE "%pa%") OR (adresse LIKE
"%pa%") OR (byen LIKE "%pa%") Fejl:
Stig Johansen wrote in dk.edb.internet.webdesign.serverside.php:
b�r vel v�re
$query = "SELECT * FROM clients
WHERE clients.firmanavn LIKE '%".$trimmed."%'
OR clients.adresse LIKE '%".$trimmed."%'
OR clients.byen LIKE '%".$trimmed."%'";
> Og jeg for stadig kun dette retur:
>
> Fejl i:SELECT * FROM clients WHERE (firmanavn LIKE "%pa%") OR (adresse LIKE
> "%pa%") OR (byen LIKE "%pa%") Fejl:
Hm. Sp�jst at fejlen ikke melder sig..
Hvad sker der hvis du eksekverer den dannede sql direkte i basen - via
phpMyAdmin?
Det ser ud til at virke fint n�r jeg k�re dette i foresp�rgelses vinduet:
SELECT * FROM clients WHERE clients.firmanavn LIKE '%pa%' OR clients.adresse LIKE
'%pa%' OR clients.byen LIKE '%pa%'
Men via sitet melder den stadig dette:
Fejl i:SELECT * FROM clients WHERE clients.firmanavn LIKE '%pa%' OR
clients.adresse LIKE '%pa%' OR clients.byen LIKE '%pa%' Fejl:
Gert Krabsen wrote in dk.edb.internet.webdesign.serverside.php:
> Hm. Sp�jst at fejlen ikke melder sig..
S� lige tidligere indl�g fra Frederikm med hans kode, og bem�rkede:
....
��������$numresults=mysql_query($query, $db_link);
��������if (!$result) die ("Fejl i:".$query ." Fejl: ".mysql_error()."\n");
....
han skal nok teste p� $numresults og ikke $result
Min query endte med at se s�dan ud:
$query = "SELECT * FROM clients WHERE
(clients.firmanavn LIKE '%".$trimmed."%')
OR (clients.adresse LIKE '%".$trimmed."%')
OR (clients.byen LIKE '%".$trimmed."%')";
Frederik Junkuhn wrote in dk.edb.internet.webdesign.serverside.php: