Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomocy PHP GET
Forum PHP.pl > Forum > PHP
sonquer
Czemu ten skrypt nie działa ?

Zamiast id=1 i id=2 mam podstawione $row['id'];

____________________________________________

  1. <? include 'cfg.php';
  2.  
  3. $sql = mysql_query("SELECT * FROM forum_temat");
  4.  
  5. $show = (int)$_GET['show'];
  6. $id = $_GET['id'];
  7.  
  8. switch($show):
  9. case 1:
  10. for($i=0; $i<$row=mysql_fetch_assoc($sql); $i++){
  11.  
  12. if($row['dzial'] == pp){
  13. echo '<a href="index.php?id='.$row[id].'">'.$row['temat'].'</a>';
  14. echo "</br>";
  15. }
  16. }
  17. break;
  18. case 2:
  19. for($i=0; $i<$row=mysql_fetch_assoc($sql); $i++){
  20.  
  21. if($row['dzial'] == dorg){
  22. echo '<a href="index.php?id='.$row[id].'">'.$row['temat'].'</a>';
  23. echo "</br>";
  24. }
  25. }
  26. break;
  27. default:
  28.  
  29. echo '<a href="index.php?show=1">Pierwsza Pomoc</a>';
  30. echo "</br>";
  31. echo '<a href="index.php?show=2">Dyskusje o rozwoju Gry</a>';
  32.  
  33. break;
  34. endswitch;
  35.  
  36. if($id == 1){
  37. echo 'test';
  38. }
  39.  
  40. if($id == 2){
  41. echo 'test2';
  42. }
  43. ?>
abort
W instrukcji for($i=0; $i<$row=mysql_fetch_assoc($sql); $i++) porównujesz jabłka i krowy. Serio.
$i jest zmienną całkowitą, zmienna $row to jest wiersz w tablicy bazy danych przekazany jako tablica.

Porównujesz tablicę (array) z liczbą całkowitą.

Poczytaj (na sieci - tutoriali jest mnóstwo) o tym, co i w jakiej formie zwraca mysql_fetch_assoc, jesli nie będziesz wiedział, wypluj sobie to na ekran (pomocne funkcje: print_r, var_dump) i zobaczysz, o co kaman. To nawet nie przedszkole - to elementarz.

P.S.
skrypt php warto zaczynać od "<?php" - "<?" to skrócona postać, nie wszędzie obsługiwana.
sonquer
abort

to działa bez zarzutu pobiera wszystkie zmienne jak while.

a dokładnie chodzi mi o to że nie pokazuje mi :

index.php?id=1 // index.php?id=2

a dokładnie zawartości tego.

to co napisałeś nie jest do końca prawdą. ale nie będę się sprzeczał.
Jak chcesz to zobacz :

http://www.piszemystrony.pl/1/forum/


Jbc.

TEST i TESTT

są rekordami z bazy danych
abort
Z tego co widzę, w switchu przy każdym case odczytujesz z bazy do PHP całą tabelę po to, by znaleźć jeden wiersz. Zmień zapytanie do bazy na przykład na
  1. SELECT * FROM forum_temat WHERE dzial = 'pp'

Jest wydajniej - w sumie po co obrabiać w PHP, skoro po coś wymyślono bazy danych?

Poza tym, masz mnóstwo błędów składni PHP - aż cud, że kod działa. Włącz sobie wyświetlanie tych błędów, np. dopisz na początku pliku:

Jeśli już się uczysz pisać, to niech to będzie poprawne składniowo - jak się uczyć, to porządnie. Oprócz rzeczy, o których wcześniej wspomniałem, warto zqauwazyć:
1. if($row['dzial'] == pp) - co to jest to pp? Na zmienną mi nie wygląda (zmienne zaczynamy od "$"), na ciąg znaków też nie - te "owijamy" w apostrofy lub cudzysłowy
2. echo '<a href="index.php?id='.$row[id].'">'.$row['temat'].'</a>'; -- masz $row[id] i $row['temat'] - ciutke konsekwencji pliz

A co do Twojego pytania i problemu: a jak wygląda baza, co w niej masz?
sonquer
if($row['dzial'] == pp)

: Jeżeli dzial jest równy pp pokaż zawartość.

tak wygląda db :

  1. CREATE TABLE `forum_temat` (
  2. `id` INT(11) NOT NULL AUTO_INCREMENT ,
  3. `dzial` VARCHAR(32) NOT NULL ,
  4. `temat` VARCHAR(32) NOT NULL ,
  5. `autor` VARCHAR(32) NOT NULL ,
  6. `tresc` VARCHAR(10000) NOT NULL ,
  7. PRIMARY KEY (`id`)
  8. );
abort
Już pisałem. Taka konstrukcja powoduje, że PHP nie wie, czy porównujesz do zmiennej, czy do ciagu znaków. W związku z tym nie pisz:
  1. if($row['dzial'] == pp)

bo PHP nie wie, jak to zinterpretować. Pomóż mu i zastosuj jedną z dwóch możliwości:
  1. // jeśli porównujesz z zawartością zmiennej
  2. if($row['dzial'] == $pp)
  3.  
  4. // jeśli porównujesz z ciągiem znaków określonym w kodzie.
  5. // możesz zastosować apostrofy zamiast cudzysłowów, zadziała identycznie
  6. if($row['dzial'] == "pp")


Poza tym dodaj sobie na początku kodu
  1. ini_set('display_errors','On'); // tego ostatnio zapomniałem


I pousuwaj wszelkie błędy, które Ci się wyświetlą.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.