Avatar billede blackscorpion Nybegynder
12. juni 2004 - 18:46 Der er 19 kommentarer og
1 løsning

PHP Rod ?

Hej Ekspert brugere.

Jeg sidder og er i fuld gang, med at smide min hjemmeside op på en server, og nu fucker den totalt op i det, fordi at jeg er vant til at kalde de forskellige variabler med $variabel, hvor jeg nu skal have fat i $_GET og $_POST, og det er så rettet til.

Og nu er min navigation til mit nyheds system, kvæstet, og jeg kan ikke rigtig selv finde fejlen, da jeg selv mener at hvad jeg har gjort er gjort rigtigt.

Her kommer lige et udkast af den del, af koden, hvor det er galt.

#################################################################
<?php

include("admin/config.inc");

$page = $news_text;

include("include/header.inc");

open_user_mysql_conn();

1if(!$_GET['news_id']) {
2 $sql = "select * from news order by date desc limit 1";
3}
4else {
5 $sql = "select * from news where id = $_GET[news_id] limit 1";
6}

$result = mysql_query($sql);

$news_num = mysql_num_rows(mysql_query("select * from news"));

$content = mysql_fetch_array($result);
extract($content);

if($_GET['news_id'] <= $news_num AND $_GET['news_id'] > 1) {
  $news_back = $_GET['news_id'] - 1;
  $news_next_text = "<a href=\"news.php?news_id=$news_back\">$next_text</a>";
  $news_to_the_end = "<a href=\"news.php?news_id=1\">&gt;&gt;</a>";
}
else {
  $news_to_the_end = "<font color=\"$hlink\">&gt;&gt;</font>";
  $news_next_text = "<font color=\"$hlink\">$next_text</font>";
}

if($_GET['news_id'] >= 1 AND $news_num > $_GET['news_id']) {
  $news_next = $_GET['news_id'] +1;
  $news_previous_text = "<a href=\"news.php?news_id=$news_next\">$previous_text</a>";
  $news_to_the_beginning = "<a href=\"news.php?news_id=$news_num\">&lt;&lt;</a>";
}
else {
  $news_to_the_beginning = "<font color=\"$hlink\">&lt;&lt;</font>";
  $news_previous_text = "<font color=\"$hlink\">$previous_text</font>";
}


$date = date("d\.m\.Y \- H\:i\:s", $date);
$news = $text;
?>
#################################################################

når man hopper ind, og ikke har et nyheds id, så viser den, den nyeste nyhed. <--- Fair nok.

Når man så trykker på Previous, så hopper den til nummer 2, og når man trykker på den igen, så hopper den tilbage til nummer 3, hvor den startede.

Nogle der kan se, hvad problemet er??

Alle fejl, og mangler der bliver set i denne kode, vil blive accepteret med GLÆDE. ;)

- TheSpeaker.
Avatar billede dennismp Nybegynder
12. juni 2004 - 18:59 #1
Kan du ikke prøve at lave nogle lidt bedre titler? Jeg troede faktisk du havde lavet to eens indlæg...

Anyway.

Hvis du kalder dit script uden news_id så bruger den bare den nyeste. Fint nok.

Men så virker dine if sætninger da ikke ? De antager at der er et $_GET['news_id'] (hvilket der jo ikke er)..

if($_GET['news_id'] <= $news_num AND $_GET['news_id'] > 1) {
  $news_back = $_GET['news_id'] - 1;
  $news_next_text = "<a href=\"news.php?news_id=$news_back\">$next_text</a>";
  $news_to_the_end = "<a href=\"news.php?news_id=1\">&gt;&gt;</a>";
}
else {
  $news_to_the_end = "<font color=\"$hlink\">&gt;&gt;</font>";
  $news_next_text = "<font color=\"$hlink\">$next_text</font>";
}

(og de andre)

---- mit foreslag (utestet):

<?php

include("admin/config.inc");

