30. maj 2005 - 13:25Der er
6 kommentarer og 1 løsning
list opdelt over flere sider
hej, jeg har
if (isset($_POST['sider'])) { $hent = mysql_query("SELECT indeks, list FROM sider WHERE list<>'' ORDER BY list") or die(mysql_error()); print "Klik på linket til den side du ønsker at rette i:<br /><br />"; while ($data = mysql_fetch_array($hent)) { echo "» <a href='ret.php?indeks=".$data['indeks']."&tabel=".$_POST['sider']."'>".$data['list']."</a><br />"; }
som jeg gerne vil udvide til at kunne list'e på flere sider da de ellers bliver forlange.
Har et felt 'afd' som er et tal og vil gerne have list fordelt så den skifter side ved hvert tal i afd.
Hvis jeg har forstået dig ret, så vil du gerne inddele dine sider efter feltet 'afd'? Hvorfor så ikke skrive "SELECT index, list FROM sider WHERE (afd = 'xxx' AND list != '') ORDER BY list")? Og så den der list <> '', kan måske omskrives til LENGTH(list) != 0. Hvis tekst-sammenligningsfunktioner omskrives til numerisk-sammenligningsfunktioner går det måske hurtigere, men er dog ikke helt sikkert.
PS. Hvis du i stedet vil vise f.eks. række 1 tom. 30 pr. side, så undersøg LIMIT: SELECT index, list FROM sider ORDER BY list LIMIT 0, 29 Dette vil vise de første 30 rækker.
Det sidste problem, at den skifter til siden '800', er din linie onchange="...". På dansk siger du deri: "henvis til værdien af den valgte option". Problemet er, at dine options værdier hedder blot '700', '800' etc. Du kunne f.eks. løse det ved: "location.href = 'http://www.hovsa.dk/listfiles.php?afd='+this.options[this.selectedIndex].value".
Jeg syntes du skal tage og kigge godt og grundtigt på din sql-strenge: "SELECT indeks, list FROM sider WHERE list<>'' ORDER BY list" oversat til dansk betyder: Vælg felterne 'indeks' og 'list' i de rækker, hvor feltet 'list' IKKE er tomt (list<>''), og sorter stakken ud fra feltet 'list'. Den ændrede version bliver til: Vælg felterne 'afd', 'indeks' og 'list' i de rækker, hvor feltet 'list' IKKE er tomt (list<>''), og sorter stakken ud fra feltet 'list'.
På hvilket tidspunkt skriver du, at du kun vil have de rækker, hvor afd = 700?? INGEN STEDER!
Derfor skal/kan du ændre din sql til: $afd = 700; // Kan også sættes lig $afd = $_POST['afd']; $sql = "SELECT indeks, list FROM sider WHERE (afd = $afd) ORDER BY list"; $hent = mysql_query($sql);
Lige et lille råd. Grunden til, at jeg har delt min $sql og mysql_query op på to linier er, at så kan jeg bedre finde fejl. Når tingene ikke sker som jeg de skal, kan jeg printe $sql, afprøve den i f.eks. phpMyAdmin og derved tjekke om det er min sql eller php der er problemet.
Synes godt om
Ny brugerNybegynder
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.