webForumDet fria alternativet

paging?

15 svar · 360 visningar · startad av jboy_87

jboy_87Medlem sedan aug. 20011 099 inlägg
#1

varför vill inte paging funka.. får inga felmess , men när jag bläddrar till sid 2 så visas inga poster?

<?$sql = "SELECT Count(ID1) from kompisar where Till = '{$_SESSION['anvandarnamn']}' 
                  and accepterad = 1 or Fran = '{$_SESSION['anvandarnamn']}' and accepterad = 1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$antal = mysql_result($result, 0);
echo $antal

$inlaggPerSida = 1; // sidor

$pageNumbers = ceil($antal/$inlaggPerSida); 

if (isset($HTTP_GET_VARS["sida"])){ 
    $sida = $HTTP_GET_VARS["sida"]; 
} else $sida = 1; 

$start = ($sida-1) * $inlaggPerSida; 

// paging

$sql = "SELECT kompisar.*, medlemmar.* FROM kompisar
INNER JOIN medlemmar ON medlemmar.Anvandarnamn = kompisar.till Where 
kompisar.fran = '{$_SESSION['anvandarnamn']}' and accepterad = 1 union all 
SELECT kompisar.*, medlemmar.* FROM kompisar INNER JOIN medlemmar 
ON medlemmar.Anvandarnamn = kompisar.fran Where kompisar.till = '{$_SESSION['anvandarnamn']}'
and accepterad = 1 Order by Till ASC,status DESC LIMIT $start,$inlaggPerSida";
$result = mysql_query($sql);?>
MatteMedlem sedan aug. 20002 975 inlägg
#2

Hur ser länkningen till sida 2 ut?

Om du som test ändrar din andra SQL-fråga till:

$sql = "SELECT kompisar.*, medlemmar.* FROM kompisar
INNER JOIN medlemmar ON medlemmar.Anvandarnamn = kompisar.till Where 
kompisar.fran = '{$_SESSION['anvandarnamn']}' and accepterad = 1 union all 
SELECT kompisar.*, medlemmar.* FROM kompisar INNER JOIN medlemmar 
ON medlemmar.Anvandarnamn = kompisar.fran Where kompisar.till = '{$_SESSION['anvandarnamn']}'
and accepterad = 1";
$result = mysql_query($sql);
echo mysql_num_rows($result);

Får du då ut samma siffra som $antal längre upp i skriptet?

jboy_87Medlem sedan aug. 20011 099 inlägg
#3

$antal e det inga problem på får 7 st med din kod borde vara 3!

men när jag gör så här så funkar det?

$sql = "SELECT * from kompisar";
$result = mysql_query($sql);

MatteMedlem sedan aug. 20002 975 inlägg
#4

När jag tar en titt på dina bägge sql-frågor, så har du kolumnnamnen Till och Fran i den ena, medans du har kolumnnamnen till och fran i den andra.
Om jag minns rätt så är Kolumnnamn case-sensitive, det innebär att antingen är det fel i endera SQL-frågan eller så refererar dina frågor till olika kolumner.
Testa att ändra så att Till och Fran blir rätt vad det gäller versaler/gemener, gentemot vad du har i din databas.

QimenMedlem sedan juni 20015 009 inlägg
#5

Ett tips annars är att använda det paging script som kjell postats i phpscriptforumet. Mycket bra, använder själv det på flera sidor. :)

jboy_87Medlem sedan aug. 20011 099 inlägg
#6

har gjort det funkar fortfarande inte?

MatteMedlem sedan aug. 20002 975 inlägg
#7

Tror inte det är själva pagingskriptet som det är problem med.

De flesta (om inte alla) pagingskript bygger principen att räkna antalet poster och sedan visa en delmängd ur dessa.
Urvalet i frågan som räknar antalet måste vara samma som när man sedan hämtar.

Här blev det olika antal om man plockade bort LIMIT (begränsningen av delmängd), så problemet bör snarare ligga i skillnader i SQL-frågorna.

MatteMedlem sedan aug. 20002 975 inlägg
#8

