• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Niedziałający kod PHP

Object Storage Arubacloud
–2 głosów
337 wizyt
pytanie zadane 21 lutego 2016 w PHP przez MatiiTv Gaduła (3,790 p.)

Witam, co jest nie tak z tym kodem? :/ Nie wywala żadnych błędów, ale nic nie wyświetla. (A powinno)

$result1 = mysql_query("SELECT * FROM logs ORDER by id ASC");
$rezultat = mysql_query("SELECT steamid FROM banned");
$rezultat1 = mysql_num_rows($rezultat);


if($_SESSION['checked']!=0){ //w innym skrypcie ustawiam 1 kiedy uzytkownik sie zaloguje
		while($rekord = mysql_fetch_array($rezultat)){
			if($steamid != $rekord){ 
				while($extract = mysql_fetch_array($result1)){
				 echo "<span class='hello'>"."<img style='border-radius: 50%; padding-right: 3px;' src='".$extract['avatar']."'>"."<span class='";
				 if($extract['steamid'] == 76561198093864167) echo "admin"; else echo "uname";
				  echo "'>"; 
				 echo $extract['username']. "</span>: <span class='msg'>" . $extract['msg']. "</span></span><br>";
				}
		} else {
		echo "Zostales zbanowany! Nie mozesz pisac na czacie.";
	}
}
}

Trochę się tym bawiłem i bez ifa 

if($steamid != $rekord){ 

wyswietla sie. To fragment kodu, jezeli pojawi sie jakas niejasnosc to wysle wiekszy fragment. 

Pozdrawiam.

3 odpowiedzi

0 głosów
odpowiedź 21 lutego 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)

Tyle było i jest mówione... nie używać mysql_ !!! A ty dalej swoje...

Co do samego problemu w tym ifie to $rekord jest tablicą z danymi danego rekordu, a ty próbujesz tą całą tablicę przyrównać z jakąś zmienną - tak nie da rady.

komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)
Próbowałem :/ Wywalało błędy jak dopisałem "i"
komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)
To jak to porównać żeby działało?
komentarz 21 lutego 2016 przez No Lime Gaduła (4,540 p.)
MatiiTv. Bo składnia nieco się różni od mysqli. To nic strasznego, kwestia przeczytania jednego krótkiego tutoriala.
komentarz 21 lutego 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)

Samo dopisanie "i" nie wystarczy, trzeba coś jeszcze pewnie zmienić/dodać i będzie działać. Zapoznaj się z dokumentacją i będziesz wiedział co robisz źle.

Nie wiem co dokładnie chcesz zrobić i co porównać, ale widzę, że zapytaniem wyciągasz z bazy steamid. Jeśli więc chcesz porównać to co wyciągniesz z bazy ze zmienną $steamid to trzeba podać z jakim indeksem w tablicy chcesz to coś porównać. A że z bazy została wyjęta tylko ta jedna kolumna to można dać po prostu tak:

if($steamid != $rekord[0]){

Nie jestem pewien czy o to Ci dokładnie chodzi, tak się tylko mogę domyślać.

komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)

No wiemfrown ale już najpierw chcę ten problem rozwiązać

komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)
Chcę porównać $steamid z aktualnym rekordem wyciągniętym z bazy. Zrobiłem pętlę żeby porównać wszystkie rekordy z jednym $steamid.
komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)
if($_SESSION['checked']!=0){
		while($rekord = mysql_fetch_array($rezultat)){
			if($steamid != $rekord[0]){ //chce porownac aktualnie wyciagniety rekord z bazy danych z steamid i jezeli nic nie znajdzie to wykonac if a jezeli nie to else
				while($extract = mysql_fetch_array($result1)){
				 echo "<span class='hello'>"."<img style='border-radius: 50%; padding-right: 3px;' src='".$extract['avatar']."'>"."<span class='";
				 if($extract['steamid'] == 76561198093864167) echo "admin"; else echo "uname";
				  echo "'>"; 
				 echo $extract['username']. "</span>: <span class='msg'>" . $extract['msg']. "</span></span><br>";
				}
		} else {
		echo "Zostales zbanowany! Nie mozesz pisac na czacie.";
	}
}
}

 

komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)

O to samo spytałem tutaj: http://forum.pasja-informatyki.pl/110850/sql-php-if

No i pomogłeś mi. Działało, ale nie do końca. 

if($_SESSION['checked']!=0){
		if(!$rezultat1>0){ 
			while($extract = mysql_fetch_array($result1)){
			 echo "<span class='hello'>"."<img style='border-radius: 50%; padding-right: 3px;' src='".$extract['avatar']."'>"."<span class='";
			 if($extract['steamid'] == 76561198093864167) echo "admin"; else echo "uname";
			  echo "'>"; 
			 echo $extract['username']. "</span>: <span class='msg'>" . $extract['msg']. "</span></span><br>";
			}
	} else {
		echo "Zostales zbanowany! Nie mozesz pisac na czacie.";
	}
}

Działało to tak, że admin mógł zbanować tylko sam siebie.

komentarz 21 lutego 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
Jeśli dobrze rozumiem to nie wiem po co tak kombinować. Nie prościej w zapytaniu do bazy dać warunek WHERE steamid = danemu steamid? I wtedy jeśli baza coś zwróci to znaczy że aktualnie zalogowany użytkownik jest zbanowany, jeśli nie to znaczy, że nie jest.

No chyba że nie do końca rozumiem co chcesz zrobić.
komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)
Wtedy to działa, ale jak się zaloguję na inne konto to nic się nie wyświetla
0 głosów
odpowiedź 21 lutego 2016 przez Mateusz11 Pasjonat (22,910 p.)

Od PHP w wersji 7 metoda "mysql" została zdeprecjonowana (czy jakoś tak xD) i nie używa jej się ponieważ nie działa. Teraz używa się nowej funkcji mysqli_

Czyli twój kod będzie wyglądał tak: 

$result1 = mysqli_query("SELECT * FROM logs ORDER by id ASC");
$rezultat = mysqli_query("SELECT steamid FROM banned");
$rezultat1 = mysqli_num_rows($rezultat);
 
 
if($_SESSION['checked']!=0){ //w innym skrypcie ustawiam 1 kiedy uzytkownik sie zaloguje
        while($rekord = mysql_fetch_array($rezultat)){
            if($steamid != $rekord){ 
                while($extract = mysql_fetch_array($result1)){
                 echo "<span class='hello'>"."<img style='border-radius: 50%; padding-right: 3px;' src='".$extract['avatar']."'>"."<span class='";
                 if($extract['steamid'] == 76561198093864167) echo "admin"; else echo "uname";
                  echo "'>"; 
                 echo $extract['username']. "</span>: <span class='msg'>" . $extract['msg']. "</span></span><br>";
                }
        } else {
        echo "Zostales zbanowany! Nie mozesz pisac na czacie.";
    }
}
}

To tak na marginesie

A cały problem chyba rozwiązał kolega na dole :)

Pozdrawiam

komentarz 21 lutego 2016 przez Ehlert Ekspert (212,670 p.)

Teraz bardziej PDO wink

komentarz 21 lutego 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
$result1 = mysqli_query("SELECT * FROM logs ORDER by id ASC");

Jesteś pewien? :P Bo dokumentacja uważa nieco inaczej:

mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

http://php.net/manual/en/mysqli.query.php

I najlepiej to użyć PDO o czym też koledze wspominałem wcześniej.

0 głosów
odpowiedź 21 lutego 2016 przez Buby Pasjonat (19,590 p.)
edycja 21 lutego 2016 przez Buby

A w jakim miejscu deklarujesz i inicjalizujesz zmienną $steamid?