$page = $news_text;

include("include/header.inc");

open_user_mysql_conn();

if(!$_GET['news_id']) {
$sql = "select * from news order by date desc limit 1";
}
else {
$sql = "select * from news where id = $_GET[news_id] limit 1";
}

$result = mysql_query($sql);

$news_num = mysql_num_rows(mysql_query("select * from news"));

$content = mysql_fetch_array($result);
extract($content);

if($id <= $news_num AND $id > 1) {
  $news_back = $id - 1;
  $news_next_text = "<a href=\"news.php?news_id=$news_back\">$next_text</a>";
  $news_to_the_end = "<a href=\"news.php?news_id=1\">&gt;&gt;</a>";
}
else {
  $news_to_the_end = "<font color=\"$hlink\">&gt;&gt;</font>";
  $news_next_text = "<font color=\"$hlink\">$next_text</font>";
}

if( $id >= 1 AND $news_num > $id) {
  $news_next = $id +1;
  $news_previous_text = "<a href=\"news.php?news_id=$news_next\">$previous_text</a>";
  $news_to_the_beginning = "<a href=\"news.php?news_id=$news_num\">&lt;&lt;</a>";
}
else {
  $news_to_the_beginning = "<font color=\"$hlink\">&lt;&lt;</font>";
  $news_previous_text = "<font color=\"$hlink\">$previous_text</font>";
}


$date = date("d\.m\.Y \- H\:i\:s", $date);
$news = $text;
?>
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 19:02 #2
hov, lavede dette indlæg efter det andet, da jeg fandt fejlen i det første, 2 sec.

Sådan her skal noget af den øverste del af koden se ud, min fejl, sorry,
########################################################################
open_user_mysql_conn();

if(!$_GET['news_id']) {
$sql = "select * from news order by date desc limit 1";
$_GET['news_id'] = extract(mysql_fetch_array(mysql_query("select id from news order by date desc limit 1")));
}
else {
$sql = "select * from news where id = $_GET[news_id] limit 1";
}
####################################################################

For hvis der ikke er et news_id, så tildeler den det.
Avatar billede dennismp Nybegynder
12. juni 2004 - 19:09 #3
Går "next" til nyheder der er nyere end den nyeste eller bladre man baglæns?

altså:
4 -> next -> 5 -> next -> 6
eller
6 -> next -> 5 -> next -> 4

pt virker det som om at next går fra 6 -> 5 -> 4.. men du tjekker omvendt. Jeg tror udmiddelbart at dit "+1" og "-1" skal byttes om.
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 19:12 #4
den nyeste har det højeste nummer, og previous skal så gå et tak ned, og next et tak op.

og det problemet er som jeg ikke fatter, er at den gør det midt i.

der er 3 nyheder nu.

den starter på nummer 3, når man kommer ind, så hopper den til 2, når man trykker på previous, og så tilbage til 3 når man trykker på previous igen...

www.alabit.dk/BlackScorpion ind under news, så kan du se hvad jeg mener.
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 19:21 #5
hmmm kan se, at når man kommer ind uden, id, så giver den $_GET['news_id'] værdien 1... hvor den burde hive id ud fra databasen...

if(!$_GET['news_id']) {
$sql = "select * from news order by date desc limit 1";
$_GET['news_id'] = extract(mysql_fetch_array(mysql_query("select id from news order by date desc limit 1")));
}
else {
$sql = "select * from news where id = $_GET[news_id] limit 1";
}


...
Avatar billede dennismp Nybegynder
12. juni 2004 - 19:26 #6
Jeg prøver igen :-)

Hvis next skal gå frem (tak op - dvs fra 2 til 3) . hvorfor bruger du så :
$news_back = $_GET['news_id'] - 1; der hvor du laver next-knappen? Det er da lige omvendt af hvad du skrev?

ret dette:
$_GET['news_id'] = extract(mysql_fetch_array(mysql_query("select id from news order by date desc limit 1")));
til:
extract(mysql_fetch_array(mysql_query("select id from news order by date desc limit 1")));
$_GET['news_id'] = $id;

eller blot
$_GET['news_id'] = mysql_result(mysql_fetch_array(mysql_query("select id from news order by date desc limit 1")),0,0);
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 19:31 #7
det er bare teksten som folk ser... hvis jeg bytter om på + og -, så fucker den TOTALT op.

hmmm nu virker det, ved at jeg laver :

extract(mysql_fetch_array(mysql_query("select id from news order by date desc limit 1")));
$_GET['news_id'] = $id;

men ikke hvis jeg laver:
extract(mysql_fetch_array(mysql_query("select id from news order by date desc limit 1")));
$_GET['news_id'] = $id;

så får jeg en, is not a valid ressouce osv... :(

men det virker nu, bare stik omvendt af hvad jeg gerne ville have den til. :(
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 19:33 #8
vil gerne have den til, at når man skal læse de ældre nyheder, så skal man trykke tilbage. og next for at læse en nyere nyhed... og ikke omvendt...
Avatar billede dennismp Nybegynder
12. juni 2004 - 19:43 #9
Hvad er forskellen på de to stykker kode?

hvis den gør det omvendt, så er det vel ligetil at rette? Du skal vel bare bruge din "next" kode til at printe en "prev" istedet for next, og det samme med den anden stump?
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 19:47 #10
nice, er bare hamrende træt af at glo på det kode, så det tænkte jeg ikke lige på, send lige et svar, så du kan få dine point. ;)
Avatar billede dennismp Nybegynder
12. juni 2004 - 19:56 #11
Hehe - tænkte det nok at det var derfor :)
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 19:58 #12
men dennis, der kommer nok mere, for det er hele min hp, som skal rettes til... og der er ca. 250kb kode...
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 19:59 #13
252kb for at være præcis...
Avatar billede dennismp Nybegynder
12. juni 2004 - 20:02 #14
Du skriver at: "variabler med $variabel, hvor jeg nu skal have fat i $_GET og $_POST, og det er så rettet til."

du kan jo forholdsvis nemt gøre det med

$variable = $_REQUEST['variable'];

øverst i din kode. Så vil $variable jo virke som før.

alternativ kan du, selvom det er grim kode;

extract($_REQUEST);

Jeg vil selv bruge den første.

$_REQUEST er indholdet af både $_POST og $_GET.. du kan snildt bruge een af dem, hvis det passer bedre ind i din kode.
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 20:05 #15
vil det sige, at jeg kan lave en der hedder

$variable = $_REQUEST['variable'];

og så smider den ALLE de forskellige variabler ud?

eller skal jeg have fat i extract($_REQUEST); ??
Avatar billede dennismp Nybegynder
12. juni 2004 - 20:08 #16
Nej. Hvis du kalder din side domæne.dk/test.php?a=test&b=test

$a = $_REQUEST['a'];

echo "a = $a<br/>";  // udskriver "test"
echo "b = $b<br/>";  // udskriver intet

hvis du bruger

extract($_REQUEST); // (eller extract($_GET)/extract($_POST))
echo "a = $a<br/>";  // udskriver "test"
echo "b = $b<br/>";  // udskriver "test"
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 20:09 #17
ja det fandt jeg ud af... damn det kunne have sparet mig for MANGE timers arbejde.. :(
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 20:09 #18
men okey, tak for hjælpen. ;)
Avatar billede dennismp Nybegynder
12. juni 2004 - 20:11 #19
Well, sådan er det jo når man bliver bedre :-). Hvis du har 252kb kode endnu, så får du nok mulighed for at afprøve det :)
Avatar billede blackscorpion Nybegynder
12. juni 2004 - 20:12 #20
smider det ind på alle mine sider, og jeg har 252kb ialt. syntes det er temmeligt meget kode. *G*
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