Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] zmiana wartości MySQL po id wpisów
adek-
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Witam, zrobiłem sobie taką tabelkę wyświetlającą mi użytkowników i chcę aby po kliknięciu przycisku przy x userze, zmieniła mu się wartość pola `status` w MySQL na 1 gdy jest 0, lub na 0, gdy jest 1
$tabela_users jest zadeklarowana wyżej, i ogólnie zmieniało mi ale u wszystkich, nie potrafię zrobić aby tylko zmieniło przy danej osobie którą kliknę...
  1. echo '<br><br><br><hr><br><b>WSZYSCY UŻYTKOWNICY:</b>';
  2. echo '<table><tr bgcolor="#69d8f4"><td><b>ID &nbsp; </b></td><td width="160"><b>Nazwa</b></td><td width="90"><b>Login</b></td><td width="170"><b>Imię i Nazwisko</b></td><td><b>e-mail</b></td><td><b> &nbsp; Nr telefonu</b></td><td><b>Widzi</b></td><td><b>Zezwól</b></td></tr>';
  3. $q = "SELECT * FROM $tabela_users";
  4. $r = mysql_query($q);
  5. // TABELA WYSW DANYCH
  6. $i=0;
  7. while($wymien = mysql_fetch_assoc($r)) {
  8. $color = ($i % 2 == 0) ? '' : '';
  9. $bgcolor = ($i % 2 == 0) ? 'fafafa' : '';
  10.  
  11. echo '<tr bgcolor="'.$bgcolor.'" style="color:'.$color.';"><td>'.$wymien['id'].'.</td><td> '.$wymien['nazwa'].' </td><td> '.$wymien['login'].'</td><td>'.$wymien['imie'].' '.$wymien['nazwisko'].'</td><td> '.$wymien['email'].'</td><td> &nbsp; '.$wymien['tel'].'</td><td> &nbsp; ';
  12. if($wymien['status'] == 1){ echo 'tak';} else { echo '<b>nie</b>';}
  13. echo '<td >';
  14. //##tutaj był wpis ogólny którego wkleiłem w drugim polu php dla wglądu
  15. echo '<a href="uzytkownicy.php?do=zmien&id='.$wymien['id'].'">ZMIEN</a> //gdzieś takie coś widziałem w jakimś poście, ale nie było zdefinowane pole do i zmien, więc to mi nie działa, natomiast wybiera id usera poprawnie po najechaniu na href
  16. </td>';
  17. $i++;
  18. // OPCJE EDYCJI
  19. echo '<td><a bgcolor="#b8c3eb" href="?do=delete&id='.$wymien['id'].'">'.$del.'</a></td>
  20. </tr>';
  21. }
  22. echo '</table>';


dawałem nawet taki wpis ogólny, ale on zmieniał wszystkim użytkownikom... gdy dodałem WHERE id='$wymien[id]' przestał działać
  1. echo <<< KONIEC
  2.  
  3.   <form class="form" action="uzytkownicy.php" method="post">
  4.   <input type="hidden" name="opcja" value="TRUE" />
  5. <input type="submit" value="Widok procentowy" />
  6.   </form>
  7. KONIEC;
  8. if (isset($_POST['opcja']) && !empty($_POST['opcja'])) {
  9. $q = mysql_query("UPDATE $tabela_users SET status=0 WHERE id='$wymien[id]'") or die(mysql_error());
  10. //echo '<font color="#FF0000">Opcja wyświetlania została zmieniona!</font>';
  11. }


Pomoże ktoś zrobić
Go to the top of the page
+Quote Post
jacobson
post
Post #2





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


a czy ta Twoja druga czesc kodu gdzie robisz where id='$wymien[id]' znajduje sie wewnatrz petli while w ktorej sa zadeklarowane zmienne z bazy ? moze stworz zmienna przed while, w while ja zaktualizuj ($zmienna = $wymien[id]) a potem w tym swoim zapytaniu daj where id=$zmienna.
Go to the top of the page
+Quote Post
Barcelona
post
Post #3





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