Jag är för dålig på avancerade SQL-frågor, så detta kanske inte har någon betydelse, men om du gör samma urval när du räknar antal rader som när du hämtar, hur funkar det då?

<?php
$sql = "SELECT COUNT(*) FROM kompisar
INNER JOIN medlemmar ON medlemmar.Anvandarnamn = kompisar.till Where 
kompisar.fran = '{$_SESSION['anvandarnamn']}' and accepterad = 1 union all 
SELECT kompisar.*, medlemmar.* FROM kompisar INNER JOIN medlemmar 
ON medlemmar.Anvandarnamn = kompisar.fran Where kompisar.till = '{$_SESSION['anvandarnamn']}'
and accepterad = 1";
$result = mysql_query($sql);
// $row = mysql_fetch_assoc($result);
$antal = mysql_result($result, 0);
echo $antal;
jboy_87Medlem sedan aug. 20011 099 inlägg
#9

hmm det funkar inte när jag kör inner joins?

MatteMedlem sedan aug. 20002 975 inlägg
#10

Såg du inlägget jag la strax före ditt?

jboy_87Medlem sedan aug. 20011 099 inlägg
#11

nope det där har ingen betylse för att jag får ju ut 3 poster på nästa sida och det stämmer!

MatteMedlem sedan aug. 20002 975 inlägg
#12

Då får du ut en sida 2 nu om jag förstår rätt?
Vad ligger problemet just nu?

jboy_87Medlem sedan aug. 20011 099 inlägg
#13

nu såg jag felet. när jag lägger följande så funkar det inte??

where kompisar.fran = '{$_SESSION['anvandarnamn']}'

sabbacusMedlem sedan juli 2002630 inlägg
#14

_vad_ funkar inte? är $_SESSION['anvandarnamn'] tom?
Om du gör en echo på $sql, skrivs en korrekt SQL-fråga ut då eller saknas det värden?
Istället för att skriva
where kompisar.fran = '{$_SESSION['anvandarnamn']}'
kan du skriva
where kompisar.fran = " . $_SESSION["anvandarnamn"] . "

jboy_87Medlem sedan aug. 20011 099 inlägg
#15

så ser det ut när jag skriver ut $sql:
sida 1 =

SELECT kompisar.*, medlemmar.* FROM kompisar INNER JOIN medlemmar ON medlemmar.Anvandarnamn = kompisar.till Where kompisar.fran = 'jboy_87' and accepterad = 1 union ALL SELECT kompisar.*, medlemmar.* FROM kompisar INNER JOIN medlemmar ON medlemmar.Anvandarnamn = kompisar.fran Where kompisar.till = 'jboy_87' and accepterad = 1 Order by Till ASC,status DESC LIMIT 0,1

sida 2 =

SELECT kompisar.*, medlemmar.* FROM kompisar INNER JOIN medlemmar ON medlemmar.Anvandarnamn = kompisar.till Where kompisar.fran = 'jboy_87' and accepterad = 1 union ALL SELECT kompisar.*, medlemmar.* FROM kompisar INNER JOIN medlemmar ON medlemmar.Anvandarnamn = kompisar.fran Where kompisar.till = 'jboy_87' and accepterad = 1 Order by Till ASC,status DESC LIMIT 1,1
jboy_87Medlem sedan aug. 20011 099 inlägg
#16

nån som vet?
när jag kör 2 wheret så blir det knas?
när jag tar bort det som är markerad så funkar det men kommer ut dubletter?

$sql = "SELECT kompisar.*, medlemmar.* FROM kompisar
INNER JOIN medlemmar ON medlemmar.Anvandarnamn = kompisar.till Where
kompisar.fran = '".$_SESSION['anvandarnamn']."' and accepterad = 1 union all
SELECT kompisar.*, medlemmar.* FROM kompisar INNER JOIN medlemmar
ON medlemmar.Anvandarnamn = kompisar.fran Where kompisar.till = '".$_SESSION['anvandarnamn']."' and
accepterad = 1 Order by Till,Fran ASC,status DESC LIMIT $start,$inlaggPerSida";

134 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)