Avatar billede nyst Nybegynder
30. maj 2005 - 13:25 Der 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 "&raquo; <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.

Kan det lade sig gøre???

:-)
Avatar billede mrgumble Nybegynder
30. maj 2005 - 15:57 #1
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.
Avatar billede nyst Nybegynder
01. juli 2005 - 11:31 #2
Hej igen har haft et længere nedbrud pga tdc og omlægning af internetforbindelsen - håber du er der endnu.

Kunne ikke få dit forslag til at virke, men vil hellere vælge en anden løsning som kort beskrives her.

Jeg har en fil som henter og lister alle filer som ovenfor den ser sådan ud:

<form method="post" action="list.php">
<input type="text" name="sider" value="Klik til siderne">
<input type="submit" value="Vis">
</form>

list.php er så den kode du ser øverst.

Det jeg gerne vil er at i stedet for at vælge alle filer , så vælges via select-form de filer der vedrører 'afd' og har prøvet denne:

<form method="post" action="list.php">
<select name="afd" onchange="location.href = this.options[this.selectedIndex].value" style="font-size : 9px;">
<option value=" " selected>Vælg afdeling &raquo;</option>
<option value="700">afd 7</option>
<option value="800">afd 8</option>
(osv osv)
</select>
    <noscript>
  <input type="submit" value=" &raquo; " style="font-size : 9px;" />
  </noscript>
</form>

dog kan jeg ikke få den til at vise noget den skifter bare til en side den ikke kan finde som så hedder feks /800

Kan du hjælpe med denne løsning???

:-)
Avatar billede mrgumble Nybegynder
02. juli 2005 - 16:53 #3
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".
Avatar billede nyst Nybegynder
02. juli 2005 - 22:34 #4
hejsa,
jo men det giver samme problem med at den i browser xxxxlist.php?afd=700

og ikke henter sider for afd 700

mon det er denne

$hent = mysql_query("SELECT indeks, list FROM sider WHERE list<>'' ORDER BY list")

der skal ændres - har indsat afd
$hent = mysql_query("SELECT afd, indeks, list FROM sider WHERE list<>'' ORDER BY
list")

men uden resultat.

Hvad kan der være galt...
Avatar billede mrgumble Nybegynder
03. juli 2005 - 01:46 #5
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);
Avatar billede nyst Nybegynder
04. juli 2005 - 09:30 #6
Det kan jeg godt se nu og har fået det til at virke.

Takker mange gange for din store hjælp og pointer dig.

:-)
Avatar billede mrgumble Nybegynder
04. juli 2005 - 10:57 #7
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.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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