a jakbyś takie coś zastosował

  1. <?php
  2. echo '<br><br><br><hr><br><b>WSZYSCY UŻYTKOWNICY:</b>';
  3. echo '<table><tr bgcolor="#69d8f4"><td><b>ID &nbsp; </b></td><td width="160"><b>Nazwa</b></td><td width="90"><b>Login</b></td><td width="170"><b>Imię i Nazwisko</b></td><td><b>e-mail</b></td><td><b> &nbsp; Nr telefonu</b></td><td><b>Widzi</b></td><td><b>Zezwól</b></td></tr>';
  4. $q = "SELECT * FROM $tabela_users";
  5. $r = mysql_query($q);
  6. // TABELA WYSW DANYCH
  7. $i=0;
  8. while($wymien = mysql_fetch_assoc($r)) {
  9. $color = ($i % 2 == 0) ? '' : '';
  10. $bgcolor = ($i % 2 == 0) ? 'fafafa' : '';
  11.  
  12. echo '<tr bgcolor="'.$bgcolor.'" style="color:'.$color.';"><td>'.$wymien['id'].'.</td><td> '.$wymien['nazwa'].' </td><td> '.$wymien['login'].'</td><td>'.$wymien['imie'].' '.$wymien['nazwisko'].'</td><td> '.$wymien['email'].'</td><td> &nbsp; '.$wymien['tel'].'</td><td> &nbsp; ';
  13. if($wymien['status'] == 1){ echo '<a href="uzytkownicy.php?do=zmien&id='.$wymien['id'].'&tryb=tak">Tak</a>';} else { echo '<a href="uzytkownicy.php?do=zmien&id='.$wymien['id'].'&tryb=nie">Nie</a>';}
  14. echo '<td >';
  15. //##tutaj był wpis ogólny którego wkleiłem w drugim polu php dla wglądu
  16. echo '<a href="uzytkownicy.php?do=zmien&id='.$wymien['id'].'">ZMIEN</a> //gdzieś takie coś widziałem w jakimś poście, ale nie było zdefinowane pole do i zmien, więc to mi nie działa, natomiast wybiera id usera poprawnie po najechaniu na href
  17. </td>';
  18. $i++;
  19. // OPCJE EDYCJI
  20. echo '<td><a bgcolor="#b8c3eb" href="?do=delete&id='.$wymien['id'].'">'.$del.'</a></td>
  21. </tr>';
  22. }
  23. echo '</table>';
  24. ?>
Go to the top of the page
+Quote Post
adek-
post
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Jacobson, wychodzi na to samo, tylko zmienną deklaruję i wpisuję nazwę zmiennej zamiast wymien[id], robi z wszystkich pól 1 lub 0
Barcelona nie bardzo wiem o co Ci chodzi, zwłaszcza, że jak pisałem "?do=zmien&" jest nie zdeklarowane, a skopiowane z jakiejś strony jako przykład... obczytałem się trochę i chyba nie da się zrobić funkcji 'a href' żeby działała jako submit button, dlatego pokombinowałem z takim czymś

w tablicy asocjacyjnej wyciągającej wszystkie wyniki w pętli while i wrzuciłem combo boxa
  1. echo '<form id="form1" name="form1" method="post" action="uzytkownicy.php">';
  2. print $wymien['status'].'&nbsp;';
  3. ?>
  4. <select name="select_<?=$wymien['id'];?>">
  5. <option value="1" <?=$wymien['status']==1 ? 'selected' : '';?>>Tak</option>
  6. <option value="0" <?=$wymien['status']==0 ? 'selected' : '';?>>Nie</option>
  7. </select>
  8.  
  9. <input type="submit" name="Submit" value="ok" />
  10. </form>
  11. <?php
  12. if(isset($_POST['submit'])) {
  13. $sql = mysql_query("UPDATE $tabela_users SET status='$_POST[form1]' WHERE id='$wymien[id]' "); }


Pobiera mi dobrze z MySQL pole `status` i wyświetla "tak" tam gdzie jest 1 i "nie" tam gdzie jest 0... ale update nie działa, dlatego bo tak naprawdę nie wiem jak wprowadzić poprawnie $sql, a dokładniej wydaję mi się że zamiast $_POST[combobox] powinno być coś innego, tzn jakiś wpis który by mówił co zostało wybrane w polu select
  1. $sql = mysql_query("UPDATE $tabela_users SET status='$_POST[form1]' WHERE id='$wymien[id]' "); }


Ten post edytował adek- 24.12.2011, 14:04:37
Go to the top of the page
+Quote Post
amii
post
Post #5





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


1. Co ta za zmienna -> $_POST[form1] z tego co widzę to jest id formularza a nie zmienna z supertablicy globalnej $POST
2. Może spróbuj to rozwiązać na zasadzie sprawdzania value na zasadzie:
if ($_POST["select_".$wymien['id']] == 1) //to zrob tak..
if ($_POST["select_".$wymien['id']] == 0) //cos innego
Go to the top of the page
+Quote Post
adek-
post
Post #6





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


amii masz rację z tym form1 i dokładnie takiej konstrukcji posta szukałem, a nie wiedziałem jak go ułożyć!
...
ok, wszystko jasne... dziekuję amii jeszcze raz, bezmyślnie probóbowałem z Twojej podpowiedzi zrobić gotowy przykład, a nie dodałem tam isseta!
  1. if (isset($_POST["select_".$wymien['id']]) && ($_POST["select_".$wymien['id']] == 0)) {
  2. $sql = mysql_query("UPDATE $tabela_users SET status=0 WHERE id='$wymien[id]' "); }
  3.  
  4. if (isset($_POST["select_".$wymien['id']]) && ($_POST["select_".$wymien['id']] == 1)) {
  5. $sql = mysql_query("UPDATE $tabela_users SET status=1 WHERE id='$wymien[id]' "); }


Ten post edytował adek- 28.12.2011, 10:48:43
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.09.2025 - 09:38