Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem ze stronnicowaniem
Forum PHP.pl > Forum > PHP
m4rcin93
Tworzę system ligi w php. zajmuję się teraz profilami. dodałem rekordy do bazy które pojawiły się w tabeli http://zstk.xaa.pl/liga/profil.php?id=1
Jak zauważyliście są tam dwie tabele. chciałbym żeby druga tabele razem z danymi przenieś na stronę http://zstk.xaa.pl/liga/profil.php?id=2
a następne na http://zstk.xaa.pl/liga/profil.php?id=3 ; http://zstk.xaa.pl/liga/profil.php?id=4 itd.

Kod:
  1. <?php
  2. $uchwyt=mysql_connect('localhost','root','pw')
  3. or die('Nieudane połączenie z bazą danych...');
  4. or die('Nie udało się wybrać bazy danych...');
  5.  
  6. $nr_rekordu = $_GET['id'];
  7. $query = "SELECT * FROM `profil` WHERE `id`='".$nr_rekordu."';";
  8. echo '<a href="profil.php?id='.($nr_rekordu-1).'">poprzedni rekord</a> | <a href="profil.php?id='.($nr_rekordu+1).'">następny rekord</a>';
  9.  
  10. echo "<table border='1'>";
  11. $link=mysql_query('SELECT * FROM profil ORDER BY id ASC');
  12. while($wiersz=mysql_fetch_array($link))
  13. {
  14. echo "<tr><td>";
  15. echo "ID";
  16. echo "</td><td>";
  17. echo $wiersz['id'];
  18. echo "<tr><td>";
  19. echo "DMW ID";
  20. echo "</td><td>";
  21. echo $wiersz['dmw'];
  22. echo "<tr><td>";
  23. echo "UAC ID";
  24. echo "</td><td>";
  25. echo $wiersz['uac'];
  26. echo "<tr><td>";
  27. echo "Xfire";
  28. echo "</td><td>";
  29. echo $wiersz['xfire'];
  30. echo "<tr><td>";
  31. echo "Klan";
  32. echo "</td><td>";
  33. echo $wiersz['klan'];
  34.  
  35. }
  36. mysql_close($uchwyt);
  37. echo "</table>";
  38. ?>
  39. </center></body></div><br>


Jakieś pomysły żeby to naprawić?
Sebusik
Usuń z kodu:
  1. $link=mysql_query('SELECT * FROM profil ORDER BY id ASC');

I zamień:
  1. while($wiersz=mysql_fetch_array($link))

Na:
  1. while($wiersz=mysql_fetch_array($query))


I na przyszłość - filtruj dane pochodzące od użytkownika - w przypadku liczb intval($_GET['id']).
m4rcin93
wyskoczył błąd z którym nie wiem o co chodzi ( co jest źle ).

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/zstk/public_html/liga/profil.php on line 11

jak go zlikwidować?
Sebusik
A sory, jeszcze to:
  1. $query = "SELECT * FROM `profil` WHERE `id`='".$nr_rekordu."';";

Zamień na:
  1. $query = mysql_query("SELECT * FROM `profil` WHERE `id`='".$nr_rekordu."'");
m4rcin93
dzięki wielkie zadziałało odrazu biggrin.gif

ale jeszcze dwa pytania:
Mam kod:
  1. echo 'Witaj <u>'.$user[nick].'</u> zostałes pomyslnie zalogowany/a !<br>';


chciałbym do niego wkleić opcje żeby klikając na nick przenosiło do strony profilu wg. id usera - http://zstk.xaa.pl/liga/profil.php?id=1

i drugie: jeśli nie ma takiego id jak użytkownik podał w adresie np. http://zstk.xaa.pl/liga/profil.php?id=999999
to jak zrobić żeby wyświetlał się jakiś komunikat typu: Taki klan nie został utworzony.

dałoby radę coś takiego zrobić? proszę o pomoc.
Sebusik
  1. echo 'Witaj <u><a href="profil.php?id='.$user['id'].'">'.$user['nick'].'</a></u> zostałes pomyslnie zalogowany/a !<br>';

To do pierwszego, zadziała, jeżeli pod $user['id'] masz id użytkownika.

W drugim wypadku robisz tak:
  1. $query = mysql_query('select * from users where id = "'.intval($_GET['id']).'"');
  2. $user = mysql_fetch_array($query);
  3.  
  4. if(!$user['id'])
  5. {
  6. echo "Podany klan nie został utworzony.";
  7. }
