• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Problem z Update bazy

Object Storage Arubacloud
0 głosów
288 wizyt
pytanie zadane 17 lutego 2016 w PHP przez jaca121212 Nałogowiec (40,760 p.)
zamknięte 19 lutego 2016 przez jaca121212

Problem z Update tabeli, a dokładnie kolumny aktywacja. 

gdy wpiszę dowolny kod aktywacyjny  w formularzu  to każdemu z użytkownikom  zmieni się konto na aktywne.

Gdzie robię błąd w zapytaniu.

baza wygląda  tak:

 

kod 

<form method="POST">
<p class="nazwa"><i class="icon-person">Potwiedzenie rejestracji.</i></br></p>
<input type="text" class="btn_input" name="potwierdz" placeholder="Kod potwierdzający" />
<input type="submit" class="btn" name="pot"  value="Potwierdź!"/> 
</form>
<?php
require_once "polaczenie.php";
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno != 0) {
    echo "Error: " . $polaczenie->connect_errno . "Opis: " . $polaczenie->connect_error;
    die();
}
$potwierdzenie=$_post['potwierdz'];
if(isset($_POST['pot']) && !empty($_POST['potwierdz']))
{
	$result=$polaczenie->query("Select kod_aktywacyjny from uzytkownicy where kod_aktywacyjny='.'{$_post['potwierdz']}'.'");
	while($wiersz = mysqli_fetch_array($result));
	echo $wiersz['kod_aktywacyjny'];
	if($wiersz['kod_aktywacyjny']== $_post['potwierdz']){
	$potwierdz=$polaczenie->query(sprintf("UPDATE uzytkownicy SET `aktywacja`= 'aktywny'"));
	}
	echo"Konto aktywne";
	}else{
	echo"Nieaktywne konto";
}
?>

 

komentarz zamknięcia: Problem rozwiązany.

2 odpowiedzi

+3 głosów
odpowiedź 17 lutego 2016 przez Frendom Pasjonat (18,900 p.)
Przeciez to zapytanie dziala dla wszystkich uzytkownikow. Jezeli chcesz zmienic kod aktywacyjny dla konkretnego uzytkownika, to powinna pojawic sie konstrukcja WHERE id=nr_id_danego_uzytkownika dla ktorego chcesz zmienic ten kod aktywacyjny
komentarz 17 lutego 2016 przez qwertz Użytkownik (850 p.)
Where dodajesz tam gdzie jest update Powinno to wyglądać tak UPDATE uzytkownicy SET `aktywacja`= 'aktywny' WHERE id='id_użytkownika '
komentarz 17 lutego 2016 przez Frendom Pasjonat (18,900 p.)
Czy ty wogole wiesz co robisz? Masz problem z UPDATEM w bazie a edytujesz zapytanie ktore wyszukuje ci rekordy. Tak jak qwertz napisal, masz zmienic zapytanie z UPDATE
komentarz 17 lutego 2016 przez jaca121212 Nałogowiec (40,760 p.)

Sorry za tamten post.

Zrobiłem to w ten sposób ale częściowo rozwiązał problem gdyż jak ktoś wpisze np cokolwiek do tego formularzu  i mu aktywuje konto.

W jaki sposób sprawdzić czy  kod jest taki sam co w bazie.

 

<?php
require_once "polaczenie.php";
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno != 0) {
    echo "Error: " . $polaczenie->connect_errno . "Opis: " . $polaczenie->connect_error;
    die();
}
$potwierdzenie=$_post['potwierdz'];
if(isset($_POST['pot']) && !empty($_POST['potwierdz']))
{
    $result=$polaczenie->query("Select kod_aktywacyjny from uzytkownicy where kod_aktywacyjny='.'{$_post['potwierdz']}'.'");
    while($wiersz = mysqli_fetch_array($result));
    echo $wiersz['kod_aktywacyjny'];
    if($wiersz['kod_aktywacyjny']== $_post['potwierdz']){
            $aktualizacja = $polaczenie->query(sprintf("UPDATE uzytkownicy SET aktywacja='aktywne' where id=(%d)",
        $_SESSION['id']));
    }
    echo"Konto aktywne";
    }else{
    echo"Nieaktywne konto";
}
?>

 

