Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] wyciąganie danych z bazy
Forum PHP.pl > Forum > Przedszkole
pijanyadmin
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 : '"
Hazel
  1. SELECT userdata.gg FROM priv, userdata WHERE priv.gg='0' AND userdata.id='$userdata';
pijanyadmin
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
Hazel
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 (tongue.gif), ale rózne przypadki już się zdarzały, więc jak coś to wybacz 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 smile.gif
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.