Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Podstrona ID
Forum PHP.pl > Forum > Przedszkole
patryk22
Witam. Mam oto taki kod PHP:
  1. <?
  2. $user = 'user bazy';
  3. $password = '******';
  4. $database = 'moja nazwa bazy';
  5.  
  6. mysql_connect('host', $user, $password);
  7. @mysql_select_db($database) or die("Nie odnaleziono bazy danych");
  8. $query="SELECT * FROM gracze";
  9. $result=mysql_query($query);
  10.  
  11. $num=mysql_numrows($result);
  12.  
  13.  
  14. echo "<b><center>Struktura bazy danych:</center></b><br><br>";
  15.  
  16. $i=0;
  17. while ($i < $num) {
  18.  
  19. $first=mysql_result($result,$i,"first");
  20. $last=mysql_result($result,$i,"last");
  21. $club=mysql_result($result,$i,"club");
  22. $pozycja=mysql_result($result,$i,"pozycja");
  23. $data=mysql_result($result,$i,"data");
  24. $country=mysql_result($result,$i,"country");
  25. $ww=mysql_result($result,$i,"ww");
  26.  
  27. echo "<b>$first $last</b><br>Klub: $club<br>Pozycja: $pozycja<br>Data urodzenia: $data<br>Narodowość: $country<br>Wzrost / Waga: $ww<br><hr><br>";
  28.  
  29. $i++;
  30. }
  31.  
  32. ?>


Chciałbym do tego dołożyć podstrony. Chodzi mi o: mojastrona.pl/player.php?id=1,2,3,4,5,6 itp. Każdy gracz z osobna. W tym momencie mam 2 wpisy w tabeli 'gracze'.

Screen z tabeli bazy danych:
http://iv.pl/images/45340069649540872165.jpeg

Chodzi mi o wyświetlenie profilu gracza o id 1,2,3,4 i tak po kolei wink.gif

Bardzo proszę o pomoc i myślę, że rozumiecie ohno-smiley.gif
pcuryllo
proponuje przekazać parametry ID poprzez metodę POST jako tablicę i wykonanie zapytania do bazy w pętli.

toaspzoo
Cytat(pcuryllo @ 18.07.2011, 19:10:35 ) *
proponuje przekazać parametry ID poprzez metodę POST jako tablicę i wykonanie zapytania do bazy w pętli.