Poza tym $rekord jest tablicą, więc aby się dobrać do wartości "steamid" w wierszu zastosuj nawiasy kwadratowe - $rekord['steamid'] lub $rekord[0], ponieważ domyślnie otrzymujesz tablicę, która umożliwia dostęp w obu wypadkach.

Wydaje mi się, że chcesz porównać kolumnę steamid, którą zawiera $result1.

Jeśli tak jest, to przebudowanie kodu w ten sposób wykona powierzone zadanie:


function isNotBanned($steamid, $bannedIdList){
		while($rekord = mysql_fetch_array($bannedList)){
			if($steamid == $rekord['steamid']){ 
				return false;
			}
		}
		return true;
	}
	
	$result1 = mysql_query("SELECT * FROM logs ORDER by id ASC");
	$rezultat = mysql_query("SELECT steamid FROM banned");
	$rezultat1 = mysql_num_rows($rezultat);
	 
	
	if($_SESSION['checked']!=0){ //w innym skrypcie ustawiam 1 kiedy uzytkownik sie zaloguje
		while($extract = mysql_fetch_array($result1)){
			{
				if(isNotBanned($extract['steamid'], $rezultat)){
					echo "<span class='hello'>"."<img style='border-radius: 50%; padding-right: 3px;' src='".$extract['avatar']."'>"."<span class='";
						if($extract['steamid'] == 76561198093864167) {
							echo "admin";
						} else {
							echo "uname";
						}
					echo "'>"; 
					echo $extract['username']. "</span>: <span class='msg'>" . $extract['msg']. "</span></span><br>";
				} else {
					echo "Zostales zbanowany! Nie mozesz pisac na czacie.";
				}
			}
		}
	}

 

Pozdrawiam! :)

komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)

Dziękuję za tak dużą fatygę, ja jestem bardzo zmieszany bo się pogubiłem. $steamid:

$steamid = $_SESSION['steamrealid'];

które pochodzi z innego skryptu: 

$_SESSION['steamrealid'] = $steam->response->players[0]->steamid;

 

komentarz 21 lutego 2016 przez Buby Pasjonat (19,590 p.)
To zamien w moim kodzie $extract['steamid'] na $steamid.
komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)

To mój skrypt czatu który składa się z insert.php, index.php i logs.php.

 

W insert jest wkładanie do bazy danych

W logs.php pobieranie.

Piszę panel admina, napisałem usuwanie wiadomości użytkowników i chcę napisać skrypt na banowanie. W moim innym wątku rozwiązałem to tak: 

$result1 = mysql_query("SELECT * FROM logs ORDER by id ASC");
$rezultat = mysql_query("SELECT * FROM banned WHERE `steamid`=".$steamid);
$rezultat1 = mysql_num_rows($rezultat);


if($_SESSION['checked']!=0){
		if(!$rezultat1>0){ 
			while($extract = mysql_fetch_array($result1)){
			 echo "<span class='hello'>"."<img style='border-radius: 50%; padding-right: 3px;' src='".$extract['avatar']."'>"."<span class='";
			 if($extract['steamid'] == 76561198093864167) echo "admin"; else echo "uname";
			  echo "'>"; 
			 echo $extract['username']. "</span>: <span class='msg'>" . $extract['msg']. "</span></span><br>";
			}
	} else {
		echo "Zostales zbanowany! Nie mozesz pisac na czacie.";
	}
}

Jednak to działa tak że admin może zbanować sam siebie (wtedy to działa), po zalogowaniu na innym koncie nic się nie wyświetla

komentarz 21 lutego 2016 przez MatiiTv Gaduła (3,790 p.)

Podobne pytania

0 głosów
1 odpowiedź 429 wizyt
pytanie zadane 1 października 2018 w PHP przez dawidek08 Początkujący (290 p.)
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 11 sierpnia 2017 w JavaScript przez Maciek123233 Gaduła (3,400 p.)
0 głosów
0 odpowiedzi 108 wizyt
pytanie zadane 14 listopada 2020 w JavaScript przez Nabuchadonozor Gaduła (3,120 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...