Avatar billede Slettet bruger
15. august 2001 - 23:18 Der er 7 kommentarer og
1 løsning

Søgeting fungerer...næsten

Jeg har følg. kode:

$betingelse = \"id >= \'1\'\";

if ($online == \'1\') {
$betingelse = \"SELECT * FROM profiler, online WHERE profiler.profilnavn = online.profilnavn AND $betingelse\";
}
else
{
$betingelse = \"SELECT * FROM profiler WHERE $betingelse\";
}

///Searches for words in beskrivelse///

if ($kun_tekst_soeg == \'1\')
{
$betingelse = \"SELECT * FROM profiler WHERE profilnavn != \'ddflfl\'\";
}


$words = str_replace(\"&\",\" \",$tekst_soeg);
$words = str_replace(\"+\",\" \",$words);
$words = str_replace(\",\",\" \",$words);
$words = ereg_replace(\'( +)$\',\',\',$words) .\".\";
$words = str_replace(\",,\",\",\",$words);
$words = str_replace(\".\",\"\",$words);
$words2 = $words;
$words = split(\",\", $words);
$number_of_words = count($words);

$i = -1;
do {
++$i;
$betingelse = \"$betingelse AND (beskrivelse like \'%$words[$i]%\' OR\";

} while ($tal-1 > $i);
$betingelse = \"$betingelse beskrivelse like \'%$words[$i]%\')\";

///end search with words///

///find a specific user profile///
if ($soeg_profil != \'\')
{
$betingelse = \"SELECT * FROM profiler WHERE profilnavn LIKE \'%$soeg_profil%\'\";
}
///end find specific user profile///

Tag jer ikke af at kommentarerne er på engelsk, de er mine fra et gammelt projekt.

Mit problem er at når linien med

if ($online == \'1\') {
$betingelse = \"SELECT * FROM profiler, online WHERE profiler.profilnavn = online.profilnavn AND $betingelse\";
}

eksekveres får jeg en \"Warning: Supplied argument is not a valid MySQL result resource\" og feltet \'profilnavn\' findes både i tabellen profiler og online, og de har også samme værdi..

Sig til hvis jeg skal poste hele koden..

Jeg mener at det burde kunne lade sig gøre på den måde jeg har lavet det..men..
Avatar billede mukke Nybegynder
16. august 2001 - 00:00 #1
Har du prøvet at udskrive/printe $betingelse lige inden du fører SQL-sætningen af?

Det er min erfaring at man ofte her finder synderen i en uheldig sammensat sætning der ikke har taget højde for alle \"sammensætninger\".

Håber det giver mening. ;-)
Avatar billede Slettet bruger
16. august 2001 - 00:04 #2
Ja, det gør jeg altid :) Her er hvad jeg fik:

SELECT * FROM profiler, online WHERE profiler.profilnavn = online.profilnavn AND id >= \'1\' AND (beskrivelse like \'%%\' OR beskrivelse like \'%%\')

Og det ser jo meget ok ud...
Avatar billede mukke Nybegynder
16. august 2001 - 00:09 #3
OK... kører også fint i min mysql klient.... (andre felter til at matche en database jeg har men ellers det samme.)

hvad er det egentlig der giver den fejl? MYSQL eller dit sprog? (Perl?)
Avatar billede mukke Nybegynder
16. august 2001 - 00:12 #4
Hvis du har terminal adgang, så check evt. /var/log/messages og/eller evt. mysql log for interessante beskeder.
Avatar billede Slettet bruger
16. august 2001 - 00:23 #5
Nåh, men jeg fandt ud af det...lav et svar sår får du de 30 point for dit forsøg... :)

Det er ikke nemt med de sætninger...jeg havde lige overset nogle \"if\" huller..

BTW: Jeg kører MySQL/PHP og har ikke promt adgang..desværre..men nu virker det!

Du kan evt. lige se det i funktion på http://www.datefinder.dk/divxit.dk/soeg_profil.php

Du skal ikke tænke på JavaScript fejl, det er fordi det er del af et frameset..

Avatar billede mukke Nybegynder
16. august 2001 - 00:26 #6
Ok glad for det virker!

mht. pointsene så takker jeg pænt nej - nåede jo aldrig særlig langt i mine forsøg på at hjælpe, så da det var dig der fandt problemet, så skal du da selv beholde dem. ;-)
Avatar billede Slettet bruger
16. august 2001 - 00:29 #7
Nåh, men så tak alligevel...*S* Det er ved at blive sent for min trætte hjerne...
Avatar billede Slettet bruger
16. august 2001 - 23:33 #8
lukker lige..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester