Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Czy da się coś takiego zrobić w funkcji switch...?
Forum PHP.pl > Forum > Przedszkole
plastus321
Nie wiem jak do końca nazwać ten temat więc piszę ogólnie co dotej funkcji...

Czy po opcji case da się wstawić zmienną?

np.

  1.  
  2. case ''.$cos.'':
  3. echo 'coś';
  4. break;
  5.  


Jeśli tak to powiedzicie jak...


Bo chciałbym to połączyć z mysql, czyli:

Wytworzyć zapytanie które pobierze dane z "id" i podstawi to w link np. <a href="profil2.php?id='.$rekord['id'].'"> i zmienną $rekord['id'] wstawić w funkcji case.
Nie wiem czy jasno się wyraziłem mam nadzieję że tak jak coś to poprawię to jakoś.

mam coś takiego ale niestety strona która jest odczytywana jako default czyli moja strona główna otwiera stornę z case który ma tą zmienną i nie wiem czy w ogóle tak można robić w kodzie

  1. <?php
  2. require('conn.php');
  3.  
  4.  
  5. $page = $_GET['page'];
  6.  
  7.  
  8.  
  9. $query = mysql_query("select * from user order by id");
  10. while($rekord = mysql_fetch_array($query))
  11. {
  12. $naz .= '<li><a href="profil2.php?id='.$rekord['id'].'">'.$rekord['login'].'</a> Autor: '.$rekord[3].' - '.$rekord[2].'</li>';
  13. }
  14.  
  15.  
  16. $q2 = mysql_query("select * from user where id='".(int)$_GET['id']."'"); // 1
  17. $r2 = mysql_fetch_array($q2);
  18.  
  19.  
  20.  
  21. switch ($page)
  22.  
  23. {
  24. case 'wszystkieid':
  25.  
  26. echo '<ul>'.$naz.'</ul>';
  27.  
  28. break;
  29.  
  30.  
  31. case ''.$r2[0].'':
  32.  
  33. if(isset($r2['id']))
  34. {
  35.  
  36. echo '<ul>'.$r2[1].'</ul>';
  37.  
  38. }else{echo 'Nie ma takiego użytkownika';}
  39.  
  40. break;
  41.  
  42.  
  43. default:
  44. echo 'Strona z wszystkimi ID<br /><br />';
  45. echo '<a href="profil2.php?page=wszystkieid">ID</a>';
  46. break;
  47.  
  48. }
  49. ?>
nospor
Nie da się. W takim przypadku stosuje się poprostu IF a nie SWITCH
mortus
Cytat(plastus321 @ 17.04.2012, 14:45:18 ) *
Czy po opcji case da się wstawić zmienną?

Czemu miałoby się nie dać?
  1. $warunek1 = 'warunek1';
  2. $warunek2 = 'warunek2';
  3. $wybor = 'warunek2';
  4. switch($wybor) {
  5. case $warunek1:
  6. echo 'Wybór spełnia warunek 1';
  7. break;
  8. case $warunek2:
  9. echo 'Wybór spełnia warunek 2';
  10. break;
  11. }

Da się, tylko mija się to z celem i nie nadaje się do tego, co kolega chce zrobić (choć nie wiem, czy dobrze zrozumiałem wypowiedź).

EDIT:
Poprawiłem literówkę w kodzie, bo by nie działało.
plastus321
Oki zrobiłem jak mówiłeś że dałem to w funkcji IF no niby działa wszystko ale z tym mi się nasunęło jeszcze jedno pytanie...

Jak tą funkcję IF umieścić żeby to niezlewało się z funkcją switch?

W sensie że mam taki kod:

  1. <?php
  2. require('conn.php');
  3.  
  4.  
  5. $page = $_GET['page'];
  6.  
  7.  
  8.  
  9. $query = mysql_query("select * from user order by id");
  10. while($rekord = mysql_fetch_array($query))
  11. {
  12. $naz .= '<li><a href="profil2.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord[3].' - '.$rekord[2].'</li>';
  13. }
  14.  
  15.  
  16. $q2 = mysql_query("select * from user where id='".(int)$_GET['id']."'"); // 1
  17. $r2 = mysql_fetch_array($q2);
  18.  
  19.  
  20.  
  21. switch ($page)
  22.  
  23. {
  24. case 'users':
  25.  
  26. echo '<ul>'.$naz.'</ul>';
  27.  
  28. break;
  29.  
  30.  
  31. default:
  32.  
  33. echo $naz;
  34.  
  35. break;
  36.  
  37. }
  38.  
  39.  
  40. if ($_GET['id'])
  41. {
  42.  
  43. echo '<h1>'.$r2[1].'</h1>Autor: '.$r2[3].'<br/>Data: '.$r2[2].'<p>'.$r2[4].'</p>';
  44.  
  45.  
  46. }
  47.  
  48.  
  49. ?>


Pewnie powiecie żebym to wstawił w któegoś case'a ale jak wstawiłem to robi mi się tak samo jak wcześniej opisałem na początku tego artykułu...
  1.  
  2. <?php
  3. require('conn.php');
  4.  
  5.  
  6. $page = $_GET['page'];
  7.  
  8.  
  9.  
  10. $query = mysql_query("select * from user order by id");
  11. while($rekord = mysql_fetch_array($query))
  12. {
  13. $naz .= '<li><a href="profil2.php?stronkaid='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord[3].' - '.$rekord[2].'</li>';
  14. }
  15.  
  16.  
  17. $q2 = mysql_query("select * from user where id='".(int)$_GET['id']."'"); // 1
  18. $r2 = mysql_fetch_array($q2);
  19.  
  20.  
  21.  
  22. switch ($page)
  23.  
  24. {
  25. case 'users':
  26.  
  27. echo '<ul>'.$naz.'</ul>';
  28.  
  29. break;
  30.  
  31.  
  32. case 'stronka':
  33.  
  34. if ($_GET['id'])
  35. {
  36.  
  37. echo '<h1>'.$r2[1].'</h1>Autor: '.$r2[3].'<br/>Data: '.$r2[2].'<p>'.$r2[4].'</p>';
  38.  
  39.  
  40. }
  41. break;
  42.  
  43.  
  44. default:
  45.  
  46. echo $naz;
  47.  
  48. break;
  49.  
  50. }
  51.  
  52.  
  53.  
  54. ?>
  55.  



już nie wiem jak mogę to zrobić...
mortus
Kolego zauważ, że switch przełącza dla odpowiedniej wartości zmiennej $page = $_GET['page'], a ty takiej zmiennej w adresie URL nie przesyłasz i dlatego wykonuje Ci się kod domyślny (default) po wejściu na stronę, czy kliknięciu w odnośnik. Problem tak naprawdę jest banalnie prosty.
[PHP] profil2.php - pobierz, plaintext
  1. $page = isset($_GET['page']) && $_GET['page'] != '' ? $_GET['page'] : 'index'; // jeśli w adresie przesłano zmienną $_GET['page'], to przypisz zmiennej $page wartość $_GET['page'], w przeciwnym wypadku przypisz zmiennej $page wartość domyślną np. 'index'
  2. // i pora na switch-a
  3. switch($page) {
  4. case 'users':
  5. // tutaj pobieramy użytkowników z bazy danych i przy użyciu id generujemy linki <a href="profil2.php?page=user&id=ID>USER_NAME</a>, gdzie ID i USER_NAME to dane z bazy
  6. echo '<ul>';
  7. while($wiersz = pobierz_wiersz_z_wyników_zapytania) {
  8. echo '<li><a href="profil2.php?page=user&id=' . $wiersz['id'] . '>' . $wiersz['nazwa'] . '</a></li>';
  9. }
  10. echo '</ul>';
  11. break;
  12. case 'user':
  13. if(isset($_GET['id']) && $_GET['id'] != '') {
  14. // tutaj pobieramy dane tego jednego użytkownika, którego identyfikujemy po $_GET['id']
  15. }
  16. break;
  17. case 'index':
  18. default:
  19. echo '<a href="profil2.php?page=users">Pokaż wszystich użytkowników</a>';
  20. break;
  21. }
[PHP] profil2.php - pobierz, plaintext

Zwróć uwagę, jak zmienia się parametr page przesyłany w adresie URL. Niestety są to podstawy podstaw, dlatego radzę poczytać o przesyłaniu zmiennych w PHP metodą GET i POST.
plastus321
Dzięki wam! biggrin.gif

Sory że tak przytrułem dupe ale próbuję coś załapać smile.gif
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.