Avatar billede christian-s Nybegynder
10. april 2003 - 13:52 Der er 29 kommentarer og
1 løsning

Hent img-info fra MySQL tabel og start med nyeste

Jeg har en række filnavne med hvert sit id.
Samtidig har jeg et metatag, der opdaterer hvert 5. sek.

Hvordan får jeg den til at starte med at hente det sidste/nyeste id, og derefter "skifte en ned" ved hver opdatering?
Avatar billede Slettet bruger
10. april 2003 - 14:00 #1
session_start();
$sql = "select * from filnavne where id<".addslashes($_SESSION[id])." order by id desc limit 0,1";
$result = mysql_query($sql);
if(mysql_num_rows($result)==0)
{
    $sql = "select * from filnavne where 1 order by id desc limit 0,1";
    $result = mysql_query($sql);
}
$row = mysql_fetch_array($result);
$_SESSION[id] = $row[id];
//KØR REFRESH
Avatar billede christian-s Nybegynder
10. april 2003 - 14:23 #2
Et par fejl:

Warning: Cannot send session cookie - headers already sent by i linie:
session_start();

Warning: Cannot send session cache limiter - headers already sent i linie:
session_start();

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource i linie:
if(mysql_num_rows($result)==0)
Avatar billede christian-s Nybegynder
10. april 2003 - 14:23 #3
skal session sluttes?
Avatar billede Slettet bruger
10. april 2003 - 14:27 #4
$sql = "select * from filnavne where id<".addslashes($_SESSION[id])." order by id desc limit 0,1";//Skal nok tilpasses din tabel!!!!
if(@mysql_num_rows($result)==0)
{
//OSV

Session skal ikke slutttes medmindre du ønsker at den gældende session skal lukkes!?
Avatar billede christian-s Nybegynder
10. april 2003 - 16:10 #5
Så er der kun disse fejl tilbage, hvad gør jeg galt i header'en?

Warning: Cannot send session cookie - headers already sent by i linie:
session_start();

Warning: Cannot send session cache limiter - headers already sent i linie:
session_start();
Avatar billede Slettet bruger
10. april 2003 - 16:12 #6
bare sørg for at session_start(); er i toppen af dit php script
Avatar billede christian-s Nybegynder
10. april 2003 - 17:10 #7
Nu er der ingen fejl og det billedet tilhørende det sidste id vises.
Billedet skifter dog ikke, det virker som om session ikke får fat..?
Avatar billede Slettet bruger
10. april 2003 - 17:14 #8
hvad giver print_r($_SESSION); ???
Avatar billede christian-s Nybegynder
10. april 2003 - 17:24 #9
Array ( [id] => 36 )
Avatar billede christian-s Nybegynder
10. april 2003 - 17:32 #10
... og nu:
Array ( [id] => 36 [bog_id] => 36 )

id-kolonnen i tabellen hedder bog_id, derfor hedder id i tabellen bog_id og id i session id.
Avatar billede Slettet bruger
10. april 2003 - 17:34 #11
Hvad hvis du kører print_r($_SESSION) lige efter session_start(); ???
Avatar billede christian-s Nybegynder
10. april 2003 - 18:12 #12
Så starter den med Array() og derefter Array ( [id] => 36 )
Desværre kommer den ikke videre..
Avatar billede Slettet bruger
10. april 2003 - 20:22 #13
Prøv lige at smid koden til din refresh så!?
Avatar billede christian-s Nybegynder
11. april 2003 - 16:19 #14
det er bare et metatag med henvisning til filnavnet selv..
vh Christian
Avatar billede Slettet bruger
11. april 2003 - 16:42 #15
oki
så prøv at brug:
setcookie("lastid", $id); i stedet for $_SESSION[id] = $row[id];
og $_COOKIE[lastid] i stedet for addslashes($_SESSION[id])

Dette vil dog kun virke hvis cookies er slået til på clienten!

Altså:
$lastid=0;
if(isset($_COOKIE[lastid]))
{
    $lastid = addslashes($_COOKIE[lastid]);
}
$sql = "select * from filnavne where id<".$lastid." order by id desc limit 0,1";
$result = mysql_query($sql);
if(mysql_num_rows($result)==0)
{
    $sql = "select * from filnavne where 1 order by id desc limit 0,1";
    $result = mysql_query($sql);
}
$row = mysql_fetch_array($result);
$_COOKIE[lastid] = $row[id];
Avatar billede christian-s Nybegynder
11. april 2003 - 16:51 #16
nu er array'et tomt hele tiden. koden ser således ud:
<?php
session_start();
print_r($_SESSION);

mysql_connect..

$lastid=0;
if(isset($_COOKIE[lastid]))
{
    $lastid = addslashes($_COOKIE[lastid]);
}
$sql = "select * from bogforsider where bog_id<".$lastid." order by bog_id desc limit 0,1";
$result = mysql_query($sql);
if(mysql_num_rows($result)==0)
{
    $sql = "select * from bogforsider where 1 order by bog_id desc limit 0,1";
    $result = mysql_query($sql);
}
$row = mysql_fetch_array($result);

        $bog_id            = $row["bog_id"];
        $filnavn        = $row["filnavn"];
        $beskrivelse        = $row["beskrivelse"];
        $pdf            = $row["pdf"];
        $pdf_filnavn        = $row["pdf_filnavn"];

$_COOKIE[lastid] = $bog_id;

echo "<img src='uploads/bogforsider/$filnavn' border='1'><p>";

?>
Avatar billede Slettet bruger
11. april 2003 - 16:54 #17
Min fejl:
$_COOKIE[lastid] = $row[id];
skal være:
setcookie("lastid", $id);
Og du kan godt fjeren session_start();
Og print_r($_SESSION); skal være print_r($_COOKIE);
Avatar billede christian-s Nybegynder
11. april 2003 - 17:18 #18
Jeg har nu øverst: print_r($_cookie);

Og da jeg opdaterer cookie i denne linie: $_COOKIE[lastid] = $bog_id; sider den headers allerede sendt.
Hvad skyldes det?
Avatar billede Slettet bruger
11. april 2003 - 17:35 #19
headers allerede sendt. <--- kommer på grund af print_r();
bare udkommenter print_r() eller sæt print_r() under den linie hvor fejlen kommer!
Avatar billede christian-s Nybegynder
11. april 2003 - 18:11 #20
der kommer tilsyneladende stadig fejl i linien: $_COOKIE[lastid] = $bog_id;
Avatar billede Slettet bruger
11. april 2003 - 18:20 #21
Som sagt så brug setcookie("lastid", $bog_id); i stedet for $_COOKIE[lastid] = $bog_id;
Og sørg for der ikke er noget output - echo, print og lignende før setcookie!
Avatar billede christian-s Nybegynder
11. april 2003 - 18:29 #22
Nu ser koden således ud:
Er simpelthen i tvivl om hvor cookie osv. skal skrives..

<?php
setcookie("lastid", $bog_id);

?>

<?php
mysql_connect...

$lastid=0;
if(isset($_COOKIE[lastid]))
{
    $lastid = addslashes($_COOKIE[lastid]);
}
$sql = "select * from bogforsider where bog_id<".$lastid." order by bog_id desc limit 0,1";
$result = mysql_query($sql);
if(mysql_num_rows($result)==0)
{
    $sql = "select * from bogforsider where 1 order by bog_id desc limit 0,1";
    $result = mysql_query($sql);
}
$row = mysql_fetch_array($result);

###setcookie("lastid", $bog_id);

        $bog_id            = $row["bog_id"];
        $filnavn        = $row["filnavn"];
        $beskrivelse        = $row["beskrivelse"];
        $pdf            = $row["pdf"];
        $pdf_filnavn        = $row["pdf_filnavn"];

print_r($_cookie);

echo "<img src='uploads/bogforsider/$filnavn' border='1'><p>";

?>
Avatar billede Slettet bruger
11. april 2003 - 18:32 #23
Sådan her...
Nogen grund til du ikke har lavet det i javascript?
<?php
mysql_connect...

$lastid=0;
if(isset($_COOKIE[lastid]))
{
    $lastid = addslashes($_COOKIE[lastid]);
}
$sql = "select * from bogforsider where bog_id<".$lastid." order by bog_id desc limit 0,1";
$result = mysql_query($sql);
if(mysql_num_rows($result)==0)
{
    $sql = "select * from bogforsider where 1 order by bog_id desc limit 0,1";
    $result = mysql_query($sql);
}
$row = mysql_fetch_array($result);


        $bog_id            = $row["bog_id"];
        $filnavn        = $row["filnavn"];
        $beskrivelse        = $row["beskrivelse"];
        $pdf            = $row["pdf"];
        $pdf_filnavn        = $row["pdf_filnavn"];

setcookie("lastid", $bog_id);

echo "<img src='uploads/bogforsider/$filnavn' border='1'><p>";

?>
Avatar billede christian-s Nybegynder
11. april 2003 - 18:55 #24
der er stadig headerfejl i setcookie("lastid", $bog_id);

nej, det ville være mere hensigtsmæssigt i JS, men jeg behersker ikke JS (i øvrigt heller ikke PHP fuldstændigt), men jeg havde først lavet en enklere løsning...
Avatar billede Slettet bruger
11. april 2003 - 18:58 #25
Skriv lige fejl beskeden...
Under alle omstændigheder tvivler jeg på at fejlen opstår i den del af scriptet da der ikke er noget output...
Sørg også for at "<?php" er i starten af dokumentet... ingen linie skift eller spaces!
Avatar billede christian-s Nybegynder
11. april 2003 - 19:02 #26
så skyldes det nok fejlen, har haft HTML-koder inden.
Hvordan får jeg så sat det ind i tabeller, lagt header, meta osv. ind?
Avatar billede Slettet bruger
11. april 2003 - 19:25 #27
Sætter <?php til ?> i toppen af dokumentet!
echo "<img src='uploads/bogforsider/$filnavn' border='1'><p>"; ændres til
$billede = "<img src='uploads/bogforsider/$filnavn' border='1'><p>";
og der hvor billedet skal være sætter du <?php echo $billede; ?> ind!
Avatar billede christian-s Nybegynder
11. april 2003 - 20:11 #28
Okay, det medfører jo en helt anden opbygning - men forklarer også en del af mine tidligere problemer...
Til sidst, nu starter den dog med det tidligste id, og går derefter til det sidste. Hvordan kan jeg evt. selv vælge hvilket id der skal starte eller hvordan kan det blive det sidste fra starten?
Avatar billede Slettet bruger
11. april 2003 - 20:14 #29
ordnes i $sql:
"order by bog_id desc" til "order by bog_id asc"
Avatar billede christian-s Nybegynder
11. april 2003 - 20:30 #30
Nu kan jeg vist ikke trække mere på dig, tak for hjælpen!
Så kan jeg tygge koden igennem, og senere udbygge den!

god påske!
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