komentarz 17 lutego 2016 przez Frendom Pasjonat (18,900 p.)
UPDATE uzytkownicy SET aktywacja='aktywne' where id=(%d)

Nie wiem czemu porownujesz id do ciagu znakow, gdzie na koncu znajduje sie literka 'd'. ID w bazie przechowujesz w postaci liczb calkowitych i do czegos takiego masz to porownac. w zapytaniu porownujesz id do id konkretnego uzytkownika, dal ktorego akurat chcesz zmienic ten kod aktywacyjny, czy cokolwiek dla niego zrobic. ID mozesz pobrac poprzez GET i przypisac do jakies zmiennej, np. $id. Wtedy twoje zapytanie bedzie prezentowalo sie w taki sposob:

UPDATE uzytkownicy SET aktywacja='aktywne' where id='$id'

 

komentarz 17 lutego 2016 przez jaca121212 Nałogowiec (40,760 p.)
OK rozumiem,

założenie miałem na początku takie:

Na podany adres e-mail przychodził kod aktywacyjny. Zanim użytkownik zaloguje się na konto, powinien potwierdzić rejestrację dlatego w formularzu  podaje kod aktywacyjny a skrypt sprawdza czy taki kod istnieje w bazie. Jeśli  znajdzie taki kod to w kolumnie aktywacja doda słowo "aktywowany".

W jaki sposób sprawdzić czy dany kod istnieje  w bazie ?
komentarz 17 lutego 2016 przez Frendom Pasjonat (18,900 p.)
Ja bym rozwiazal to troche w inny sposob. Gdy wypelnisz wszystkie pola w formualrzu rejestracji itd, to na podany adres jest wysylany link z kodem aktywacyjnym. Po kliknieciu na niego w bazie w kolumnie aktywacja wartosc zmienia sie z 0 na 1. Oczywiscie ten wygenerowany kod tez zostaje wstawiony do bazy
komentarz 17 lutego 2016 przez jaca121212 Nałogowiec (40,760 p.)
Nie ma problemu ze zmianą tego z 0 na 1 tylko tak jak piszę, nie wiem jak zrobić taki link z potwierdzeniem. Na chwilę obecną chciałem to zrobić tak jak wyżej napisałem a z czasem  to wprowadzić tak aby można było w razie czego gdyby link nie zadziałał mógł wpisać kod do formularza.
komentarz 17 lutego 2016 przez Frendom Pasjonat (18,900 p.)
wystarczy troche poszukac :)

https://www.youtube.com/watch?v=F0VReccd_44
komentarz 21 lutego 2016 przez zaq12wsx Nowicjusz (100 p.)
<dfnl data-info="Najnowsze pytania"><img src="http://forum.pasja-informatyki.pl/mz_comm.png" border="0" alt="Forum Pasja Informatyki"></dfnl>

 

0 głosów
odpowiedź 17 lutego 2016 przez Grzesiek Eleryk Mądrala (6,820 p.)

"UPDATE uzytkownicy SET `aktywacja`= 'aktywny'"

UPDATE zawsze z WHERE.

Podobne pytania

0 głosów
2 odpowiedzi 1,201 wizyt
pytanie zadane 24 października 2018 w PHP przez Śmieszek_;3 Użytkownik (780 p.)
0 głosów
1 odpowiedź 115 wizyt
pytanie zadane 3 sierpnia 2020 w JavaScript przez HowToIT Początkujący (290 p.)
+1 głos
2 odpowiedzi 658 wizyt
pytanie zadane 30 czerwca 2017 w SQL, bazy danych przez BeFree Początkujący (380 p.)

92,555 zapytań

141,402 odpowiedzi

319,544 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...