10. januar 2002 - 15:42Der er
13 kommentarer og 1 løsning
CASE og MySQL
Hej.
Jeg har et mindre problem med flg script:
<? switch ($info) { case \"$file\": include (\"sql.php\"); $result=mysql_query(\"select filnavn,tekst,forfatter,datoen from upload where filnavn=\'$file\'\"); $number = mysql_num_rows($result); while ($row = mysql_fetch_array($result)) { $info = \"Info om filen :\".$row[filnavn].\". Uploaded den \".$row[datoen].\" af \".$row[forfatter].\" <br>\".$row[tekst];} break; default: $info =\"Dette er en test.\"; break; }
$dl = \"c:/appserv/www/fvbk\"; //url where files are uploaded $absolute_path = \"internt\"; //Absolute path to where files are uploaded $list = \"<table width=300 border=0 bordercolor=#000000 style=\\\"border-collapse: collapse\\\">\"; $dir = opendir($absolute_path); while($file = readdir($dir)) { if (($file != \"..\") and ($file != \".\")) { $list .= \"<tr><td><div align=center>$file</div></td>\"; $list .= \"<td><div align=center><a href=?info=$file><IMG height=10 src=images/info.gif width=10 border=0 ALT=info></a></div></td></tr>\"; } } $list .= \"</table>\"; echo $list; ?><br> <? echo $info; ?>
Det eneste jeg får ud er defaultteksten når jeg trykker på linket??
Kan man ikke lægge en søgning ind i en CASE, eller hvad ???
De ligger i navnet $file, som er forskellig alt afhængig af hvilket fil man trykker på/kører musen henover. Derfor må man ve kunne føre variablen $file over i SQL-søgningen/CASEN, for hvis $list-erne skal flyttes op i CASEN, vil de vel ikke blive vist, da man ikke har trykket på noget link??
Dene eneste forskel her er at, man ikke angiver værdierne for de forskellige uploadede filer, da værdierne ligger i en DB, og skal hentes, når man klikker på den enkelte fil. Derfor skal der søges i DB, hvor $file skal være lig med filnavn i DB.
$dl og $absolute..... er jeg helt med på. De refererer i øjeblikket til min HDD, da jeg kører skidtet lokalt indtil det fungerer.
Eks på case fra en anden side jeg har lavet:
switch ($pres) { case \"per\": $pres=nl2br(\"Per S. Jørgensen\\n\\n\");$pic=\"per\"; break;
default: $pres =\"Dette er FVBKs 1. hold i herre-rækkerne.\";$pic=\"fvbk\"; break; }
Forskellen her og ovenfor er vel bare at navnet ($info//$pres), samt at variablerne i dette tilfælde er \"pers\" og mange andre , som jeg har slettet her. Hvor det ovenfor er en variabel $file, som angiver en forskellig værdi alt efter hvor linket/musen peger på. Den fører kun den ene værdi over (navnet på filen) når man trykker på linket, og derved skulle den sammenligne netop det valgte navn i $file med DB og spytte de andre værdier ud i DB som matcher $file (WHERE filnavn =$file)
Mit spg er om det kan lade sig gøre, og hvis det kan, hvor ligger fejlen/manglen i mit script..
if($pres==\"per\") { $pres=nl2br(\"Per S. Jørgensen\\n\\n\");$pic=\"per\"; } else { $pres =\"Dette er FVBKs 1. hold i herre-rækkerne.\";$pic=\"fvbk\"; }
Hvilket tydeligvis er kortere og mere overskueligt.
Jeg kan ikke fortælle dig hvor fejlen/manglen er, for jeg aner ikke hvad dit script skal gøre.
Jeg er enig med myplacedk i at jeg fortsat ikke aner hvad dit script skal gøre, og at din switch-sætning er mystisk. Kan du med eksempler forklare os hvad der skal ske?
torstein > Det kan jeg jo ikke lugte, vel? Et eksempel er ikke meget værd, hvis det ikke passer med virkeligheden.
Jeg vil foreslå at du rydder lidt op i dit script, og prøver at fortælle præcist hvad det er, det skal. Så er det langt nemmere at hjælpe dig.
Ikke ment så hårdt som det nok lyder, men: Jeg kan godt lide at lære fra mig, og gøre andre klogere. Men jeg synes virkelig ikke det er sjovt, at prøve at tyde underlige php-scripts og halve spørgsmål.
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.