Avatar billede hoejgaard Juniormester
03. august 2003 - 10:16 Der er 24 kommentarer og
1 løsning

problem ved sideskift

Jeg har en kode som læser nogle data fra en database. Der må max være feks. 5 poster på hver side, og man kan så bladre med et næste/forrige link i bunden af siden. Problemet opstår ved at jeg har lavet en checkbox ved hver post, hvor man kan markere hvis den pågældende post skal slettes i databasen, og når man markerer en post på en side og en anden post på en anden side, så sletter den kun den sidst markerede. Den kan med andre ord ikke "huske" at tage markeringen med fra en anden side.

Hvad er fejlen i koden er så mit spørgsmål ????

Her er koden :



<?
ob_start();
require("sidehoved.html");
session_start();
$valid_user = $HTTP_SESSION_VARS['valid_user'];
?>

<center>
<table border="0" cellspacing="0" cellpadding="30" width="100%">

<tr>
      <td style="border-right: 1px solid black"><nobr><h3>reklame</nobr></td>
      <td rowspan="5" class ="td1" style="border-right: 1px solid black"><nobr><h3><center><b>Her kan du slette dine poster</nobr></b></center></h3>   

<form name=bm_table action="http://127.0.0.1/tilen/slet_in1.php" method=post>

<?php

// Indstillinger
$offset = (isset($_GET[offset])) ? $_GET[offset] : 0; // Hvis ikke offset er sat, sættes den til 0
$pr_side = 5; // Antal resultater pr. side

$conn = mysql_connect("localhost","root") or die(mysql_error());
mysql_select_db("tilen") or die(mysql_error());

$query = mysql_query("SELECT * FROM indsaet_in WHERE userid='$valid_user' ORDER BY id DESC LIMIT $offset,$pr_side");

while ($row = mysql_fetch_assoc($query)) {

echo "
<br><br>

<table class='tekstafsnit' width='100%' border='0' cellspacing='0' cellpadding='0'>

<tr>
<td><center><b>brugernavn: $row[userid]</b></center></td> 
</tr>

<tr>
<td><center><img src='/test/$row[filnavn]'></center></td>
<td><center>$row[tekst]</center></td>
</tr>

<tr>
<td><center><input type='checkbox' name='del_me[]' value='$row[dato]'></center></td>
</tr>

</table>
</center>

";
}
?>
<br><br>
<input type="Submit" name="submit" value="Slet valgte poster">
</td>
</tr>
</table>
</center>

<?php
$antal = mysql_result(mysql_query('SELECT COUNT(*) FROM indsaet_in'),0); // Tæller antal poster i tabellen "tabel" (husk at ændre til den tabel du bruger)

if ($offset >= $pr_side) { // Tester om det er nødvendigt med et "forrige-link"
$forrige = $offset-$pr_side; // Finder ud af hvor forrige skal starte fra
echo "<center><a href='?offset=$forrige'>Forrige</a></center> "; // Udskriver link
}
if ($antal > $offset+$pr_side) { // Tester om det er nødvendigt med et "næste-link"
$naeste = $offset+$pr_side; // Finder ud af hvor næste skal starte fra
echo "<center><a href='?offset=$naeste'>Næste</a></center>"; // Udskriver link
}

?>

</form>

<?
require ("sidefod.html");
ob_end_flush();
?>
Avatar billede whatever Nybegynder
03. august 2003 - 10:24 #1
Du er jo på en eller anden måde nød til at gemme markeringner, f.eks. i en session, ellers vil de bare forsvinde i det du skifter side. Desuden er du nød til at submitte formularen, når man skifter side, ellers kan du ikke få fat i værdien fra checkboxene.
Avatar billede hoejgaard Juniormester
03. august 2003 - 10:32 #2
det er bare ikke så smart at man skal submitte når man skal skifte side, kan det ikke laves så man kun submitter en gang ??
Avatar billede tipsen Nybegynder
03. august 2003 - 10:35 #3
Så skal du i stedet overføre alle variable i url'en vha. noget javascript => endnu grimmere!
Avatar billede hoejgaard Juniormester
03. august 2003 - 10:38 #4
Dvs det er sådan som jeg har lavet det, at man gør det??
Eller også må man bare nøjes med at slette en ad gangen !!
Avatar billede tipsen Nybegynder
03. august 2003 - 10:49 #5
Jeg kan ikke se, at du overfører alle variable i url'en?
Avatar billede hoejgaard Juniormester
03. august 2003 - 10:51 #6
hvad mener du tipsen ??
med at overføre alle variablene i url'en ??
Avatar billede tipsen Nybegynder
03. august 2003 - 10:53 #7
Jeg mener, at hvis du krydser 1, 3 og 4 af, skal du sammen med linket til næste side overføre variable der fortæller at 1, 3 og 4 blev afkrydset!
Avatar billede hoejgaard Juniormester
03. august 2003 - 10:57 #8
ja det er det jeg vil, og hvordan er det man gør det ???
Avatar billede tipsen Nybegynder
03. august 2003 - 10:57 #9
og det vil du kun kunne gøre vha. javascript, hvilket vil være en grim løsning!

