Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]jak wyświetlić rekord danego użytkownika
Forum PHP.pl > Forum > Przedszkole
krzychu0808
Witam....
mam książkę ale coś te skrypty z książki są kitowe może dlatego że są z 2000 roku ale napisałem skrypt który wyświetla wszystkich użytkowników z bazy danych i odpowiednie informacje.. ale chcę zrobić żeby po kliknięciu wyświetl rekord wyświetlał się w nowej stronie rekord danego użytkownika i jakieś tam jego dane.. proszę o pomoc...

wygląda to tak: Link

Mój skrypt:
  1. <?php
  2. $spacja = " ";
  3. $link_id = mysql_connect("localhost","root","xxx") or die("błąd połączenia");
  4. mysql_select_db("sample_db", $link_id) or die("błąd przy wyborze bazy");
  5.  
  6.  
  7. $query = "SELECT * FROM user";
  8. $result = mysql_query($query, $link_id);
  9.  
  10. if(!$result) {
  11.  die("błąd");
  12. }
  13. else {
  14. ?>
  15. <br/>
  16.  <div align="CENTER">
  17.  <table border="1" width="90%" cellpadding="2">
  18.  <TR>
  19.  <TH width="25%" nowrap>
  20.  Numer użytkownika
  21. </TH>
  22. <TH width="25%" nowrap>
  23. ID użytkownika
  24.  </TH>
  25.  
  26.  <TH width="25%" nowrap>
  27. Nazwa Użytkownika
  28.  </TH>
  29.  <TH width="25%" nowrap>Akcja</TH>
  30.  
  31.  </TR>
  32.  <?php
  33.  while ($query_data = mysql_fetch_array($result)) {
  34.  $usernumber = $query_data["usernumber"];
  35.  $userid = $query_data["userid"];
  36.  $username = $query_data["username"];
  37.  echo "<TR>\n";
  38.  echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$usernumber</TD>\n";
  39.  echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$userid</TD>\n";
  40.  echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$username</TD>\n";
  41.  echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">
  42.  <A HREF=\"link\">Wyświetl rekord</A></TD>\n";
  43.  echo "<TR>\n";
  44.  }
  45.  ?>
  46.  </table>
  47.  </div>
  48.  <?php
  49. }
  50.  ?>
  51. </body>
  52. </html>
rzymek01
rozwiązanie jest proste smile.gif

w linku WYŚWIETL REKORD dodajesz id usera:
Kod
43. <A HREF=\"?id=$userid\">Wyświetl rekord</A></TD>\n";


