Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] Wybranie usera o konkretnym ID
Forum PHP.pl > Forum > Przedszkole
Ravik
Witam,

Mam problem z moim kodem, sytuacja wygląda tak:

Mam na jednej stronie wyświetlonych użytkowników z bazy danych, każdy ma inne ID. Przy nazwie każdego użytkownika widnieją dwa pola z możliwością wpisania danej ilości kartek darmowych oraz kartek płatnych i obok każdego z userów jest przycisk zapisz. Kiedy wpiszę liczbę np. kartek darmowych w ilości 45 dla użytkownika z id_konta = 9, to zmieni również tę liczbę dla wszystkich innych użytkowników, a nie dla jego jednego.

Dodam że zmienna $wiersz[id_konta] wyświetla przed kodem różne id dla każdego z userów (takie jakie jest przyporządkowanie w bazie). Co mam zrobić ze zmienną $wiersz[id_konta] żeby zmieniało dane tylko dla konkretnego z userów ?


  1. <?php
  2.  
  3. function mail_do_uzytkownika($id_konta)
  4. {
  5. $id_konta = (int) $id_konta;
  6.  
  7. $wynik=pytanie_baza("select email,imie,nazwisko from ".PREFIX."konta where id_konta='$id_konta'");
  8. if($wynik)
  9. {
  10. if(@mysql_num_rows($wynik)==1)
  11. {
  12.  
  13. $wiersz=mysql_fetch_array($wynik);
  14.  
  15. $wiersz['email']=zbazy($wiersz['email']);
  16. $wiersz['imie']=zbazy($wiersz['imie']);
  17. $wiersz['nazwisko']=zbazy($wiersz['nazwisko']);
  18. $imie_nazwisko=$wiersz['imie'].' '.$wiersz['nazwisko'];
  19. }
  20.  
  21. print_r($wiersz[id_konta]); // wyświetlenie id userów
  22.  
  23. if(isset($_POST['submit'])) {
  24.  
  25. // ustawienie
  26. $ilosc_darmowych = addslashes($_POST['liczba_kartek_darmowych']);
  27. $ilosc_platnych = addslashes($_POST['liczba_kartek_platnych']);
  28.  
  29. // ustawienie ilości kartek darmowych
  30. $zapytanie2 = "UPDATE emax_konta SET ilosc_darmowych = '$ilosc_darmowych' WHERE id_konta = $wiersz[id_konta]";
  31. $query2 = mysql_query($zapytanie2);
  32.  
  33. // ustawienie darmowych platnych
  34. $zapytanie = "UPDATE emax_konta SET ilosc = '$ilosc_platnych' WHERE id_konta = $wiersz[id_konta]";
  35. $query = mysql_query($zapytanie);
  36. }
  37.  
  38. // wyswietlenie ilosci kartek platnych
  39. $zapytanie = "SELECT ilosc FROM emax_konta WHERE id_konta= $wiersz[id_konta]";
  40. $query_a= mysql_query($zapytanie);
  41. $row_as = mysql_fetch_row($query_a);
  42.  
  43. // wyswietlenie ilosci kartek darmowych
  44. $zapytaniea = "SELECT ilosc_darmowych FROM emax_konta WHERE id_konta= $wiersz[id_konta]";
  45. $query_aa= mysql_query($zapytaniea);
  46. $row2 = mysql_fetch_row($query_aa);
  47.  
  48. ?>
athei
Nie dałeś htmla. Domyślam się że problem dotyczy przycisków zapisz. Nie określiłeś którego usera ma zmienić.
Zrób np. dla każdego pobranego usera osobny formularz i daj ukryte pole z id usera
  1. <?php
  2. $dane // dane z bazy
  3. foreach ($dane as $k=>$v):
  4. ?>
  5. <form method="post" action="" >
  6. <input type="text" name="nazwa" value="<?php echo $v['nazwa'] ?>" />
  7. <input type="hidden" name="id" value="<?php echo $v['id']?>" />
  8. <input type="submit" name="zmien" value="zmien" />
  9.  
  10. </form>
  11. <?php endforeach; ?>
Ravik
Mój kod wygląda teraz tak (nie dodałem teraz połączenia i wybrania z bazy, ale ono tam jest). W formularzu przesyłam id_konta wybrane z bazy i zapisuję do zmiennej, jednak przy każdym wybranym rekordzie (użytkowniku) wyświetla to samo id, a kiedy wyprintuję zmienną $wiersz[id_konta] wyświetla poprawnie id, dla każdego użytkownika inne, jednak kiedy w warunku ustawię WHERE id_konta='$wiersz[id_konta]' to przy kliknięciu "Zapisz" zmienia ilość kartek dla wszystkich rekordów. Jak to rozwiązać ?


  1. <?php
  2.  
  3. if(isset($_POST['submit'])) {
  4. // ustawienie, dodanie do bazy
  5. $ilosc_darmowych = addslashes($_POST['liczba_kartek_darmowych']);
  6. $ilosc_platnych = addslashes($_POST['liczba_kartek_platnych']);
  7. $idkonto = $_POST['idkonta'];
  8.  
  9. print_r($idkonto);
  10.  
  11. // ustawienie ilości kartek darmowych
  12. $zapytanie2 = "UPDATE emax_konta SET ilosc_darmowych = '$ilosc_darmowych' WHERE id_konta = $idkonto";
  13. $query2 = mysql_query($zapytanie2);
  14.  
  15. // ustawienie darmowych platnych
  16. $zapytanie = "UPDATE emax_konta SET ilosc = '$ilosc_platnych' WHERE id_konta = $idkonto";
  17. $query = mysql_query($zapytanie);
  18. }
  19.  
  20. // wyswietlenie ilosci kartek platnych
  21. $zapytanie = "SELECT ilosc FROM emax_konta WHERE id_konta= $wiersz[id_konta]";
  22. $query_a= mysql_query($zapytanie);
  23. $row_as = mysql_fetch_row($query_a);
  24.  
  25. // wyswietlenie ilosci kartek darmowych
  26. $zapytaniea = "SELECT ilosc_darmowych FROM emax_konta WHERE id_konta= $wiersz[id_konta]";
  27. $query_aa= mysql_query($zapytaniea);
  28. $row2 = mysql_fetch_row($query_aa);
  29.  
  30. ?>
  31. <form method="post" action="adm_kart.php?id=19">
  32. <div class="data"> <?php echo $data_rejestracji; ?> </div>
  33. <div class="data_logowania"> <?php echo $data_logowania; ?> </div>
  34. <div class="usun"> <a href="adm_kart.php?id=19&amp;u=<?php echo $wiersz['id_konta']; ?>&amp;limit=<?php echo $_GET['limit']; ?>" > x </a> </div>
  35. &nbsp;
  36. <div class="edytuj"><input type="text" name="liczba_kartek_darmowych" style="width:40px;" value="<?php echo $row2[0] ?>" /></div>
  37. <div class="edytuj2"><input type="text" name="liczba_kartek_platnych" style="width:40px;" value="<?php echo $row_as[0] ?>" /></div>
  38. <input type="hidden" name="idkonta" value="<?php echo $wiersz['id_konta'] ?>" />
  39. <div class="kartki"><input type="submit" name="submit" value="Zapisz" style="margin-left:3px;"></div>


Jest ktoś w stanie mi z tym pomóc ?
CuteOne
"W formularzu przesyłam id_konta wybrane z bazy" pokaż to pobranie z bazy
Ravik
Patrz post wyżej, przedtem jest jeszcze kod wybierania z bazy.
CuteOne
A gdzie masz to id_konto... questionmark.gif

$wynik=pytanie_baza("select email,imie,nazwisko,id_konta from ".PREFIX."konta where id_konta='$id_konta'");
Ravik
Zobacz że $wiersz[id_konta] jest przesyłana przez formularz do zmiennej
nospor
Włącz sobie wyświetlanie wszystkich błędów, to sam zobaczysz czy oby na pewno przesyla winksmiley.jpg

Daj na samym początku kod php
  1. ini_set('display_errors','1');
CuteOne
gdzie?? hmm? przez formularz wysyłasz $_POST['idkonta']... a powiedz mi teraz skąd masz to:

<input type="hidden" name="idkonta" value="<?php echo $wiersz['id_konta'] ?>" />
Ravik
Zapisanie do tablicy wyniku z MySQL, ta zmienna dostępna jest w całym programie, wybierana na podstawie funkcji poprzedzającej mój kod.

Aha i nie wywala żadnego błędu.

Jak zapisuję do zmiennej $idkonto = $wiersz[id_konta] i ją printuję to wyświetla id poprawnie dla każdego z userów (dla każdego inne), a jak dam w warunku WHERE = '$idkonto' to zmienia dla wszystkich rekordów. Jak to możliwe questionmark.gif
CuteOne
Jeżeli twierdzisz, że jest dostępna "wszędzie" to zobacz w źródło strony czy tu <input type="hidden" name="idkonta" value="<?php echo $wiersz['id_konta'] ?>" /> wyświetli się id_konta
Ravik
Tak wyświetla się.

Aha i po przesłaniu przez formularz $wiersz[id_konta] i wyprintowaniu jej, zawsze pokazuje id pierwszego rekordu a nie każdego z osobna, a wyprintowanie $wiersz[id_konta] bez przesyłania, powoduje wyświetlenie id każdego z osobna, a ustawienie $wiersz[id_konta] w warunku MySQL, powoduje że rekordy modyfikują się dla wszystkich użytkowników, ale tylko przy edycji pierwszego użytkownika, jeżeli modyfikuję usera o innym ID to nic się nie dzieje.

Będzie ktoś w stanie rozszyfrować mój problem ? 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.