Avatar billede zacho112 Nybegynder
30. december 2005 - 00:31 Der er 42 kommentarer og
1 løsning

Hvordan vil i lave sideskift på dette?

Hej alle sammen, har et måske lidt underligt script, men skal have sideskift på. Den må max vist 8 billeder i alt.

<?php
include("conn.php");
$artikelid = $_GET["id"];
$query = "SELECT * FROM img where id % 2 <> 0 AND artikelid = '$artikelid' LIMIT 4";
$results = mysql_query($query) or die(mysql_error());
?>
<div align="center">
<table >
<tr>
<td>
<?php
while ($row = mysql_fetch_array($results)) {
?>
<br>
<a target="_blank" href="showimg2.php?id=<?php echo $row['id']; ?>">
<img border="1" border-color="#FFFFFF" src="upload/<? echo $row[billede]; ?>"width="230" height="200"></a>
<br>
<div align="center">
<?php
echo $row['tekst'];
}
?>
</div>
</td>
<?php
$query = "SELECT * FROM img where id % 2 = 0 AND artikelid = '$artikelid' LIMIT 4";
$results = mysql_query($query) or die(mysql_error());
?>
<td>
<?php
while ($row = mysql_fetch_array($results)) {
?>
<br>
<a target="_blank" href="showimg2.php?id=<?php echo $row['id']; ?>">
<img border="1" border-color="#FFFFFF" src="upload/<? echo $row[billede]; ?>"width="230" height="200"></a>
<br>
<div align="center">
<?php
echo $row['tekst'];
}
?>
</div>
</td>
</tr>
</table>
</div>

Som i kan se, så har jeg 2 som skriver billederne ud, den ene skriver dem som har en lige id og den anden de ulige id'er. Hvis i har en smartere måde, må i også godt skrive den :D
Avatar billede jaw Nybegynder
30. december 2005 - 00:38 #1
Jeg ved ikke helt hvorfor du vil dele dem op i lige og ulige id's, så det har jeg ikke lige en bedre idé til.

Men for at lave sideskift, så skal du et sted indsætte følgende (før du bruger databasen):

$start = (!isset($_GET['s']) || !is_numeric($_GET['s'])) ? 0 : $_GET['s'];

Dine LIMIT's ænrer du så til LIMIT $start, 4.

For så at bladre, skal du have lavet links der så hedder:
fil.php?s=4
fil.php?s=8
osv. osv.

Giver det mening? :)
Avatar billede zacho112 Nybegynder
30. december 2005 - 00:42 #2
lidt, men grunden til at jeg har delt dem op i lige og ulige id's er på grund af, så kan jeg få dem i 2 rækker, hvor den smider 4 ned i begge rækker. Dette kan sikkert laves på en bedre måde, men hvordan ved jeg ikke lige :S
Avatar billede jaw Nybegynder
30. december 2005 - 00:43 #3
Det kan det, men nu kan vi jo lige få sideskift til at lykkes først, og så tage det andet bagefter...
Avatar billede zacho112 Nybegynder
30. december 2005 - 01:05 #4
Yep, okay... Prøver mig lidt frem og kommer med resultatet engang i morgen :P
Avatar billede zacho112 Nybegynder
30. december 2005 - 11:26 #5
jaw, har du en måde hvor jeg kan få den til selv, at oprette links til den næste side, og den forrige side?
Avatar billede jaw Nybegynder
30. december 2005 - 13:56 #6
Ja, selvfølgelig. Virker det indtil videre?

echo "<a href='fil.php?s=".($start+4)."'>Næste</a>";
if($start > 0)
  echo "<a href='fil.php?s=".($start-4)."'>Forrige</a>";
Avatar billede zacho112 Nybegynder
30. december 2005 - 14:00 #7
Det tror jeg, men når jeg smider det der ind, og trykker næste, og derefter forrige så kommer jeg bare til en blank side :S
Avatar billede jaw Nybegynder
30. december 2005 - 14:02 #8
Ok. Har du flere variabler i din adresselinie? Så skriv lige et eksempel på en adresse.
Avatar billede zacho112 Nybegynder
30. december 2005 - 15:25 #9
Min fejl, havde lige glemt at jeg havde flere variabler.
Jeg prøver lige at se, om jeg kan få det til at virke selv først!
Avatar billede zacho112 Nybegynder
30. december 2005 - 15:34 #10
Nu virker forrige, men skal lige have prøvet, at lave en med nok billeder til en næste.
Men kan man ikke gøre sådan, at hvis der kun er 8 billeder eller der under, så viser den ikke "næste"?

