Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dodanie elementów do tablicy
Forum PHP.pl > Forum > Przedszkole
devbazy
Otóż zastanawiam się w jaki sposób wrzucić ilość pobranych elementów (ID) do tablicy, a następnie porównać je z tym pobranym za pomocą metody GET. Użytkownik ma do wyboru kilka obrazków (które są odnośnikami), wszystko działa jak należy, dopóki ręcznie nie wpisze własnej wartości w adresie - wtedy nie pokazuje się nic. Chciałbym jakoś zabezpieczyć taką ewentualność, a kompletnie nie wiem jak się za to zabrać, dlatego prosiłbym o jakieś wskazówki, przykładowy kod.
erix
Cytat
Chciałbym jakoś zabezpieczyć taką ewentualność

Przestaw zmienną na false, daj gdzieś jeszcze die. (jaki opis, taka odpowiedź)

Mamy Ci odpowiedzieć bez jakiegokolwiek Twojego kodu...?
devbazy
Tak to mniej więcej wygląda.

  1. $query = mysql_query("SELECT * FROM tabela") or die (mysql_error());
  2.  
  3. while($rekord = mysql_fetch_array($query))
  4. {
  5. echo '<li><a href="index.php?site=img&id='.$rekord['img'].'"><img src="images/'.$rekord['img'].'.jpg" border="0" alt="" /></a></li>';
  6. }
  7.  
  8. if($_GET['site'] == 'img' && isset($_GET['id']))
  9. {
  10. $id = intval($_GET['id']);
  11. $update = mysql_query("UPDATE tabela2 SET img='".$id."' WHERE uzytkownik='".$_SESSION['user']."' ") or die (mysql_error());
  12. }


Pole img przechowuje wartości jako int.
erix
Cytat
Użytkownik ma do wyboru kilka obrazków (które są odnośnikami), wszystko działa jak należy, dopóki ręcznie nie wpisze własnej wartości w adresie - wtedy nie pokazuje się nic

Na przykład? Żadnego błędu wtedy nie wysypuje?
devbazy
Wybrany obrazek, który jest odnośnikiem zostaje jeszcze później wyświetlany. Jeżeli któryś z nich zostanie wybrany normalnie - czyli poprzez kliknięcie w dany link, to wszystko jest w jak najlepszym porządku, a z kolei gdy ktoś wpisze w adresie przykładowo: index.php?site=img&id=3, bądź też 180000 - nie pokazuje się nic, bowiem pole img nie posiada takowej wartości. Po wpisaniu błędnej liczby, bądź też tekstu - w polu img, które znajduje się w tabela2 - zmienia się wartość na 0. Chciałbym zrobić to w taki sposób, że gdy ktoś wpisze błędną liczbę (różną od tych pobranych z tabeli "tabela") zwróci false, jednak by do tego dojść najpierw muszę wrzucić pobrane rekordy do tablicy, a następnie je porównywać z tym wybranym.

Mam nadzieję, że zrozumiesz, sam się już powoli motam.
erix
Zrozumiałem, że zwraca Ci pustą stronę...

  1. if($_GET['site'] == 'img' && isset($_GET['id']))
  2. {
  3. $id = intval($_GET['id']);
  4. $update = mysql_query("UPDATE tabela2 SET img='".$id."' WHERE uzytkownik='".$_SESSION['user']."' ") or die (mysql_error());
  5. }

Dodaj tu sprawdzanie, czy w bazie (poprzednia tabela) taki rekord już istnieje. Możesz również zrobić to nieco wcześniej:

  1. while($rekord = mysql_fetch_array($query))
  2. {
  3. echo '<li><a href="index.php?site=img&id='.$rekord['img'].'"><img src="images/'.$rekord['img'].'.jpg" border="0" alt="" /></a></li>';
  4. }

Wyciągasz w końcu wszystkie rekordy, więc:
  1. daj zmienną ($jest) przed pętlą
  2. w pętli sprawdzaj, czy ID bieżącego jest zgodny z tym, co wysłałeś w URL - jeśli tak - $jest = true
  3. jeśli podasz zły kod w URI, zmienna $jest będzie w takim stanie, co przed pętlą - false
  4. dalej chyba wiesz, co robić winksmiley.jpg
devbazy
Cytat(erix)
Zrozumiałem, że zwraca Ci pustą stronę...


Wręcz przeciwnie. Po wpisaniu błędnej liczby/tekstu w adresie linku (przykład: index.php?site=img&id=cos /189000) - wartość pola img w tabeli tabela2 zmienia się na 0. W każdym bądź razie spróbuje jeszcze pokombinować, a jeżeli nic z tego nie wyjdzie, to cóż - odezwę się ponownie.

EDIT: Dzięki za zainteresowanie erix, leci pomógł.
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.