Derfor er det bedre med submit af en formular - og du behøver jo ikke gå på kompromis med resultatet, da du jo kan style alt vha. css og billeder!
Avatar billede hoejgaard Juniormester
03. august 2003 - 11:05 #10
ja og så kan jeg kun submitte en side ad gangen ??
Avatar billede tipsen Nybegynder
03. august 2003 - 11:07 #11
nej - du submitter bare til næste side og samler de submittede variable op som hidden-felter i formularen - og det bliver du ved med indtil næste side, hvor du submitter formularen til endelig indsætte i db'en!
Avatar billede hoejgaard Juniormester
03. august 2003 - 11:10 #12
okay det vil jeg prøve, vender tilbage hvis der er problemer og med point :)
Avatar billede tipsen Nybegynder
03. august 2003 - 11:46 #13
Det med undervejs at gemme valgte værdier i hidden-felter er en meget brugt teknik i forbindelse med formularer som strækker sig over flere sider!
Avatar billede hoejgaard Juniormester
03. august 2003 - 20:09 #14
Jeg ved ikke hvordan jeg skal skrive koden som tipsen foreslår.
Nogen der kan hjælpe ????
Avatar billede hoejgaard Juniormester
03. august 2003 - 20:16 #15
det er noget med at de markerede poster skal overføres sammen med linket næste/forrige. Men hvordan ved jeg ikke.....
Avatar billede hoejgaard Juniormester
03. august 2003 - 20:29 #16
ingen der lige kan give et råd ??
Avatar billede tipsen Nybegynder
03. august 2003 - 20:36 #17
side1.php:

<form... action="side2.php" method="post">
<input type="text" name="varnavn1">
<input type="submit" value="Næste">
</form>

side2.php
<form... action="side3.php" method="post">
<input type="hidden" name="varnavn1" value="<?php echo $_POST['varnavn1']">
<input type="text" name="varnavn2">
<input type="submit" value="Næste">
</form>

side3.php
<form... action="side4.php" method="post">
<input type="hidden" name="varnavn1" value="<?php echo $_POST['varnavn1']">
<input type="hidden" name="varnavn2" value="<?php echo $_POST['varnavn2']">
<input type="text" name="varnavn3">
<input type="submit" value="Næste">
</form>

Håber du kan se ideen!
Avatar billede hoejgaard Juniormester
03. august 2003 - 21:00 #18
prøver at kigge på det, og vender tilbage hvis det er  iorden ..
Avatar billede hoejgaard Juniormester
03. august 2003 - 21:07 #19
vil gerne have at man kan bladre tilbage igen som ved min kode med forrige. det kan man ikke såvidt jeg kan se med din kode >>tipsen
Avatar billede tipsen Nybegynder
03. august 2003 - 21:08 #20
vil du også have, at man kan bevare variable fra side 3, hvis man går tilbage til side 2?
Avatar billede tipsen Nybegynder
03. august 2003 - 21:12 #21
Der findes en klasse beregnet til formularer over flere sider:

http://www.phpclasses.org/multipageforms

Alt andet risikerer at blive de vildeste høker-løsninger...
Avatar billede hoejgaard Juniormester
03. august 2003 - 21:21 #22
ja det er nogle sider med forskellige artikler, som man skal kunne bladre i vha forrige/næste.
Avatar billede tipsen Nybegynder
03. august 2003 - 21:23 #23
Hvad er det for nogle valg du ønsker at gemme fra side til side?
Avatar billede tipsen Nybegynder
03. august 2003 - 21:23 #24
Så foreslår jeg dig at bruge klassen - god arbejdslyst.
Avatar billede hoejgaard Juniormester
21. september 2006 - 13:14 #25
lukker
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