Noget med

<?php
if($start > 4)
echo "<a href='showimg.php?id=".$artikelid."&s=".($start+4)."'>Næste</a>";
if($start > 0)
echo "<a href='showimg.php?id=".$artikelid."s=".($start-4)."'>Forrige</a>";
?>
?
Avatar billede jaw Nybegynder
30. december 2005 - 17:39 #11
Jo, det kan vi godt, men så synes jeg vi skal lave om din script, så du kun har 1 udtræk i stedet for de 2 du har nu. Du siger at grunden til at du har 2, er at du vil have 4 på hver linie?
Avatar billede zacho112 Nybegynder
30. december 2005 - 20:00 #12
Jeg vil have billederne vist sådan her:

1 - 2
3 - 4
5 - 6
7 - 8

Næste side osv..

Er du med på hvordan jeg gerne vil have det lavet?
Avatar billede jaw Nybegynder
30. december 2005 - 20:07 #13
Du kan lige prøve det her, og se om det er helt ved siden af:

<?php
include("conn.php");
$artikelid = $_GET["id"];
$query = "SELECT * FROM img where artikelid = '$artikelid' LIMIT 8";
$results = mysql_query($query) or die(mysql_error());
?>
<div align="center">
<table >
<tr>
<?php
$i = 1;
while ($row = mysql_fetch_array($results)) {
if(($i%2) == 0) {
echo "</tr><tr>";
}
?>
<td>
<br>
<a target="_blank" href="showimg2.php?id=<?php echo $row['id']; ?>">
<img border="1" border-color="#FFFFFF" src="upload/<? echo $row[billede]; ?>"width="230" height="200"></a>
<br>
<div align="center">
<?php
echo $row['tekst'];
echo "</td>";
$i++;
}
while(($i%2) != 0) {
    echo "<td></td>";
    $i++;
}
?>
</div>
</tr>
</table>
</div>
Avatar billede zacho112 Nybegynder
30. december 2005 - 21:31 #14
Hej... Det virker næsten, men den viser ikke nummer 2 billede og det sidste billede... Ved du hvorfor!
Avatar billede jaw Nybegynder
30. december 2005 - 21:34 #15
Har du ikke lige et link, så jeg kan følge lidt med?
Avatar billede zacho112 Nybegynder
30. december 2005 - 21:46 #16
Avatar billede jaw Nybegynder
30. december 2005 - 22:07 #17
Linien:
echo "</tr><tr>";
skal rykkes ned efter den først:
$i++;
Avatar billede zacho112 Nybegynder
30. december 2005 - 22:35 #18
Nu viser den alle billeder, men den viser dem på en lang række...
Avatar billede jaw Nybegynder
30. december 2005 - 22:40 #19
Og nu skrev jeg så forkert igen, den skal FØR den første $i++; - beklager !
Avatar billede zacho112 Nybegynder
30. december 2005 - 22:49 #20
Den viser det på samme måde..
Her er koden:
<?php
include("conn.php");
$artikelid = $_GET["id"];
$query = "SELECT * FROM img where artikelid = '$artikelid' LIMIT 8";
$results = mysql_query($query) or die(mysql_error());
?>
<div align="center">
<table >
<tr>
<?php
$i = 1;
while ($row = mysql_fetch_array($results)) {
if(($i%2) == 0) {

}
?>
<td>
<br>
<a target="_blank" href="showimg2.php?id=<?php echo $row['id']; ?>">
<img border="1" border-color="#FFFFFF" src="upload/<? echo $row[billede]; ?>"width="230" height="200"></a>
<br>
<div align="center">
<?php
echo $row['tekst'];
echo "</td>";
echo "</tr><tr>";
$i++;

}
while(($i%2) != 0) {
    echo "<td></td>";
    $i++;
}
?>
</div>
</tr>
</table>
</div>
Avatar billede jaw Nybegynder
30. december 2005 - 22:53 #21
Ok, undskyld. Det er min fejl. Det var også if'en du skulle flytte, så det bliver:

<?php
include("conn.php");
$artikelid = $_GET["id"];
$query = "SELECT * FROM img where artikelid = '$artikelid' LIMIT 8";
$results = mysql_query($query) or die(mysql_error());
?>
<div align="center">
<table >
<tr>
<?php
$i = 1;
while ($row = mysql_fetch_array($results)) {
?>
<td>
<br>
<a target="_blank" href="showimg2.php?id=<?php echo $row['id']; ?>">
<img border="1" border-color="#FFFFFF" src="upload/<? echo $row[billede]; ?>"width="230" height="200"></a>
<br>
<div align="center">
<?php
echo $row['tekst'];
echo "</td>";
if(($i%2) == 0) {
echo "</tr><tr>";
}
$i++;

}
while(($i%2) != 0) {
    echo "<td></td>";
    $i++;
}
?>
</div>
</tr>
</table>
</div>
Avatar billede zacho112 Nybegynder
30. december 2005 - 23:02 #22
Nu virker det, du skal have rigtigt mange tak! Skal nok lige have prøvet næste side osv, men jeg er ny her på eksperten, så hvordan giver jeg dig dine points?
Og er du sød, at forklare hvordan du har fået dem til at vise det sådan her?
Avatar billede jaw Nybegynder
30. december 2005 - 23:04 #23
Rolig nu, jeg havde ikke regnet med, at vi er færdige? :)

For der er vel et problem i, at du får en forrige også på første side? Og når vi kommer til point-delen, så giver du point ved at jeg lægger et svar, som du så kan acceptere bagefter...
Avatar billede zacho112 Nybegynder
31. december 2005 - 00:07 #24
Nu viser den billederne rigtigt osv, men der er ingen næste og forrgie side, som jeg også kan se vi ikke har fået lavet endnu. Men er det så bare det script som du viste mig før som jeg skal bruge?
Avatar billede jaw Nybegynder
31. december 2005 - 00:11 #25
Ja, nu skal det så bare være 8 i stedet for 4, ellers er det det samme som du havde før.
Avatar billede zacho112 Nybegynder
31. december 2005 - 00:28 #26
Nu viser den ikke næste eller forrige...

Koden:
<?php
include("conn.php");
$artikelid = $_GET["id"];
$start = (!isset($_GET['s']) || !is_numeric($_GET['s'])) ? 0 : $_GET['s'];
$query = "SELECT * FROM img where artikelid = '$artikelid' LIMIT $start, 8";
$results = mysql_query($query) or die(mysql_error());
?>
<div align="center">
<table >
<tr>
<?php
$i = 1;
while ($row = mysql_fetch_array($results)) {
?>
<td>
<br>
<a target="_blank" href="showimg2.php?id=<?php echo $row['id']; ?>">
<img border="1" border-color="#FFFFFF" src="upload/<? echo $row[billede]; ?>"width="230" height="200"></a>
<br>
<div align="center">
<?php
echo $row['tekst'];
echo "</td>";
if(($i%2) == 0) {
echo "</tr><tr>";
}
$i++;

}
while(($i%2) != 0) {
    echo "<td></td>";
    $i++;
}
?>
</div>
</tr>
</table>
</div>
<?php
if($start > 8)
echo "<a href='showimg.php?id=".$artikelid."&s=".($start+4)."'>Næste</a>";
if($start > 0)
echo "<a href='showimg.php?id=".$artikelid."&s=".($start-4)."'>Forrige</a>";
?>
Avatar billede jaw Nybegynder
31. december 2005 - 00:58 #27
Ok. Efter linien med $result, indsætter du:

$num = mysql_num_rows($results);

Og så skal dine næste/forrige knapper være:
if(($start+8) < $num) {
  echo "<a href='showimg.php?id=".$artikelid."&s=".($start+8)."'>Næste</a>";
}
if($start > 0) {
  echo "<a href='showimg.php?id=".$artikelid."&s=".($start-8)."'>Forrige</a>";
}
Avatar billede zacho112 Nybegynder
31. december 2005 - 01:06 #28
Der sker ik en skid :S

Du kan lige få koden og se om jeg har glemt noget!

