![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 14.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich,
Mam bardzo ciekawy problem. Wykonuje zapytanie do bazy danych w pliku login.php po czym ustawiam zmienne globalne. Nastepnie w pliku profil.php odpalam query ktore pobiera te same dane i zapisuje je do zmiennych. $sql = "SELECT * FROM users WHERE email = '$email' AND haslo = PASSWORD('$haslo')"; $result = mysql_query($sql); No i teraz sie zaczyna problem: bo przypisanie: a) $imie = mysql_result($result,0,'imie'); Nie dziala, natomiast zauwazylem ze dziala B) $$imie = mysql_result($result,0,'imie'); Nie pytajcie dlaczego, nie wiem po prostu wrzucalem kod na chybil trafil. 1 Pytanie: Dlaczego nie moge przypisac normalnie do zmiennej - ad.a choc wczesniej moglem to zrobi (login.php) Teraz dalej wyswietlam te dane w formularzu za pomoca <tr><td align="right"><b>Imiê:</b> </td><td><input type="text" name="imie" value="<?echo $imie?>"></td> I tutaj probowalem wszystkiego $imie i $$imie oba nie dzialaja. Natomiast co ciekawe dziala bezposrednie: <?echo mysql_result($result,0,'imie')?> 2 Pytanie: Jak zrobic by wyswietlic to w formularzu Pomozcie bo spedzilem nad tym wiele bezsennych nocy a moi userzy sie powoli zaczynaja nieceirpliwic ze nie dziala zmiana profila. Ten post edytował berciak 14.11.2005, 00:41:16 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No jakos se nei wyobrazam ze przypisanie:
nie dziala. Moze nie masz kolumny o nazwie imie to i ci nic nie przypisuje ![]() Daj se pozatym zaraz po tym przypisaniu echo i powiedz czy oby na pewno nic nie ma (i upewnij sie do tej kolumny )
ps: i uzywaj bbcode ps2: jesli nadal ci nie bedzoe dzialac to pokaz moze caly kod (jesli nie zadlugi ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-Guest- |
![]()
Post
#3
|
Goście ![]() |
Jest kolumna, bo dziala mi przypisanie $$imie. Dalem echo i przy $imie nic nie pokazuje przy $$imie pokazuje.
Poza tym pisalem ze mi wyswietla calosc w postaci: mysql_result($result,0,'imie') Oto kod:
![]() poprawiam jak pisalem "używaj bbcode" w domyśle było jeszcze"używaj poprawne bbcode" --- nospor To co widzisz $$imie to moje proby, tak jak pisalem wczesniej samo $imie nie dziala z jakis powodow. Dlaczego dziala $imie to juz wielka tajemnica dla mnie. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
A co Ci zwraca
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
1. mysql_close() powinno być po pobraniu wyników a nie przed tym faktem.
2. Najpierw zapisujesz dane to bazy, potem pobierasz dokładnie te same dane. Co to za poroniony pomysł i czemu to ma służyć :?: |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 14.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(mike_mech @ 2005-11-14 12:24:49) 1. mysql_close() powinno być po pobraniu wyników a nie przed tym faktem. 2. Najpierw zapisujesz dane to bazy, potem pobierasz dokładnie te same dane. Co to za poroniony pomysł i czemu to ma służyć :?: 1. Nie wiem, to znalazlem na necie: http://www.freewebmasterhelp.com/tutorials/phpmysql/4 Poza tym dziala bo funkcja mysql_result($result,0,'imie') wyswietla poprawnie zawartosc. 2. Widze ze musze troche wiecej wytlumaczyc. Aplikacja jest chroniona systemem autentyfikacji. W pliku login.php klient wpisuje sie do bazy wypelniajac formularz rejestracyjny. W pliku profil.php odczytuje te dane jeszcze raz z tabeli by klient mogl je sobie pozmieniac i zapisac z powrotem. Taka jest idea profil.php. Startuje sesje w pliku index.php, ale nie ma sensu przekazywac wszystkich 30 pol formularza jako zmienne globalne sesji ! Wiec w plikuu login zapisuje tylko 3 potrzebne w dalszym dzialaniu serwisu. Jesli gostek sobie wejdzie na profil wykonuje dodatkowe zapytanie SQL pobierajac jeszcze raz jego dane i przedstawiajac je w formularzu do zmiany. Ten post edytował berciak 14.11.2005, 13:50:14 |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
[quote=berciak,2005-11-14 13:40:55] [QUOTE=mike_mech,2005-11-14 12:24:49]2. Widze ze musze troche wiecej wytlumaczyc. Aplikacja jest chroniona systemem autentyfikacji. W pliku login.php klient wpisuje sie do bazy wypelniajac formularz rejestracyjny. W pliku profil.php odczytuje te dane jeszcze raz z tabeli by klient mogl je sobie pozmieniac i zapisac z powrotem. Taka jest idea profil.php. Startuje sesje w pliku index.php, ale nie ma sensu przekazywac wszystkich 30 pol formularza jako zmienne globalne sesji ! Wiec w plikuu login zapisuje tylko 3 potrzebne w dalszym dzialaniu serwisu. Jesli gostek sobie wejdzie na profil wykonuje dodatkowe zapytanie SQL pobierajac jeszcze raz jego dane i przedstawiajac je w formularzu do zmiany. [/quote]
Przekazywanie danych w sesji (nawet tej ilości o której mówisz) jest bardziej optymalne niż nękanie bazy danych kolejnym zapytaniem. Kolejne zapytanie jest po prostu nieoptymalne i spowalnia serwis. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 14.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(SongoQ @ 2005-11-14 10:58:17) A co Ci zwraca
Pokazuje to poprawna wartosc imienia. Podsumowujac: 1. mysql_result($result,0,'imie') zawsze pokazuje poprawna wartosc (zarowno poprzez echo jak i formularz. 2. $imie = mysql_result($result,0,'imie') echo $imie nic nie pokazuje jak rowniez formularz 3. $$imie = mysql_result($result,0,'imie') echo $$imie pokazuje poprawna wartosc ![]() Rozumiecie cos z tego bo ja zglupialem. mike_mech: Niby tak tylko zastanow sie jak czesto gostek bedzie do profila zagladal? Zwlaszcza ze dane w nim sa w 90 % statyczne. Niech zagladnie raz na kilka miesiecy i wygeneruje selecta, za to kilkarazy dziennie zamias przekazywc 30 parametrow przekaze 3 rachunek chyba jest prosty? Poza tym mimo oczywistej zalety powyzej chcialbym wiedziec czemu zwykle przypisanie zmiennej nie dziala? ![]() Ten post edytował berciak 14.11.2005, 13:50:39 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Oglądam Twoj kod i widze coś takiego, że zmienną $imie inicjujesz tylko wtedy, gdy znajdzie ci dokladnie jeden rekord:
natomiast do formularza wkladasz mysql_result($result,0,'imie') niezaleznie od ilosci rekordów. Tak wiec nasuwa sie bardzo proste wyjasnienie: masz w bazie kilka rekordów o tym samym loginie i hasle i nie wyswietla ci imienia bo ty go warunkujesz tym warunkiem ![]() Daj se wiec wyswieltanie imienia bez warunku:
no i daj te mysql_close() gdzie na koncu -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 14.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(nospor @ 2005-11-14 12:51:07) 1. Tak wiec nasuwa sie bardzo proste wyjasnienie: masz w bazie kilka rekordów o tym samym loginie i hasle i nie wyswietla ci imienia bo ty go warunkujesz tym warunkiem ![]() 2. Daj se wiec wyswieltanie imienia bez warunku:
3. no i daj te mysql_close() gdzie na koncu Dzieki wam wszystkim za pomoc, widze ze ten problem tez nie jest dla was czyms oczywistym a tera jedziem z odpowiedziami. 1. Nie mam zduplikowanych rekordow w bazie, sa sprawdzane przy dopisywaniu, a zeby miec pewnoscx wykonalem to zapytanie w Phpmyadmin i dostalem dokladnie jeden row. 2. Zmienilem i bez zmian, nie wyswietla zawartosci zmiennej $imie. 3. przenioslem przed ?> bez zmian Jeszcze raz kod na prosbe nospora:
i output: output przy zmienionym kodzie:
Ten post edytował berciak 14.11.2005, 16:18:27 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:31 |