php søgning i sql

Tags:    php

<< < 12 > >>
Hej
Er der nogen der kan hjælpe mig med at fejlsøge i denne søgecode...? den viser slet ikke noget når jeg søger...

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 15.02.2008 17:37 af Bruger #10467
11 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Prøv at <?
$s_soeg = mysql_query("SELECT id FROM nyheder WHERE overskrift AND nyhed LIKE '%$_POST[sogeord]%' ORDER BY id") or die(mysql_error());
$soeg = mysql_num_rows($s_soeg);

if($soeg == '0' OR $_POST[sogeord] == '') {
print"Søgningen gav ingen resultater.";
} else {
$s_vis = mysql_query("SELECT * FROM nyheder WHERE overskrift LIKE '%$_POST[sogeord]%' ORDER BY id DESC LIMIT 999") or die(mysql_error());
WHILE($vis = mysql_fetch_array($s_vis)) {
$dato = date("d",$vis[tid]);
$mon = date("m",$vis[tid]);
$year = date("Y",$vis[tid]);
$tidspunkt = date("H:i:s",$vis[tid]);
print"<span class=\\"linkNyhed\\"><a HREF=\\"nyhed.php?id=$vis[id]\\">$vis

</a></span> ($dato-$mon) <br />";
}
}
?>

Sæt denne kode ind, og derefter sig hvad fejl du får..







if(!$result) echo mysql_error();

Prøv den efter hver af dine SQL kald, hvor du udskifter $result med hvad end der indeholder resultatet af din SQL forespørgsel

Fold kodeboks ind/udKode 


Og skriv så hvad den siger til dig. Det er vidst det der er fejlen.

Med venlig hilsen
Ieet





din felj er stor :).

1. test altid først om inddata er valid før du brugere db'en, altså test om søgningen er tom først.

2. din første query er forkert "overskrift AND nyheder LIKE..." fejler kun hvis søgningen ikke er i nyheder eller hvis der over hovedet ikke er nogen overskrift. skulle være "overskrift LIKE '%$_POST[sogeord]%' OR nyheder LIKE '%$_POST[sogeord]%'"

3. såfremt du anden query er tidspilde, du kunne sætte sorteringen og limit ind i den første query og rette id til *.




Som Nørden allerede har være inde på, så skal du altid teste de data du får via _POST, _GET, _REQUEST, _COOKIE, _FILE, osv. ALTID - ingen untagelser.


For at undgå at nogen kan bryde ud af et sql statement, skal du altid sørge for at evaluere de data du bruger. Du kan sagtens bruge php's indbyggede funktioner, de er ganske glimrende...

MEN!!!! PHP er på igen måde specielt type stærtk... og har heller ikke tvungen variable decleration, imodsætning til mange andre sprog. Derfor bliver du, hvis du vil ha' en 100% garanti for at man ikke kan bryde ud af dinne sql statements, lave dig en funktion som evaluere de data du får....



lol ;D

Hvad med at bruge include ? + kun at sende de php filer, som der er problmer med, istedet for at sende 869 linjer, som der kun er html på ? :P..

Jeg gider slet ikke til at finde efter fejlen, i alt det php :P.. og btw. hvorfor sætter du xxx ved dit brugernavn/database ? :P

hehe... Men kan da godt hjælpe hvis du fjerner alt dit html, og kun giver mig php koderne..



Ro på piben sømand:-) synes bare det var nemmest at indsætte hele php filen... jeg sætter xxx fordi jeg ik gider have nogen skal snage i min database?!

Fold kodeboks ind/udKode 




jaja, men folk kan ikke "snage" i din database, uden password :S:S



næ men det er måske lidt nemmere hvis man kender brugernavn/database....



hehe, tror jeg nu ikk..

Men kan desv. ikke hjælpe dig, fordi din kode er for rodet :/

Desværre !! :(




Hej Frederik

Hvis du vil at vi skal hjælpe dig, vil jeg anbefale at du poster din PHP kode og udelader HTML koden - Det gør tingene noget nemere. Også, for at kunne lokalisere fejlen ville det være en do ide at kende til tabel strukturen over de tabeller som de tabeller du vil lave en SQL-Query på. Lige umidbart kan jeg ikke se nogen syntax fejl i dinne queries, så der må graves lidt dybere.


:-)





<< < 12 > >>
t