Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie wartości z bazy danych
Forum PHP.pl > Forum > PHP
AdBlock
Witam.
Otóż próbuję zrobić skrypt, umożliwiający wysłanie nowego linku aktywacyjnego (w razie gdyby poprzedni mail nie dotarł, a rejestracja się powiodła).

Mam coś takiego (fragment funkcji):
  1. $wynik = $lacz->query("UPDATE uzytkownicy SET kod='$kod' WHERE login='$uzytkownik'");
  2. $wynik = $lacz->query("SELECT email FROM uzytkownicy WHERE login='$uzytkownik'");
  3. $email = //i tutaj nie wiem co:)
  4.  
  5. $list = "Witaj $uzytkownik!
  6. Kliknij w poniższy link, aby aktywować swoje konto.
  7. <a href="http://jakasdomena.pl/weryfikacja.php?kod=$kod&quot;;" target="_blank">http://jakasdomena.pl/weryfikacja.php?kod=$kod";</a>
  8. mail($email, "Rejestracja użytkownika", $list, "From: <kontakt@jakasdomena.pl>");
  9. echo 'Nowy link aktywacyjny został wysłany na skrzynkę e-mail.';
  10. } else {
  11. echo 'Zmiana adresu e-mail nie powiodła się.';
  12. }
  13. }


I próbuję już od paru godzin przypisać dla zmiennej $email (pod $wynik) maila z bazy danych - bez żadnego skutku. Za każdym razem wyrzucało mi, że tablica nie ma punktu odniesienia (zapytanie zwraca dobry wynik - sprawdzałem).
Bardzo proszę o pomoc. W php się bawię od niedawna smile.gif
radziopoke
a używałeś mysql_fetch_object($wynik) questionmark.gif
dopiero po tym powinieneś móc pobrać odpowiednie dane:
  1. $wynik = $lacz->query("UPDATE uzytkownicy SET kod='$kod' WHERE login='$uzytkownik'");
  2. $wynik = $lacz->query("SELECT email FROM uzytkownicy WHERE login='$uzytkownik'");
  3. if($row = mysql_fetch_object($wynik))
  4. {
  5. $email = $row->email;
  6.  
  7. $list = "Witaj $uzytkownik!
  8. Kliknij w poniższy link, aby aktywować swoje konto.
  9. <a href="http://jakasdomena.pl/weryfikacja.php?kod=$kod";" target="_blank">http://jakasdomena.pl/weryfikacja.php?kod=$kod";</a>
  10. if(mail($email, "Rejestracja użytkownika", $list, "From: <kontakt@jakasdomena.pl>"))
  11. echo 'Nowy link aktywacyjny został wysłany na skrzynkę e-mail.';
  12. } else {
  13. echo 'Zmiana adresu e-mail nie powiodła się.';
  14. }
  15. }
  16.  

ale nie wiem ale wydaje mi się że masz jeszcze kilka błędów w kodzie np. to co przypisujesz do zmiennej $list tyle tam tych cudzysłowów że nie wiem gdzie jest koniec i początek tekstu )
AdBlock
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in on line 87
  1. if ($wynik->num_rows > 0) {
  2. $wynik = $lacz->query("UPDATE uzytkownicy SET kod='$kod' WHERE login='$uzytkownik'");
  3. $wynik = $lacz->query("SELECT email FROM uzytkownicy WHERE login='$uzytkownik'");
  4. if($row = mysql_fetch_object($wynik)) // linia 87
  5. {
  6. $email = $row->email;
  7.  
  8. $list = "Witaj $uzytkownik!
  9. Kliknij w poniższy link, aby aktywować swoje konto.
  10. <a href="http://jakasdomena.pl/weryfikacja.php?kod=$kod&quot;;" target="_blank">http://jakasdomena.pl/weryfikacja.php?kod=$kod";</a>
  11. mail($email, "Rejestracja użytkownika", $list, "From: <kontakt@jakasdomena.pl>");
  12. echo 'Nowy link aktywacyjny został wysłany na skrzynkę e-mail.';
  13. } else {
  14. echo 'Zmiana adresu e-mail nie powiodła się.';
  15. }
  16. }


$list działa poprawnie - w nieco innym skrypcie bez problemu wysyła maila
d3ut3r
  1. $wynik = $lacz->query("SELECT email FROM uzytkownicy WHERE login='$uzytkownik'");


zrób sobie pod tym print_r($wynik) i zobacz co Ci zwróci.

czym jest obiekt $lacz ?

jesteś pewien, że jeżeli zrobisz tak:

  1.  
  2. $wynik = $lacz->query("UPDATE uzytkownicy SET kod='$kod' WHERE login='$uzytkownik'");
  3. $wynik = $lacz->query("SELECT email FROM uzytkownicy WHERE login='$uzytkownik'");
  4. $email = 'twoj@mail.com';
  5.  
  6. $list = "Witaj $uzytkownik!
  7. Kliknij w poniższy link, aby aktywować swoje konto.
  8. <a href="http://jakasdomena.pl/weryfikacja.php?kod=$kod&quot;;" target="_blank">http://jakasdomena.pl/weryfikacja.php?kod=$kod";</a>
  9. mail($email, "Rejestracja użytkownika", $list, "From: <kontakt@jakasdomena.pl>");
  10. echo 'Nowy link aktywacyjny został wysłany na skrzynkę e-mail.';
  11. } else {
  12. echo 'Zmiana adresu e-mail nie powiodła się.';
  13. }
  14. }
  15.  


to wyśle Ci wiadomość ?
AdBlock
$lacz to połączenie z bazą danych
print_r($wynik) zwraca:
  1. mysqli_result Object ( )


Jeżeli dodam zmienną z email'em ręcznie - jak pokazałeś - wiadomość zostaje wysłana poprawnie (dochodzi na skrzynkę).
d3ut3r
Mała podpowiedź smile.gif

http://php.net/manual/en/class.mysqli-result.php

masz wylistowane metody za pomocą których możesz pobrać rekord.
AdBlock
Rozwiązałem problem. Było nim łączenie się do bazy za pomocą mysqli, a nie "gołego" mysql.

  1. $wynik = mysql_query("SELECT email FROM uzytkownicy WHERE login='$uzytkownik'");
  2. $dane = mysql_fetch_assoc($wynik);
  3. $email = $dane['email'];
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.