Lepiej przez GET
  1. $id = $_GET[id'];
  2.  
  3. SELECT * FROM `users` WHERE `id` = '$id';

patryk22
Cytat(toaspzoo @ 18.07.2011, 19:13:47 ) *
Lepiej przez GET
  1. $id = $_GET[id'];
  2.  
  3. SELECT * FROM `users` WHERE `id` = '$id';


Za bardzo nie rozumiem. Wyciągnąłem wszystkie funkcje z bazy. Chyba że nie o to chodzi wstydnis.gif
peter13135
Nie wiem czy dobrze rozumiem, ale chyba chodzi Ci o takie zapytanie:
  1. SELECT * FROM users WHERE id IN(1,2,3,4,5,6)


jak masz tablicę typu
  1. array(1,2,3,4,5,6)
to możesz przerobić ją na string za pomocą
  1. array_implode(',', $tablica)
patryk22
Dopiero zaczynam przygodę z PHP, więc was nie rozumiem.. Może ktoś poda kod ? wstydnis.gif

Edit: Mam tu kod systemu newsów.. I jest zrobione że news może być wyświetlany osobno:
  1. <?
  2. // lacze sie z baza
  3. require('db_connect.php');
  4. // jesli wybrano jakis konkretny news
  5. if(intval($_GET['newsid']))
  6. {
  7. // powrot do wszystkich newsow (nazwa news.php jest oczywiscie dla przykladu)
  8. echo '<p><a href="news.php">Najnowsze newsy</a></p>';
  9.  
  10. // pobieram newsa
  11. $sql="SELECT DATE_FORMAT(dodano, '%e-%m-%Y %H:%i') AS utworzono, autor, tresc FROM newsy WHERE id='".intval($_GET['newsid'])."'";
  12. $query=mysql_query($sql);
  13. if($result=mysql_fetch_assoc($query))
  14. {
  15. // zawartosc newsa
  16. echo '<p>'.nl2br($result['tresc']).'</p>';
  17. // autor
  18. echo '<p><i>'.$result['autor'].' ('.$result['utworzono'].')</i></p>';
  19. // oddzielam od komentarzy
  20. echo '<hr>Komentarze:<br>';
  21.  
  22. // dopisuje komentarz do bazy
  23. if($_POST)
  24. {
  25. if((trim($_POST['autor'])) && (trim($_POST['tekst'])))
  26. {
  27. if(mysql_query("INSERT INTO komentarze VALUES('', '".intval($_GET['newsid'])."',
  28. NOW(), '".trim(htmlspecialchars($_POST['autor']))."', '".trim(htmlspecialchars($_POST['tekst']))."')"))
  29. echo 'Dodałem komentarz';
  30. else echo 'Nie mogłem dodać komentarza';
  31. }
  32. else echo 'Nie dopisałem komentarza - podaj swoje imię i wpisz jakiś komentarz!';
  33. echo '<br>';
  34. }
  35.  
  36. // pobieram komentarze do newsa od najstarszego do najnowszego
  37. $sql="SELECT DATE_FORMAT(dodano, '%e-%m-%Y %H:%i') AS utworzono, autor, tresc FROM komentarze WHERE id='".intval($_GET['newsid'])."'";
  38. $query=mysql_query($sql);
  39. while($result=mysql_fetch_assoc($query))
  40. {
  41. print('<p>'.nl2br($result['tresc']).' ('.$result['autor'].'/'.$result['utworzono'].')</p>');
  42. }
  43.  
  44. // formularz do dodawania komentarza
  45. ?>
  46. <hr>
  47. <form name="komentarz" method="post" action="news.php?newsid=<? echo intval($_GET['newsid']); ?>">
  48. Dodaj komentarz:<br>
  49. <textarea name="tekst" rows="5" cols="40"></textarea><br>
  50. Autor:<br>
  51. <input type="text" name="autor"><br>
  52. <input type="reset" value="wyczyść"> <input type="submit" value="wyslij">
  53. </form>
  54. <?
  55. }
  56. }
  57. // wszystkie newsy
  58. else
  59. {
  60. // pobieram newsy w kolejnosci od najnowszego do najstarszego
  61. // przy pomocy zlaczenia z drugiej tabeli wyciagam ilosc komentarzy dla każdego newsa
  62. $sql="SELECT newsy.id, DATE_FORMAT(newsy.dodano, '%e-%m-%Y %H:%i') AS utworzono,
  63. newsy.autor, newsy.tresc, COUNT(lp) AS il_kom
  64. FROM newsy
  65. LEFT JOIN komentarze ON (komentarze.id=newsy.id)
  66. GROUP BY newsy.id ORDER BY newsy.dodano DESC";
  67. $query=mysql_query($sql);
  68. while($result=mysql_fetch_assoc($query))
  69. {
  70. // zawartosc newsa
  71. echo '<p>'.nl2br($result['tresc']).'</p>';
  72. // autor
  73. echo '<p><i>'.$result['autor'].' ('.$result['utworzono'].')</i></p>';
  74. // ilosc komentarzy i link do nich
  75. echo '<p><a href="news.php?newsid='.$result['id'].'">Komentarze: ('.$result['il_kom'].')</a></p>';
  76. // oddzielam od pozostalych
  77. echo '<hr>';
  78. }
  79. }
  80. ?>
toaspzoo
Cytat(patryk22 @ 18.07.2011, 20:03:53 ) *
Dopiero zaczynam przygodę z PHP, więc was nie rozumiem.. Może ktoś poda kod ? wstydnis.gif


Ty zaczynasz wojnę
patryk22
Na prawdę mi to potrzebne biggrin.gif Pomocy wink.gif
peter13135


w swoim skrypcie z pierwszego postu zamień tylko swoje zapytanie na :
  1. $query='SELECT * FROM gracze where id in(' . $_GET['idki'] . ')';//zabezpiecz to sobie


i odpalaj skrypt poprzez index.php?idki=1,3,5,7,9,10
patryk22
Cytat(peter13135 @ 18.07.2011, 20:24:42 ) *
w swoim skrypcie z pierwszego postu zamień tylko swoje zapytanie na :
  1. $query='SELECT * FROM gracze where id in(' . $_GET['idki'] . ')';//zabezpiecz to sobie


i odpalaj skrypt poprzez index.php?idki=1,3,5,7,9,10


Rozumiem.... A co z pozostałymi danymi ? Przecież pobrałem wszystkie tabele z 'gracze'. CHyba że ja jestem jakiś nierozumny wstydnis.gif


Dobra rozumiem biggrin.gif Podmieniłem, działa.. Lecz teraz na głównej wywala:
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/a1973396/public_html/plazeee.php on line 11

I co teraz haha.gif
peter13135
Za każdym razem będziesz się pytał o takie bzdety questionmark.gif
Masz taki błąd, bo zapytanie było nieprawdiłowe. daj echo mysql_error() to będziesz wiedział o co chodzi.
Dałem Ci tylko przykład, pokazałem jak możesz pobrać kilku userów znając ich ID. Teraz ty sam sobie to poskładaj tak jak chcesz. Domyślam się, że nie działa, bo albo nie ma parametru idki albo jest on błędny (w sensie, że nie są to liczby oddzielone przecinkami), daj pare ifów, jakieś sprawdzanie danych i będzie dobrze.
patryk22
Cytat(peter13135 @ 18.07.2011, 20:45:37 ) *
Za każdym razem będziesz się pytał o takie bzdety questionmark.gif
Masz taki błąd, bo zapytanie było nieprawdiłowe. daj echo mysql_error() to będziesz wiedział o co chodzi.
Dałem Ci tylko przykład, pokazałem jak możesz pobrać kilku userów znając ich ID. Teraz ty sam sobie to poskładaj tak jak chcesz. Domyślam się, że nie działa, bo albo nie ma parametru idki albo jest on błędny (w sensie, że nie są to liczby oddzielone przecinkami), daj pare ifów, jakieś sprawdzanie danych i będzie dobrze.


Już sobie poradziłem przed przeczytaniem tego posta wink.gif Nie było pobranych niektórych rzeczy z bazy. Temat do zamknięcia.
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.