i załóżmy gdzieś na początku pliku (oczywiście po sprawdzenie, czy $_GET['id'] jest liczbą) dodajesz szczegóły usera:
linię 14 zamień na:
Kod
elseif ($_GET['id'])
{
... //tutaj zapytanie z WHERE userid = $_GET['id'] i wybranie szczegółów
}
else
{


Pozdrawiam!
krzychu0808
można prosić jaśniej bo coś mi nie wychodzi ;p
szogun1987
Chodzi o to że skrypt docelowy nie wie którego użytkownika ma wyświetlić należy mu to jakoś powiedzieć np dopisując do linka po znaku zapytania w postaci index.php?zmienna=wartosc&zmienna2=wartosc2 itd, następnie aby odczytać to co jest po znaku zapytania trzeba odwołać się do specjalnej zmiennej globalnej $_GET ktora jest indeksowana nazwami zmiennych
np.
$zmienna1= $_GET['zmienna1'];
$zmienna2= $_GET['zmienna2'];
krzychu0808
hehe ja jestem początkujący ;p mogła by jakaś doba duszyczka wkomponować w mój kod to wszystko questionmark.gifquestionmark.gif bo wogóle nie wiem co mam z tym wszystkiem zorbić
szogun1987
CODE

<?php
error_reporting(E_ALL);
$spacja = " ";
$link_id = mysql_connect("localhost","root","xxx") or die("błąd połączenia");
mysql_select_db("sample_db", $link_id) or die("błąd przy wyborze bazy");

if (isset($_GET['userid'])) //sprawdzamy czy link zawiera ?userid=
{
$query = "SELECT * FROM user WHERE userid=".$_GET['userid']; //jeśli tak to pobieramy tylko rekord tego użytkownika
}else{
$query = "SELECT * FROM user"; //w przeciwnym wypadku pobieramy rekordy wszystkich użytkowników
}
$result = mysql_query($query, $link_id);

if(!$result) {
die("błąd");
}
else {
?>
<br/>
<div align="CENTER">
<table border="1" width="90%" cellpadding="2">
<TR>
<TH width="25%" nowrap>
Numer użytkownika
</TH>
<TH width="25%" nowrap>
ID użytkownika
</TH>

<TH width="25%" nowrap>
Nazwa Użytkownika
</TH>
<TH width="25%" nowrap>Akcja</TH>

</TR>
<?php
while ($query_data = mysql_fetch_array($result)) {
$usernumber = $query_data["usernumber"];
$userid = $query_data["userid"];
$username = $query_data["username"];
echo "<TR>\n";
echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$usernumber</TD>\n";
echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$userid</TD>\n";
echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$username</TD>\n";
echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">
<A HREF=\"show_more_db2.php?userid=$userid\">Wyświetl rekord</A></TD>\n";
echo "<TR>\n";
}
?>
</table>
</div>
<?php
}
?>
</body>
</html>

powinno chodzić ale ręki sobie obciąć nie dam:P
krzychu0808
a co trzeba zrobić aby wyświetlić rekordy z danego id bo nie widze tego w kodzie jak kliknę w wyświetl rekord to mam błąd
szogun1987
Dodać
"WHERE userid='jakaś_wartosc'"
do zapytania :|
krzychu0808
dalej gdy kliknę mam błąd zorbiłem
  1. <?php
  2. $query = "SELECT * FROM user WHERE userid='usergg'".$_GET['userid']; //jeśli tak to pobieramy tylko rekord tego użytkownika
  3. ?>


cały kod
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <title>Wyświetlanie
  6. </title>
  7. <style type="text/css">
  8. * { margin: 0px; padding: 0px; }
  9. body {
  10. background-color: #d7d7d7;
  11. font-family:Verdana, Arial, Helvetica, sans-serif;
  12. }
  13. </style>
  14. </head>
  15.  
  16. <body>
  17. <?php
  18. $spacja = " ";
  19. $link_id = mysql_connect("localhost","root","x") or die("błąd połączenia");
  20. mysql_select_db("sample_db", $link_id) or die("błąd przy wyborze bazy");
  21.  
  22. if (isset($_GET['userid'])) //sprawdzamy czy link zawiera ?userid=
  23. {
  24. $query = "SELECT * FROM user WHERE userid='usergg'".$_GET['userid']; //jeśli tak to pobieramy tylko rekord tego użytkownika
  25. }else{
  26. $query = "SELECT * FROM user"; //w przeciwnym wypadku pobieramy rekordy wszystkich użytkowników
  27. }
  28. $result = mysql_query($query, $link_id);
  29.  
  30. if(!$result) {
  31. die("błąd");
  32. }
  33. else {
  34. ?>
  35. <br/>
  36. <div align="CENTER">
  37. <table border="1" width="90%" cellpadding="2">
  38. <TR>
  39. <TH width="25%" nowrap>
  40. Numer użytkownika
  41. </TH>
  42. <TH width="25%" nowrap>
  43. ID użytkownika
  44. </TH>
  45.  
  46. <TH width="25%" nowrap>
  47. Nazwa Użytkownika
  48. </TH>
  49. <TH width="25%" nowrap>Akcja</TH>
  50.  
  51. </TR>
  52. <?php
  53. while ($query_data = mysql_fetch_array($result)) {
  54. $usernumber = $query_data["usernumber"];
  55. $userid = $query_data["userid"];
  56. $username = $query_data["username"];
  57. echo "<TR>\n";
  58. echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$usernumber</TD>\n";
  59. echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$userid</TD>\n";
  60. echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">$username</TD>\n";
  61. echo "<TD WIDTH=\"25%\" ALIGN=\"CENTER\">
  62. <A HREF=\"show_more_db4.php?userid=$userid\">Wyświetl rekord</A></TD>\n";
  63. echo "<TR>\n";
  64. }
  65. ?>
  66. </table>
  67. </div>
  68. <?php
  69. }
  70. ?>
  71. </body>
  72. </html>
szogun1987
CODE
$query = "SELECT * FROM user WHERE userid='.$_GET['userid']."'";
?>
bo wten sposób co przed chwilą napisałeś to on sklejał sobie:
SELECT * FROM user WHERE userid='usergg'krzychu0808
(krzychu0808 podane jako parametr w linku)
a on musi mieć:
SELECT * FROM user WHERE userid='krzychu0808'
krzychu0808
to gdzie mam mu podać elementy (tabelki itp) i dane jakie ma wyświetlić w nich questionmark.gifquestionmark.gif
szogun1987
sciana.gif Możliwe że się trochę źle wyraziłem w dokumencie w którym są wszyscy użytkownicy po prostu doklejasz do każdego linku: "?userid=jakas_wartosc". Jak to już zrobisz to w dokumencie docelowym linka możesz sobie odczytać jaka wartość została doklejona przez odwołania się do tablicy get na odpowiedniej pozycji $_GET['userid'] i zrobić z nią co chcesz. czyli np dokleić do zapytania SQL i wybrać dane tego użytkownika: $query="SELECT * FROM user WHERE userid='".$_GET['userid']."'"; Nie ma w tym żadnej filozofii jedna strona wysyła dane do drugiej
krzychu0808
hehe nie wiem czy jestem taki tępy czy co ;p ale możesz to wrzucić w mój kod i żeby wyświetlał coś prostego np
  1. <?php
  2. echo "Numer użytkownika: $usernumber";
  3. ?>


nie wiem czy wczyta w takiej formie a jak nie to

  1. <?php
  2. echo "Numer użytkownika:" . $query_data["usernumber"];
  3. ?>
rzymek01
EDIT, NOWY KOD:
zakładam, że masz pole userextra w bazie danych (możesz zmienić)

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <title>Wyświetlanie
  6. </title>
  7. <style type="text/css">
  8. * { margin: 0px; padding: 0px; }
  9. body {
  10. background-color: #d7d7d7;
  11. font-family:Verdana, Arial, Helvetica, sans-serif;
  12. }
  13. </style>
  14. </head>
  15.  
  16. <body>
  17. <?php
  18. $spacja = ' ';
  19. $link_id = mysql_connect('localhost','root','x') or die('błąd połączenia');
  20. mysql_select_db('sample_db', $link_id) or die('błąd przy wyborze bazy');
  21.  
  22. settype($_GET['userid'], 'int');
  23. if (!empty($_GET['userid'])) //sprawdzamy czy link zawiera ?userid=
  24. {
  25. $query = 'SELECT * FROM user WHERE usernumber='.$_GET['userid']; //szczegóły jednego usera
  26. $result = mysql_query($query, $link_id);
  27.  
  28. if (!$result)
  29. die('błąd a');
  30. else
  31. {
  32. // TUTAJ WSTAW OSOBNE TABELKI W KTORYCH DASZ WIECEJ INFO O TYM USERZE
  33. // bez pętli, wystarczy jedno $query_data = mysql_fetch_array($result);
  34. $query_data = mysql_fetch_array($result);
  35.  
  36. echo $query_data['userextra'];
  37. }
  38. }
  39. else
  40. {
  41. // nie uzywaj * w zapytaniu jesli nie chcesz wybrac wszystkich pól
  42. $query = 'SELECT userid, usernumber, username FROM user'; //w przeciwnym wypadku pobieramy rekordy wszystkich użytkowników
  43. $result = mysql_query($query, $link_id);
  44.  
  45. if (!$result)
  46. die('błąd in ' . __LINE__ . ': '. mysql_error());
  47. else
  48. {
  49. echo '
  50. <br/>
  51. <div align="CENTER">
  52. <table border="1" width="90%" cellpadding="2">
  53. <TR>
  54. <TH width="25%" nowrap>
  55. Numer użytkownika
  56. </TH>
  57. <TH width="25%" nowrap>
  58. ID użytkownika
  59. </TH>
  60.  
  61. <TH width="25%" nowrap>
  62. Nazwa Użytkownika
  63. </TH>
  64. <TH width="25%" nowrap>Akcja</TH>
  65.  
  66. </TR>';
  67.  
  68. while ($query_data = mysql_fetch_array($result))
  69. {
  70. $usernumber = $query_data['usernumber'];
  71. $userid = $query_data['userid'];
  72. $username = $query_data['username'];
  73.  
  74. echo '<TR>
  75. <TD WIDTH="25%" ALIGN="CENTER">' . $usernumber . '</TD>
  76. <TD WIDTH="25%" ALIGN="CENTER">' . $userid . '</TD>
  77. <TD WIDTH="25%" ALIGN="CENTER">' . $username . '</TD>
  78. <TD WIDTH="25%" ALIGN="CENTER">
  79. <A HREF="?userid=' . $usernumber . '">Wyświetl rekord</A></TD>
  80. <TR>';
  81. }
  82. echo '</table>
  83. </div>';
  84. }
  85. }
  86.  
  87. echo '</body>
  88. </html>';
  89. ?>
krzychu0808
Wielkie dzięki chłopaki teraz będę próbował według książki robić rejestracje.. książkę mam z 2000r więc nieraz coś nie działa....
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.