Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] wyciąganie danych z bazy
pijanyadmin
post
Post #1





Grupa: Zarejestrowani
Postów: 128
Pomógł: 1
Dołączył: 24.10.2007

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


wyciągam dane z bazy 'userdata' przy pomocy:

  1. <?php
  2. $userdata = $_SESSION['id'];
  3. $query = mysql_query("SELECT * FROM userdata WHERE id = '$userdata'");
  4. $dane = mysql_fetch_array($query);
  5. $login = $dane[login];
  6. $email = $dane[email];
  7. $gg = $dane[gg]
  8. ?>


aby je odczytać

Kod
<?php echo "$gg"; ?>


edycja pola 'gg' w formularzu przebiega bez problemu, jednak dodatkowo chciałbym mieć możliwość ukrycia numeru gg, dlatego zrobiłem dodatkową tabele 'priv'

formularz:

Kod
<input type="radio" name="gg" value="1" /> dla znajomych<br />
<input type="radio" name="gg" value="0" /> dla wszystkich<br />


wysłanie do bazy

  1. <?php
  2. $stan = $_POST['gg']=="1" ? "1":"0";
  3.  $query = mysql_query("UPDATE priv SET gg='$stan' WHERE login='$userdata'");
  4. echo "wysłano ".(($_POST['gg']=="1")?"1":"0")." <br />";
  5. ?>


tylko, jak teraz odczytać dane z pola 'gg' i jeśli jest 0 to dane zostną wyświetlone np. "echo' dane jawne gg : '"
Go to the top of the page
+Quote Post
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


  1. SELECT userdata.gg FROM priv, userdata WHERE priv.gg='0' AND userdata.id='$userdata';


Ten post edytował Hazel 10.02.2008, 13:07:20
Go to the top of the page
+Quote Post
pijanyadmin
post
Post #3





Grupa: Zarejestrowani
Postów: 128
Pomógł: 1
Dołączył: 24.10.2007

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


userdata:
  1. `id` int(11) NOT NULL AUTO_INCREMENT,
  2. `login` varchar(15) NOT NULL,
  3. `gg` varchar(40) NOT NULL,


priv:
  1. `id_priv` int(11) NOT NULL AUTO_INCREMENT,
  2. `login` varchar(15) NOT NULL,
  3. `gg` varchar(32) NOT NULL,


jeśli dam przykładowo

  1. <?php
  2. $query = mysql_query("SELECT login.gg FROM priv, userdata WHERE priv.gg='0' AND login.id='42'");
  3. ?>


to odczytując

Kod
gg:<?php echo $gg; ?>
i tak nic sie nie wyświetla
Go to the top of the page
+Quote Post
Hazel
post
Post #4





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


1.
Cytat
(...)SELECT login.gg FROM priv, userdata(...)
A co to jest login.id? Przecież nie masz tabeli login w bazie... Ja na miejscu parsera bym wymiękł i załamał ręce. Pobierasz wartość pola gg tabeli login, a do zapytania nie angażujesz wcale takiej tabeli (domyślam się, że takowa w ogóle nie istnieje)...
2. Po co Ci w tabeli priv kolumna login, skoro masz id_priv?
3. Stosujesz w ogóle takie funkcje jak mysql_error" title="Zobacz w manualu PHP" target="_manual?
4. A zwijasz do tabeli wynik SQL? (mysql_query" title="Zobacz w manualu PHP" target="_manual, mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual)

Nie wyglądasz może na aż tak początkującego uzytkownika, żeby nie pamiętać o wykonaniu zapytania ((IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ), ale rózne przypadki już się zdarzały, więc jak coś to wybacz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

A rozwiązanie zaproponuję Ci takie:
userdata:
  1. `id` int(11) NOT NULL AUTO_INCREMENT UNSIGNED PRIMARY KEY,
  2. `login` varchar(15) NOT NULL,
  3. `gg` varchar(40) NOT NULL


priv:
  1. `id_priv` int(11) NOT NULL AUTO_INCREMENT UNSIGNED PRIMARY KEY,
  2. `gg` enum('0','1') NOT NULL


Zwróć uwagę na tabelę priv i typ pola gg. To najlepsze rozwiązanie. Wtedy, gdy chcesz pobrać gg użytkownika w zależności od tego, czy jest ono jawne, czy tajne, robisz:
  1. SELECT userdata.gg FROM priv, userdata WHERE priv.gg='0' AND userdata.id='$userdata' AND userdata.id=userdata.id_priv;


Takie zapytanie zwróci wynik tylko wtedy, gdy user o id takim jak zawartość zmiennej $userdata ma włączoną jawność gg (wartość pola priv.gg 0), w przeciwnym wypadku wynik będzie pusty. Wtedy możesz to sprawdzic i w takim przypadku wyświetlić wynik 'ukryte' albo coś w tym rodzaju (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Hazel 10.02.2008, 19:26:05
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.12.2025 - 03:32