Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mySQL][PHP], zapytanie do bazy
Piotrek666
post 23.02.2010, 23:04:49
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.11.2008
Skąd: Czestochowa

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


Witam

Mam problem z kodem który powinien pobrać dane z bazy na temat użytkownika o 'podanym' mailu.

nie mogę dostać odczytu danych użytkownika z bazy.
Domyślam się ze nadmiar zawiasów albo złe zapytanie stanowi przyczynę mojego problemu :/

  1. <?php
  2. require("run.php");
  3. $sql = $DB->Query("SELECT '".$_POST['email']."' FROM `users` ");
  4. //$sql = $DB->Query("SELECT * FROM `users` WHERE `email` = '".$_POST['email']."'");
  5.  
  6. $result = $DB->ToArray($sql);
  7. echo "ID:&nbsp;".htmlspecialchars($result['idusers'])."<p>";
  8. ?>


Ponieważ nie jestem dobry w te klocki, nie jestem w stanie wychwycić co jest przyczyną błędu.
kod nie wyświetla mi żadnych błędów.
pojawia się jedynie.
"ID:"

Czy ktoś może widzi problem?
Go to the top of the page
+Quote Post
lukasz.adamczews...
post 23.02.2010, 23:15:02
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 2
Dołączył: 23.02.2010

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


Cytat(Piotrek666 @ 23.02.2010, 23:04:49 ) *
Witam

Mam problem z kodem który powinien pobrać dane z bazy na temat użytkownika o 'podanym' mailu.

nie mogę dostać odczytu danych użytkownika z bazy.
Domyślam się ze nadmiar zawiasów albo złe zapytanie stanowi przyczynę mojego problemu :/

  1. <?php
  2. require("run.php");
  3. $sql = $DB->Query("SELECT '".$_POST['email']."' FROM `users` ");
  4. //$sql = $DB->Query("SELECT * FROM `users` WHERE `email` = '".$_POST['email']."'");
  5.  
  6. $result = $DB->ToArray($sql);
  7. echo "ID:&nbsp;".htmlspecialchars($result['idusers'])."<p>";
  8. ?>


Ponieważ nie jestem dobry w te klocki, nie jestem w stanie wychwycić co jest przyczyną błędu.
kod nie wyświetla mi żadnych błędów.
pojawia się jedynie.
"ID:"

Czy ktoś może widzi problem?



podaj schemat bazy i wytłumacz po krótce o co chodzi w tym kodzie bo jak narazie to zgaduje że to zapytanie ma wyświetlić email z tabeli userów jeśli pod $_POST['email'] jest nazwa kolumny (w takiej formie to teraz masz napisane). natomiast zakomentowane masz według mnie dobre zapytanie wybierające usera o danym mailu. i potem tylko kwestia wybrania identyfikatora tego usera - jaka nazwa klucza? i skoro masz funkcje toArray to może ona zwraca najpierw tablice wyników od 0 do konca
a potem dopiero w każdym wierszu kolumny tabeli
więc moze powinno być $result[0]['idusers'] ale daj lepiej var_dump($result); przed tym echem i zobacz co masz w ogóle w tej zmiennej.
Go to the top of the page
+Quote Post
Piotrek666
post 23.02.2010, 23:28:09
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.11.2008
Skąd: Czestochowa

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


Zauważyłem że ten post powininen raczej znajdować się w "przedszkolu".
Za pomyłkę przepraszam admina.

Chcę napisać kod któremu jak podam email użytkownika, załaduje mi wszystkie dane z bazy tego użytkownika i wyswietli mi na ekranie.

co do shematu bazy
nazwa bazy: `users`
nazwy kolumn w tabeli bazy:
idusers name surname gender email

Co do kodu var_dump($result);

  1. array(2) { [0]=> string(0) "" [""]=> string(0) "" }
Go to the top of the page
+Quote Post
zzeus
post 23.02.2010, 23:31:45
Post #4





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


  1. $sql = "SELECT idusers, name, surname, gender FROM users WHERE email = '".$_POST['email'].'";