m4rcin93
oo dzięki wszystko elegancko działa biggrin.gif

ale narodził się nowy problem. otóż chciałbym żeby każdy użytkownik mógł sam wpisywać dane do swojego profilu.
czyli na stronie byłby link <u>Edytuj profil</u> użytkownik wchodzi wpisuje swoje dane w pola np. imie nazwisko gg mail i te dane po nacisnieciu ZAPISZ zostają zapisane w tych polach.
nie wiem czy dobrze to wyjaśniłem ale chyba wiadomo o co chodzi.

proszę o pomoc. co należy zrobić? zrobić formularz który będzie dodawał rekordy do bazy i jednocześnie je odbierał?

Sebusik
Dodaj do do tabeli z użytkownikami pola, jakie tam chcesz (imię, nazwisko, gg, itd.), potem dodaj na stronie formularz, przez który userzy będą mogli to edytować, w PHP dajesz zapytanie do bazy "update tabela set...".
m4rcin93
nie wiem co źle robię ale nie mogę sobie z tym poradzić.
edycja profilu ma wyglądać tak jak tu: FOTO

wysyłając formularz do tabeli użytkownicy dodają się te pola ale w nowym rekordzie.
a powinny być w tym samym co id użytkownika do którego należy ten profil.

Mam tu taki kod nie wiem czy jest on poprawny:
  1. <?php
  2. $uchwyt=mysql_connect('localhost','user','pw')
  3. or die('Nieudane po?ączenie z bazą danych...');
  4. or die('Nie uda?o si? wybra? bazy danych...');
  5.  
  6. $query = mysql_query('select * from uzytkownicy where id = "'.intval($_GET['id']).'"');
  7. $user = mysql_fetch_array($query);
  8.  
  9. if(!$user['id'])
  10. {
  11. echo "Dane w profilu użytkownika nie zostały uzupełnione!.";
  12. }
  13.  
  14.  
  15.  
  16. $nr_rekordu = $_GET['id'];
  17. $query = mysql_query("SELECT * FROM `uzytkownicy` WHERE `id`='".$nr_rekordu."'");
  18.  
  19. echo "<table border='1'>";
  20. while($wiersz=mysql_fetch_array($query))
  21. {
  22. echo "<tr><td>";
  23. echo "DMW ID";
  24. echo "</td><td>";
  25. echo $wiersz['dmw'];
  26. echo "<tr><td>";
  27. echo "UAC ID";
  28. echo "</td><td>";
  29. echo $wiersz['uac'];
  30. echo "<tr><td>";
  31. echo "Xfire";
  32. echo "</td><td>";
  33. echo $wiersz['xfire'];
  34. echo "<tr><td>";
  35.  
  36. }
  37. mysql_close($uchwyt);
  38. echo "</table>";
  39. ?>


jesli uzywam złego kodu to proszę o podanie go lub naprowadzenie mnie na właściwy trop.
Sebusik
Dlaczego robisz 2 takie same zapytania?

Robisz normalnie formularz w HTMLu, powiedzmy, ze masz pola o nazwie imie, nazwisko, gg. Po kliknięciu na wysłanie formularza na stronie powinno być takie zapytanie:
  1. mysql_query('update uzytkownicy set imie = "'.$imie.'", nazwisko = "'.$nazwisko.'", gg = "'.$gg.'" where id = "'.$id_usera.'"');


Do zmiennych $imie, $nazwisko, $gg przypisujesz dane z $_GET wcześniej filtrując je funkcją mysql_escape_string().
m4rcin93
Mógłbyś do tego kodu niżej przypisać dane z $_GET i filtrując je funkcją mysql_escape_string(). bo ja kompletnie nie wiem jak to zrobić.
proszę o pomoc. wszystko ma być w jednym pliku.

  1. <center><form action="read.php" method="post">
  2. DMW:
  3.  
  4. <input type="text" name="dmw" /><br>
  5. UAC
  6.  
  7. <input type="text" name="uac" /><br>
  8.  
  9. XFIRE
  10.  
  11. <input type="text" name="xfire" /><br><br>
  12.  
  13. <input type="submit" value="dodaj" />
  14. </form></center>
  15.  
  16. <?
  17. $connection = @mysql_connect('localhost', 'user', 'pw')
  18. or die('Brak połączenia z serwerem MySQL');
  19. $db = @mysql_select_db('baza', $connection)
  20. or die('Nie mogę połączyć się z bazą danych');
  21.  
  22.  
  23. mysql_query('update uzytkownicy set dmw = "'.$dmw.'", uac = "'.$uac.'", xfire = "'.$xfire.'" where id = "'.$id.'"');
  24.  
  25. mysql_close($connection);
  26. ?>