<?php
include("conn.php");
$artikelid = $_GET["id"];
$start = (!isset($_GET['s']) || !is_numeric($_GET['s'])) ? 0 : $_GET['s'];
$query = "SELECT * FROM img where artikelid = '$artikelid' LIMIT $start, 8";
$results = mysql_query($query) or die(mysql_error());
$num = mysql_num_rows($results);
?>
<div align="center">
<table >
<tr>
<?php
$i = 1;
while ($row = mysql_fetch_array($results)) {
?>
<td>
<br>
<a target="_blank" href="showimg2.php?id=<?php echo $row['id']; ?>">
<img border="1" border-color="#FFFFFF" src="upload/<? echo $row[billede]; ?>"width="230" height="200"></a>
<br>
<div align="center">
<?php
echo $row['tekst'];
echo "</td>";
if(($i%2) == 0) {
echo "</tr><tr>";
}
$i++;

}
while(($i%2) != 0) {
    echo "<td></td>";
    $i++;
}
?>
</div>
</tr>
</table>
</div>
<?php
if(($start+8) < $num) {
  echo "<a href='showimg.php?id=".$artikelid."&s=".($start+8)."'>Næste</a>";
}
if($start > 0) {
  echo "<a href='showimg.php?id=".$artikelid."&s=".($start-8)."'>Forrige</a>";
}
?>
Avatar billede jaw Nybegynder
31. december 2005 - 01:09 #29
Hm. Prøv lige at smide:
echo "<br />" . $num . " " . $start;
ind i bunden engang.
Avatar billede jaw Nybegynder
31. december 2005 - 01:12 #30
Hvordan kan du sige at de ikke virker? Du har jo ikke mere end 8 billeder i tabellen og du er på 1. side, så skal der jo ikke være hverken forrige- eller næste-knap.
Avatar billede zacho112 Nybegynder
31. december 2005 - 01:35 #31
SORRY! Havde lige glemt hvilken id som havde mere end 8 billeder!!!
Tester det lige
Avatar billede zacho112 Nybegynder
31. december 2005 - 01:37 #32
Den udskriver dataen, 8 og 0, men viser stadig ikke næste side, selvom at der er flere billeder!
Avatar billede zacho112 Nybegynder
01. januar 2006 - 13:23 #33
Ved du hvad der er galt?
Avatar billede jaw Nybegynder
01. januar 2006 - 13:28 #34
Jeg vil stadig sige at det skyldes, at der ikke er mere end 8 billeder til id=1. Hvis du smider flere billeder ind, er jeg næsten sikker på, at de knapper kommer frem som de skal...
Avatar billede zacho112 Nybegynder
01. januar 2006 - 13:47 #35
Jeg har en anden id, hvor der er mere end 20 billeder, og den viser ikke næste på første side.
Har selv prøvet, at skrive &s=8, så viser den rigtigt nok de næste 8 billeder, og der kommer også en "forrige kanp", men den viser ingen "næste knap".
Avatar billede jaw Nybegynder
01. januar 2006 - 13:51 #36
Ahh, det ved jeg godt hvorfor.

Denne:
$num = mysql_num_rows($results);

skal du udskifte med:
$num = mysql_num_rows(mysql_query("SELECT * FROM img where artikelid = '$artikelid'"));
Avatar billede zacho112 Nybegynder
01. januar 2006 - 13:59 #37
yep nu virker det, du skal have en stor tak :P
Nu skal jeg så til at se koden gennem, så jeg kan lære noget :D
Smider du ikke lige et svar?
Avatar billede jaw Nybegynder
01. januar 2006 - 14:03 #38
Kewl. Så vil jeg tillade mig at smide et svar.

Hvis der er noget du er i tvivl om, så spørger du bare !

Og selv tak :)
Avatar billede zacho112 Nybegynder
01. januar 2006 - 14:05 #39
øhh kan ikke accepter dit svar ?

Og gider du lige forklare disse to linjer?
$start = (!isset($_GET['s']) || !is_numeric($_GET['s'])) ? 0 : $_GET['s'];
$num = mysql_num_rows(mysql_query("SELECT * FROM img where artikelid = '$artikelid'"));
forstår dem ikke helt 100%
Avatar billede zacho112 Nybegynder
01. januar 2006 - 14:07 #40
Så fik jeg det accepteret!
Avatar billede jaw Nybegynder
01. januar 2006 - 14:10 #41
Det er accepteret nu :)

Og ja, det vil jeg gerne. Den første:
$start = (!isset($_GET['s']) || !is_numeric($_GET['s'])) ? 0 : $_GET['s'];
er præcis det samme som at skrive:
if(!isset($_GET['s']) || !is_numeric($_GET['s'])) {
  $start = 0;
} else {
  $start = $_GET['s'];
}
man kan bare gøre det på 1 linie i stedet for på 5.

Den næste:
$num = mysql_num_rows(mysql_query("SELECT * FROM img where artikelid = '$artikelid'"));
tæller såmænd bare antallet af rækker, som kommer af den forespørgsel. Grunden til at den ikke virkede før var, at der har vi LIMIT X, 8 - altså der vil aldrig være mere end 8.

Gav det bedre forståelse?
Avatar billede zacho112 Nybegynder
01. januar 2006 - 14:14 #42
Yep, den sidste linje ($num linjen), tænkte jeg nok var noget i den stil. Og den første linje har jeg forstået nu :D
Og igen mange tak, og godt nytår :P
Avatar billede jaw Nybegynder
01. januar 2006 - 14:16 #43
Selv tak igen - og i lige måde :)
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