--------------------
Go to the top of the page
+Quote Post
Piotrek666
post 23.02.2010, 23:44:59
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.11.2008
Skąd: Czestochowa

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


  1. require("run.php");
  2. //$sql = $DB->Query("SELECT '".$_POST['email']."' FROM `users` ");
  3. //$sql = $DB->Query("SELECT * FROM `users` WHERE `email` = '".$_POST['email']."'");
  4. $sql = "SELECT idusers, name, surname, gender FROM `users` WHERE email = '".$_POST['email']."'";
  5. //$result = $DB->ToArray($sql);
  6. //var_dump($result);
  7. echo "<h3>USER</h3><ol>";
  8. echo "'.$name.'";


wyświetla ".."

ja już zaczołem myśleć że coś umiem w tym zagadnieniu :/
Go to the top of the page
+Quote Post
lukasz.adamczews...
post 24.02.2010, 09:53:41
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 2
Dołączył: 23.02.2010

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


nie obrażaj ludzi jeśli nie masz ku temu podstaw (najlepiej w ogóle nie obrażaj)

kolega powyżej dał Ci dobry kod ale ty nie masz pojęcia jak się później przetwarza dane z bazy.
skąd niby php ma wiedzieć co powinno być pod zmienną $name skoro nie określiłeś jej wartości.

przeanalizuj tą stronę http://www.php.net/manual/en/function.mysql-db-query.php
Go to the top of the page
+Quote Post
Piotrek666
post 24.02.2010, 13:06:59
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.11.2008
Skąd: Czestochowa

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


Jeśli chodzi o "przedszkole" to miałem na myśli swój post(cały wątek).
cała sprawa z jednym zapytaniem do bazy to raczej początki sql raczej.


Co do niewiedzy na temat sql to owszem zgadza się - mam zielone pojecię - dopiero się uczę.

Cały kod próbowałem różnymi sposobami (mowa o typie nawiasu i zapytanie) sprawdzić.
Wszędzie zawsze dostaje puste dane. var_dump($result); zwraca mi null.
Wnioskuje że mam problem z zapytaniem do bazy gdzie moja sieczka nawiasowa robi swoje.

jak mam napisać zapytanie w którym email usera byl by podawany metodą post z linku do tego kodu??

mam inny kod który mi działa bez zarzutu
Służy do wyświetlenia wszystkich userów:

  1. // USERS
  2. $sql = $DB->Query("SELECT * FROM `users` ORDER BY idusers ASC");
  3. if($DB->Count($sql)>0){
  4. echo "<h3>USERS</h3><ol>";
  5. while($result = $DB->ToArray($sql)){
  6. $sql1 = $DB->Query("SELECT COUNT(email) FROM `users`");
  7. echo "<li>ID:&nbsp;".htmlspecialchars($result['idusers'])."&nbsp;".htmlspecialchars($result['name'])."&nbsp;";
  8. echo "".htmlspecialchars($result['email'])."";
  9. echo "</li>";
  10. }
  11. echo "</ol>";
  12. }


Zapytania do bazy typu

SELECT * FROM `users` WHERE email = '".$_POST['email']."'
SELECT idusers, name, surname, gender FROM users WHERE email = '".$_POST['email'].'"

nie dają mi żadnych wyników
Go to the top of the page
+Quote Post
nospor
post 24.02.2010, 13:09:40
Post #8





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Cytat
email usera byl by podawany metodą post z linku do tego kodu
linki wysylają dane GETem a nie POSTem
Patrzyles wogole czy dostajesz ten email? przeciez to piersza rzecz ktora nalezało sprawdzic...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Piotrek666
post 24.02.2010, 14:42:18
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 11.11.2008
Skąd: Czestochowa

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


Działa to bylo pierwsze co sprawidziłem...

Tylko że przy początkowych próbach napisania poprawnego zapytania do bazy, z funkcji get mi się zrobił post.
zwracając uwagę na ilość nawiasów nie zwróciłem uwagi co się znajduje w tych nawiasach. A dalej to już poszło... tracąc już calą nadzieje że się uporam z problemem, napisałem na forum.

Zrobiłem banalny błąd - pomylilem funkcje get z postem i na odwrót.

Zapytanie
  1. $sql = $DB->Query("SELECT * FROM `users` WHERE email = '".$_GET['email']."' ");

działa poprawnie teraz.

Chyba sobie daruje php i bazy bo moja dysleksja wykończy psychicznie mnie i każdego kto chciałby mi pomóc.

Wszystkim dziękuję za pomoc smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 17:43