Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] explode i array_search
Forum PHP.pl > Forum > Przedszkole
Th0e
Witam. Piszę skrypt na dodawanie tzw plusów komentarzom. Chciałbym by z jednego IP można było dać jeden plus dla danego komentarza.

  1. $plus = mysqli_real_escape_string($connect, $_GET['plus']); //id komentarza
  2. $ip = $_SERVER['REMOTE_ADDR'];
  3. $sprawdz_ip = mysqli_fetch_array(mysqli_query($connect, "SELECT * FROM `komentarze` WHERE `id`='$plus'")); //lista ip, które dało plusa temu komentarzowi
  4. $spr = explode(",", $sprawdz_ip['ip']);
  5. $szukaj = array_search($ip, $spr);
  6. if(empty($szukaj)) //jeśli nie znalazło twojego ip, niech doda plusa
  7. {
  8. $zbior_ip = $ip . "," . $sprawdz_ip['ip'];
  9. mysqli_query($connect, "UPDATE `komentarze` SET ocena=`ocena`+1 WHERE `id`='$plus'");
  10. mysqli_query($connect, "UPDATE `komentarze` SET ip='$zbior_ip' WHERE `id`='$plus'");
  11. header("Location: index.php?art=". $art_id ."&done");
  12. }


Problem w tym, że plusy można dodawać bez końca, mimo że moje ip jest już w bazie danych.
Pyton_000
trzymanie IP w jednej komórce to na prawdę najfatalniejszy pomysł na świecie (no możne nie naj naj, ale jeden z naj)
Th0e
Kombinuj nad problemem kilka godzin, dodaj post na forum i znajdź sam rozwiązanie po paru minutach :/

Zastąpiłem array_search na in_array

Odnośnie trzymania ip w 1 komórce, to co w tym złego?
Comandeer
Choćby to, że żeby szukać IP musisz pobrać rekord, posiekać go i sprawdzić w tablicy czy nie ma danego stringu (lub jechać przez strpos). A tak całe sprawdzanie wykonałbyś jednym zapytaniem.
Co innego w przypadku baz, które mają pola typu array. Chociaż osobna tabela i tak brzmi "czyściej" IMO wink.gif
Pyton_000
Co złego? Wprowadź tam 10 tyś. adresów IP to się przekonasz.
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.