Sebusik
  1. <center><form action="read.php" method="post">
  2. <input type="hidden" name="action" value="edit" />
  3. DMW:
  4.  
  5. <input type="text" name="dmw" /><br>
  6. UAC
  7.  
  8. <input type="text" name="uac" /><br>
  9.  
  10. XFIRE
  11.  
  12. <input type="text" name="xfire" /><br><br>
  13.  
  14. <input type="submit" value="dodaj" />
  15. </form></center>
  16.  
  17. <?
  18. $connection = @mysql_connect('localhost', 'user', 'pw')
  19. or die('Brak połączenia z serwerem MySQL');
  20. $db = @mysql_select_db('baza', $connection)
  21. or die('Nie mogę połączyć się z bazą danych');
  22.  
  23. if($_POST['action'] == 'edit')
  24. {
  25. $dmw = mysql_escape_string($_GET['dmw']);
  26. //i tak ze wszystkimi zrób
  27. mysql_query('update uzytkownicy set dmw = "'.$dmw.'", uac = "'.$uac.'", xfire = "'.$xfire.'" where id = "'.$id.'"'); //mam nadzieję, że te $id istnieje??
  28. }
  29.  
  30. mysql_close($connection);
  31. ?>
m4rcin93
po wysłaniu formularza dane znikają z niego a w bazie danych nie dopisują się rekordy.

chodzi mi o zrobienie normalnego profilu gdzie uzytkownik o id x wpisuje swoje dane do profilu zmienia je i usuwa.
jeszcze raz dokladnie ci opisalem bo moze zle mnie zrozumiales.

tutaj screen z polami w tabeli uzytkownicy:
screen
m4rcin93
to jest link do stronnicowania a teraz mam problem z edycją profilu smile.gif ale dzięki za chęci.

a więc proszę o pomoc jeszcze w kwestii edycji profilu przez użytkownika o id X .
Sebusik
Eee... A dlaczego mają dodawać się rekordy, skoro chcesz edytować dany rekord?
m4rcin93
nie wiem myślałem że właśnie tak trzeba..
kumpel mi właśnie podpowiedział że koniecznie trzeba użyć mysql_real_escape_string() i funkcji update. ale jak to wdrożyć do kodu to nie mam zielonego pojęcia.
Sebusik
Wszystko masz w poście #12, czytaj komentarze, jakie dałem w kodzie.
m4rcin93
poradziłem sobie już z aktualizacją troszkę innym kodem. ale gdy użytkownik o ID 2 wpisze swoje dane w profilu wtedy aktualizują się dane użytkownika o ID 2 i ID 1.
Jak zrobić żeby użytkownik o ID 2 zmieniał TYLKO swoje dane ?
Podejrzewam że nie mam ustawionego warunku WHERE i dlatego tak się robi.
Proszę o pomoc.

  1. <br><br><center><form action="edytuj.php" method="post">
  2. DMW ID:
  3.  
  4. <input type="text" name="dmw" /><br>
  5.  
  6. UAC ID:
  7. <input type="text" name="uac" /><br>
  8. Xfire:
  9.  
  10. <input type="text" name="xfire" /><br>
  11.  
  12. <input type="submit" value="Aktualizuj" />
  13. </form></center><br><br>
  14. <?php
  15.  
  16. // odbieramy dane z formularza
  17. $dmw = $_POST['dmw'];
  18. $uac = $_POST['uac'];
  19. $xfire = $_POST['xfire'];
  20.  
  21. if($dmw and $uac and $xfire) {
  22.  
  23. // łączymy się z bazą danych
  24. $connection = @mysql_connect('localhost', 'user', 'pw')
  25. or die('Brak połączenia z serwerem MySQL');
  26. $db = @mysql_select_db('baza', $connection)
  27. or die('Nie mogę połączyć się z bazą danych');
  28.  
  29. // aktualizacja rekordów
  30. $ins = @mysql_query("UPDATE uzytkownicy SET dmw='$dmw', uac='$uac', xfire='$xfire'");
  31.  
  32. if($ins) echo "Zaktualizowano profil !";
  33. else echo "Nie można zaktualizowac profilu!";
  34.  
  35. mysql_close($connection);
  36. }
  37.  
  38. ?>


problem rozwiązany można zamknąć 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.