[php] potwierdzenie

0

cześć, zrobiłem coś takiego, że na e-mail wysylany jest link aktywujący - potwierdzenie zamóienia,
link wygląda tak po dojściu na e-maila przykladowo:

www.mojastrona.pl/folder/potwierdzenie.php?login=grzechu&potwierdzenie=1

login i potwierdzenie jest update'owane w bazie. Potwierdzenie domyśłnie jest '0', niestety skrypt nie wykonuje potwierdzenia: (Może mi ktoś pomóc, tylko sprawdzić i ewentualnie coś dopowiedzieć) odnośnie poniższego skryptu:

<?php

//Potwierdzenie

$dbHost="mysql.zz4.pl";
$dbUser="admin999_po6";
$dbPass="dL7";
$dbName="baza11111_666";
//te dostępy mam oczywiście inne :)

$link=@mysql_connect($dbHost, $dbUser, $dbPass);
if (!$link) {
echo "Brak połączenia z serwerem bazy.";
exit;
}

$db=@mysql_select_db($dbName);
if (!$db) {
echo "Nie można wybrać bazy.</font></div>";
exit;
}

$query="update klienci set potwierdzenie=1 where login='$login';
$result=@mysql_query($query);
if (!result) {
echo "Wystąpił błąd. Zapytanie zostało odrzucone.";
} else {
echo "Zamówienie zostało potwierdzone. ";

}


?>
0

Jak rozumiem dochodzi tutaj:

$query="update klienci set potwierdzenie=1 where login='$login';
 $result=@mysql_query($query);
 if (!result) {
 echo "Wystąpił błąd. Zapytanie zostało odrzucone.";
 } else {
 echo "Zamówienie zostało potwierdzone. ";
 }

Jeżeli tak, to nie wyciszaj mysql_query. Zobaczysz, czy jakiś błąd się nie pojawia.
Jeżeli to nie wchodzi w rachubę (brak wyciszenia), to zainteresuj się funkcją mysql_error.

0

Błędy znalazłem takie:

$query="update klienci set potwierdzenie=1 where login='$login'"; // nie zamknięty cudzysłów
$result=@mysql_query($query);
if (!$result) { // brak znaku $ przy nazwie zmiennej
echo "Wystąpił błąd. Zapytanie zostało odrzucone.";
} else {
echo "Zamówienie zostało potwierdzone. ";

0

W linijce:

$query="update klienci set potwierdzenie=1 where login='$login';

zapis '$login' oznacza ze w to miejsce PHP wpisze po prostu tekst $login, a nie ZAWARTOSC zmiennej $login!

powinno byc:
$query="update klienci set potwierdzenie=1 where login='".$login."'"; </b>
zauwaz tez ze trzeba uzyc tytaj dwa rodzaje cudzyslowiow: pojedynczy i podwojny.
Czyli: pojedynczy,podwojny.$login.podwojny,pojedynczy,podwojny
Ufff... mam nadzieje ze wyjasnilem ot w miare zrozumiale :)

0

usunałem te błędy ale dalej nic, pojawia się komunikat: ten pozytywny odnośnie potwierdzenia zamówienia, nie wiem już, na wszystkie sposoby to już przeleciałem

0

No to spróbuj przed mysql_query napisać:
$login = $_REQUEST[ 'login' ];

0
Dariusz Grund napisał(a)

W linijce:

$query="update klienci set potwierdzenie=1 where login='$login';

zapis '$login' oznacza ze w to miejsce PHP wpisze po prostu tekst $login, a nie ZAWARTOSC zmiennej $login!

powinno byc:
$query="update klienci set potwierdzenie=1 where login='".$login."'"; </b>
zauwaz tez ze trzeba uzyc tytaj dwa rodzaje cudzyslowiow: pojedynczy i podwojny.
Czyli: pojedynczy,podwojny.$login.podwojny,pojedynczy,podwojny
Ufff... mam nadzieje ze wyjasnilem ot w miare zrozumiale :)

Nie jest to prawdą. Gdyby cały string był w pojedyńczym cudzysłowie, to tak, ale jak string zapisujesz w podwójnym, to pojedyńczy cudzysłów jest traktowany jako zwykły znak.
Kod :

$login = 'bla bla bla';
echo "-- '$login' --";

Zwróci

-- 'bla bla bla' --

Natomiast kod:

$login = 'bla bla bla';
echo '-- $login --';

zwróci:

-- $login --

Jak masz jakieś wątpliwości, to zawsze sprawdzaj na najprostszych przykładach.
I jeszcze jedno: Jak się coś nie wykonuje, to nie bój się używać echo. Zawsze pomaga :)

0

działa, to Dariusza było ok, dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1