/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
SQL SELECT forespørgsel - vælg flere kolon~
Fra : Frederik Junkuhn


Dato : 14-12-09 13:39

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...)


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

 
 
Gert Krabsen (14-12-2009)
Kommentar
Fra : Gert Krabsen


Dato : 14-12-09 13:50

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...


Frederik Junkuhn (14-12-2009)
Kommentar
Fra : Frederik Junkuhn


Dato : 14-12-09 14:12

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%\")";
   


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...
>


--
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

Gert Krabsen (14-12-2009)
Kommentar
Fra : Gert Krabsen


Dato : 14-12-09 14:46

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");












>

Frederik Junkuhn (14-12-2009)
Kommentar
Fra : Frederik Junkuhn


Dato : 14-12-09 14:48

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: &quot;" . $trimmed . "&quot; 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");
>
>
>
>
>
>
>
>
>
>
>
>
> >


--
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

Gert Krabsen (14-12-2009)
Kommentar
Fra : Gert Krabsen


Dato : 14-12-09 15:03

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: &quot;" . $trimmed . "&quot; 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");
>>
>>
>>

Frederik Junkuhn (14-12-2009)
Kommentar
Fra : Frederik Junkuhn


Dato : 14-12-09 16:47

Jeg får dette retur:

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");
> >>
> >>
> >>


--
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

Stig Johansen (14-12-2009)
Kommentar
Fra : Stig Johansen


Dato : 14-12-09 17:07

Frederik Junkuhn wrote:

> 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

Frederik Junkuhn (14-12-2009)
Kommentar
Fra : Frederik Junkuhn


Dato : 14-12-09 17:28

Det virker stadig ikke for mig. Jeg har prøvet både med og uden (). ;in query
ser sådan ud nu:

$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:
> Frederik Junkuhn wrote:
>
> > 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


--
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

Gert Krabsen (14-12-2009)
Kommentar
Fra : Gert Krabsen


Dato : 14-12-09 17:40

Frederik Junkuhn skrev:
> Det virker stadig ikke for mig. Jeg har prøvet både med og uden (). ;in query
> ser sådan ud nu:
>
> $query = "SELECT * FROM clients WHERE firmanavn LIKE '%$trimmed%' OR adresse
> LIKE '%$trimmed%' OR byen LIKE '%$trimmed%'";

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?




Frederik Junkuhn (14-12-2009)
Kommentar
Fra : Frederik Junkuhn


Dato : 14-12-09 17:57

god ide at prøve i 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:
> Frederik Junkuhn skrev:
> > Det virker stadig ikke for mig. Jeg har prøvet både med og uden (). ;in query
> > ser sådan ud nu:
> >
> > $query = "SELECT * FROM clients WHERE firmanavn LIKE '%$trimmed%' OR adresse
> > LIKE '%$trimmed%' OR byen LIKE '%$trimmed%'";
>
> 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?
>
>
>


--
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

Stig Johansen (15-12-2009)
Kommentar
Fra : Stig Johansen


Dato : 15-12-09 03:03

Gert Krabsen wrote:

> 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

--
Med venlig hilsen
Stig Johansen

Gert Krabsen (14-12-2009)
Kommentar
Fra : Gert Krabsen


Dato : 14-12-09 17:40

Stig Johansen skrev:
> Frederik Junkuhn wrote:
>
>> 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)
>
Nej, men bliver sqllen bare lidt mere kompliceret end denne kan det
hjælpe gevaldigt på overblikket

Frederik Junkuhn (16-12-2009)
Kommentar
Fra : Frederik Junkuhn


Dato : 16-12-09 11:59

Så virker det! Tak for hjælpen..

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:
> 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...)
>
>
> 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


--
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

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409075
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste