Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zrobić by adres strony był...
Forum PHP.pl > Forum > Przedszkole
mat_1200
Witam!!
Mam problem. Chce żeby adres strony był np taki: index.php?id=1
Słyszałem, że trzeba użyć do tego $_GET - a , ale nie wiem jak. Sam skonstruowałem taki oto kod:
  1. <?
  2.  
  3. if ($_GET['go'] !== '') {
  4.  
  5. switch
  6. case 1:
  7. include'index.php';
  8. break;
  9.  
  10. case 2:
  11. include'a.txt';
  12. break;
  13.  
  14. case 3:
  15. include'index2.php';
  16. break;
  17.  
  18. default:
  19.  include'index.php';}
  20.  
  21. ?>
  22. <a href="get.php?go=1">1</a>
  23. <a href="get.php?go=2">2</a>
  24. <a href="get.php?go=3">3</a>


Lecz wyświetla mi Parse Error. Korzystam w Krasnal-SERV.
Pomóżcie!!!!!!!
nospor
przyjrzyj sie skladni switch a sam bedziesz wiedzial gdzie masz blad:
http://pl.php.net/manual/pl/control-structures.switch.php
imashjan
Naprzykład można zrobić tak:
  1.  <?
  2.  $id=$_GET["id"];
  3. if(!isset($id)) {
  4. include("dane/tresc.php");
  5. }
  6. else {
  7. if(is_file("dane/$id.php")) {
  8. include("dane/$id.php");
  9. }
  10. else
  11. echo "<div class=tresc>Blad taka strona nie istnieje</div>";
  12. }
  13.  ?>
nospor
@imashjan brawoooo. Najpierw pobierac cos a potem dopiero patrzysz czy to cos istenieje. jeszzcze raz brawo.
mat_1200
Mam pytanie do imashjan'a czy ten kod bedzie dziala jesli bede chcial wincludowac w strone inna strone?

======================
Zmieniłem kod. Teraz wyglada tak:

  1. <?
  2. $go = $_GET['go'] ;
  3. if ($_GET['go'] !== '') {
  4.  
  5. switch ($go)
  6. case 1:
  7. include'index.php';
  8. break;
  9.  
  10. case 2:
  11. include'a.txt';
  12. break;
  13.  
  14. case 3:
  15. include'index.php';
  16. break;
  17.  
  18. default:
  19.  include'index.php';}
  20.  
  21. ?>
  22. <a href="get.php?go=1">1</a>
  23. <a href="get.php?go=2">2</a>
  24. <a href="get.php?go=3">3</a>


I wyświetla mi "Parse error: parse error, expecting `':'' or `'{'' in c:\usr\apache\httpd\html\www\site kod\php\get.php on line 6".
imashjan
1) ten kod pochodzi od kess-a on na swojej stronie mial jako przyklad, to wystarczy zamienic chyba nie, niech najpierw sprawdza, a potem dobiero dziala,
2) nie wiem ja tylko includuje pliki, a nie cale strony,
nospor
@mat_1200 * zajrzales do tego manuala? Bo chyba nie. Jaka jest skladania switch? NIe zapomaniales o {? potem tylko nie zapomnij zamknac dla switcha i dla ifa
mat_1200
Dobra jakos to choadzi ale wyswietla mi sie zawartość a.txt
nospor
bo pewnie masz w url go=2

i nie kasuj swoich postow bo potem niedomowienia wychodza
mat_1200
Dzieki wam! biggrin.gif

Mam problem. Gdy wpisze index.php?go=1 to wyswieli mi sie strona startowa a gdy wpisze index.php?go=4 to strona sie nie zmieni czemu??

  1. <?
  2. $go = $_GET['go'] ;
  3. if ($_GET['go'] !== '') {
  4.  
  5. switch ($go) {
  6. case 1:
  7. include'tables/table_news.php';
  8. break;
  9.  
  10. case 2:
  11. include'fragments/rekrutacja.php';
  12. break;
  13.  
  14. case 3:
  15. include'fragments/sparing.php';
  16. break;
  17.  
  18. case 4:
  19. include'fragments/wojny_klanowe.php';
  20. break;
  21.  
  22. case 5:
  23. include'fragments/historia_klanu.php';
  24. break;
  25.  
  26. case 6:
  27. include'fragments/trening.php';
  28. break;
  29.  
  30. case 7:
  31. include'fragments/news.php';
  32. break;
  33.  
  34. case 8:
  35. include'fragments/server.php';
  36. break;
  37.  
  38. case 9:
  39. include'fragments/ts.php';
  40. break;
  41.  
  42. case 10:
  43. include'fragments/czarna_lista.php';
  44. break;
  45.  
  46. case 11:
  47. include'fragments/weterani.php';
  48. break;
  49.  
  50. case 12:
  51. include'fragments/regulamin.php';
  52. break;
  53.  
  54. case 13:
  55. include'fragments/download.php';
  56. break;
  57.  
  58. case 14:
  59. include'fragments/galeria.php';
  60. break;
  61.  
  62. case 15:
  63. include'fragments/polskie_klany.php';
  64. break;
  65.  
  66. case 16:
  67. include'fragments/bany.php';
  68. break;
  69.  
  70. case 17:
  71. include'fragments/linki.php';
  72. break;
  73.  
  74. case 18:
  75. include'fragments/forum.php';
  76. break;
  77.  
  78. case 19:
  79. include'fragments/kalendarz.php';
  80. break;
  81.  
  82. case 20:
  83. include'fragments/ksiega_gosci.php';
  84. break;
  85.  
  86. case 21:
  87. include'fragments/kontakt.php';
  88. break;
  89.  
  90. default:
  91.  include'tables/table_news.php';
  92. }
  93.  }
  94.  
  95. ?>
mike
Tablic mógłbyś sie nauczyć. W życiu Ci łatwiej będzie:
  1. <?php
  2.  
  3. $arrIncludes = array( 
  4. 0 => 'tables/table_news.php',
  5. 1 => 'tables/table_news.php',
  6. 2 => 'fragments/rekrutacja.php',
  7. 3 => 'fragments/sparing.php',
  8. 4 => 'fragments/wojny_klanowe.php'
  9. );
  10.  
  11. $_GET[ 'go' ] = ( empty( $_GET[ 'go' ] ) ) ? 0 : $_GET[ 'go' ];
  12.  
  13. include( $arrIncludes[ $_GET[ 'go' ] ] );
  14.  
  15. ?>
Balon
Chyba najlatwiejszy sposob

  1. <?
  2. if($id=="1") { include "inc/jakasstrona.php"; }
  3. elseif($id=="2") { include "inc/jakasstrona2.php"; }
  4. elseif($id=="3") { include "inc/jakasstrona3.php"; }
  5. else { include "inc/jakasstrona.php"; }
  6. ?>
mike
Cytat(Balon @ 2005-12-18 21:55:56)
Chyba najlatwiejszy sposob (...)

... i tak samo beznadziejny jak pomysł mat_1200 tongue.gif
mat_1200
Jest ten sam efekt zrówno przy moim kodzie jak i tym z tablicami

P.S. Umiem tablice(Rzadko je stosuje:))
ens0re
A obczaj taki skrypt:
  1. <?
  2. $id = $_GET['id'];
  3. if ( !isset ( $id ) ) include ( "id/news.txt" );
  4. else if ( is_file ( 'id/'.$id.'.txt' ) ) include ( 'id/'.$id.'.txt' );
  5. else echo ( 'Przepraszamy...Strona Nie Istnieje!!!' );
  6. ?>

Pliki *.txt w katalogu ID, linki: index.php?id=link...
mat_1200
ostatni skrypt mi nie chodzi...

Mi chodzi o to że jak klikne na inny link to strona wgrywa sie ta sama!!
Ociu
Cytat
P.S. Umiem tablice(Rzadko je stosuje:))

Widze, że kolega zatrzymał się na skrypcie
  1. <?php print 'Hello world!'; ?>

A nie, sory:
  1. <?php
  2. echo("Hello World!");
  3. ?>
HubbaBubba
pisze sie "!=" a nie "!=="

  1. <?
  2.  
  3. if ($_GET['go'] != '') {
  4.  
  5.  
  6. ?>
mike
Cytat(HubbaBubba @ 2005-12-20 12:24:48)
pisze sie "!=" a nie "!=="
LOL laugh.gif

Pisze się i tak, i tak. To są dwie różne rzeczy a nie literówka jak Ci się wydaje tongue.gif
dtb
ja proponuje to zrobic w ten sposob:

table.txt:
Kod
tables/table_news.php
fragments/rekrutacja.php
fragments/sparing.php
(..)


index.php:
  1. <?php
  2. $uchwyt = fopen ("table.txt", "r");
  3. for ($i=1;!feof ($uchwyt) AND $i>0; $i++) {
  4.  $buffer = fgets($uchwyt, 64);
  5.  if ($_GET['go'] == $i)
  6. {
  7. include $buffer;
  8. $i=-1;
  9. }
  10. }
  11. fclose ($uchwyt);
  12. ?>
Ociu
a ja proponuje tak:
  1. <?php
  2. if(isset($_GET['go'])) {
  3. $file = file('pliki.txt');
  4. include_once($file[$_GET['go']]);
  5. }
  6. ?>


pozdrawiam
roobik
Witam!
to ja tak szybko do tematu:
robię podstrony z rozwiązywaniem zadań (a sam zadaję zadanie smile.gif ) no i teraz tak:
  1. <?php
  2. if (isset($_GET['id']))
  3. {
  4. if (isset($_GET['zadanie']))
  5. $pokaz = $_GET['zadanie'];
  6. else
  7. $pokaz = 'zadanie';
  8. $zapytanie = "SELECT $pokaz id FROM szkola where id=".$_GET['id'];
  9. $wykonaj = mysql_query($zapytanie) or die(mysql_error()) ;
  10. while($id = mysql_fetch_array($wykonaj))
  11.  
  12.  
  13. {
  14. echo $id['id']."<BR><BR>";
  15. }
  16. }
  17. else
  18. echo '
  19. strona tytułowa zadań (dajmy na to)
  20. ';
  21. ?>

ok, to działa w jedną stronę a mianowicie np:
Cytat
www.server.pl/zadanie.php?id=1


problem pojawił się teraz, gdy rozbudowuję dział. Zamiarem moim jest zrobienie 3 stopni trudności na zasadzie takiej, że
- jak wpiszę
Cytat
www.server.pl/zadanie.php
pojawi się strona tytułowa z wyborem stopni trudności
- jak wpiszę
Cytat
www.server.pl/zadanie.php?id=1&poziom=1
to będzie to zadanie 1 o stopniu trudności najniższym , a jak wpiszę
Cytat
www.server.pl/zadanie.php?id=1&poziom=3
to będzie to zad.1 z poziomu najwyższego.

Druga sprawa: czy w związku z powyższym strona po wyborze stopnia trudności, ale dopiero z treścią, po kliknięciu której będzie odpowiedź, będzie miała postać
Cytat
www.server.pl/zadanie.php&poziom=1
?

Bardzo proszę o pomoc...
Spirit86
  1. <?php
  2. $id = (int) $_GET['id'];
  3. $stopien = (int) $_GET['stopien;'];
  4. $zapytanie = 'SELECT '.$pokaz.', id FROM szkola where id='.$id.' AND stopien='.$stopien;
  5. ?>


ostatniego pytania nie rozumiem :]
roobik
Dzięki za szybką odp! Zaraz to sprawdzę smile.gif

no tak... jak zwykle za bardzo zamotałem.
chodzi o to by po wyborze stopnia trudności pokazały się wszystkie zadania ale TYLKO z tego stopnia trudności - i znów zamieszałem smile.gif

Ps.
W tabeli szkola mam po kolei: id, poziom, porada
Może to coś pomoże...

Ps.2
coś nie tego ... po wpisaniu
Cytat
(...)zadanie.php
wyskakuje mi błąd
Cytat
You have an error in your SQL syntax near ' id FROM szkola where id=0 AND stopien=0' at line 1


Ps.3
Czy cały mój kod mam zastąpić tym, który mi podałeś? Czy coś tylko zmienić?
Spirit86
podaj strukturę bazy danych.
roobik
# phpMyAdmin MySQL-Dump
# version 2.2.3
# http://phpwizard.net/phpMyAdmin/
# http://phpmyadmin.sourceforge.net/ (download page)
#
# Host: localhost
# Czas wygenerowania: 03 Sty 2006, 20:05
# Wersja serwera: 3.23.47
# Wersja php: 4.1.1
# Baza danych : `1`
# --------------------------------------------------------

#
# Struktura tabeli dla `szkola`
#

CREATE TABLE szkola (
id int(11) NOT NULL auto_increment,
poziom int(11) NOT NULL default '0',
porada varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;

#
# Zrzut danych dla tabeli `szkola`
#

INSERT INTO szkola VALUES (1, 1, 'porada 1 z poziomu 1');
INSERT INTO szkola VALUES (2, 2, 'porada 1 z poziomu 2');
Spirit86
  1. <?php
  2.  
  3. ?>


  1. <?php
  2. if (isset($_GET['id']))
  3. {
  4. if (isset($_GET['zadanie']))
  5. $pokaz = $_GET['zadanie'];
  6. else
  7. $pokaz = 'zadanie';
  8. $id = (int) $_GET['id'];
  9. $stopien = (int) $_GET['stopien;'];
  10. $zapytanie = 'SELECT id FROM szkola where id='.$id.' AND poziom='.$stopien.' LIMIT 1';
  11. $wykonaj = mysql_query($zapytanie) or die(mysql_error()) ;
  12. while($id = mysql_fetch_array($wykonaj))
  13.  
  14.  
  15. {
  16. echo $id['id']."<BR><BR>";
  17. }
  18. }
  19. else
  20. echo '
  21. strona tytułowa zadań (dajmy na to)
  22. ';
  23. ?>
roobik
jest prawie OK - dzięki!
Prawie, ponieważ przy wyborze np
Cytat
zadanie.php?id=1&poziom=1

pojawia się pusta strona - w źródle nic też nie ma ...
ale może sam dojdę.... może...

//edit:
Po zmianach:
  1. <?
  2. $sql = mysql_connect("localhost", "", "");
  3. ?> 
  4. <?php
  5. if (isset($_GET['id']))
  6. {
  7. if (isset($_GET['porada']))
  8. $pokaz = $_GET['porada'];
  9. else
  10. $pokaz = 'porada';
  11. $id = (int) $_GET['id'];
  12. $stopien = (int) $_GET['poziom'];
  13. $zapytanie = 'SELECT id FROM szkola where id='.$id.' AND poziom='.$stopien.' LIMIT 1';
  14. $wykonaj = mysql_query($zapytanie) or die(mysql_error()) ;
  15. while($id = mysql_fetch_array($wykonaj))
  16.  
  17.  
  18. {
  19. echo $id['id']."<BR><BR>";
  20. }
  21. }
  22. else
  23. echo '
  24. strona tytułowa zadań (dajmy na to)
  25. ';
  26. ?>

już jest lepiej - ale zamiast porady wyskakuje mi tylko numer id sad.gif
Spirit86
no zależy co chcesz pobrać.


  1. <?
  2. $sql = mysql_connect("localhost", "", "");
  3. ?> 
  4. <?php
  5. if (isset($_GET['id']))
  6. {
  7. if (isset($_GET['porada']))
  8. $pokaz = $_GET['porada'];
  9. else
  10. $pokaz = 'porada';
  11. $id = (int) $_GET['id'];
  12. $stopien = (int) $_GET['poziom'];
  13. $zapytanie = 'SELECT porada FROM szkola where id='.$id.' AND poziom='.$stopien.' LIMIT 1';
  14. $wykonaj = mysql_query($zapytanie) or die(mysql_error()) ;
  15. while($id = mysql_fetch_array($wykonaj))
  16.  
  17.  
  18. {
  19. echo $id['porada']."<BR><BR>";
  20. }
  21. }
  22. else
  23. echo '
  24. strona tytułowa zadań (dajmy na to)
  25. ';
  26. ?>
roobik
Spirit86 -> wielkie dzięki! O to mi właśnie chodziło smile.gif Już widzę jaki błąd robiłem smile.gif

wiem , że będę teraz marudził - ale to jest ostatni raz...
Z pewnościąznajdą się Internauci, którzy delikatnie mówiąc nie korzystająz linków, tylko wpisują adres na chybił-trafił. Powiedzmy, że mam po 20 rekordów w bazie (o różnym stopniu trudności), czyli w sumie 60 rekordów. Czy jest jakaś rada na to, by jeśli taki "ktoś" wpisze id większe od tego, ile baza ma rekordów, to żeby przerzucało go na stronę główną (w tym przypadku zadanie.php) lub ewentualnie, żeby został na tej stronie, z której "kombinuje" adres (ew. z informacją o błędzie)?

Co prawda nie jest to konieczne, ale jeśli istnieje taka możliwość...
Z góry wielki dzięki za odp!
(polecam się na przyszłość! smile.gif )
Spirit86
Na przykład tak:


  1. <?
  2. $sql = mysql_connect("localhost", "", "");
  3. ?> 
  4. <?php
  5. if (isset($_GET['id']))
  6. {
  7. if (isset($_GET['porada']))
  8.     $pokaz = $_GET['porada'];
  9.     else
  10.   $pokaz = 'porada';
  11. $id = (int) $_GET['id'];
  12. $stopien = (int) $_GET['poziom'];
  13. $zapytanie = 'SELECT porada FROM szkola where id='.$id.' AND poziom='.$stopien.' LIMIT 1';
  14. $wykonaj = mysql_query($zapytanie) or die(mysql_error()) ;
  15. while($id = mysql_fetch_array($wykonaj))
  16.  
  17.  
  18. {
  19. if(!empty($id['porada'])) echo $id['porada']."<BR><BR>";
  20. else header('Location: zadanie.php');
  21. }
  22. }
  23. else
  24. echo '
  25. strona tytułowa zadań (dajmy na to)
  26. ';
  27. ?>
mat_1200
A ja mam adres index.php?id=3&player=playerMati i gdy wchodzę na tą strone pokazuje się to co jest po drugiej zmiennej czyli playerMati i treść. Jak mam usunąć ten playerMati??

PS przy innych playerach tez jest ten sam efekt
///////////
EDIT
//////////

odwołuje pytanie


juz wiem:D
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.