Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem Z kodem PHP


Rekomendowane odpowiedzi

Opublikowano

Witam mam problem z php robię grę via www i wyskakuje błąd

 

Fatal error: Call to undefined function mysql_num_rovs() in tutaj ścieżka on line 16 korzystam z tego poradnika


kod :

 

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
<title>Gra RPG : ViaWWWW Pre Alpha 0.5</title>
</head>
<body>
<?php
if (($_POST['login']!='') && ($_POST['haslo'])!=''){
require_once 'db/db.php';
$login=$_POST['login'];
$haslo=$_POST['haslo'];
echo $login.'->'.$haslo;
}
$wynik=mysql_query("SELECT * FROM users WHERE login='$login'LIMIT 1");
if (mysql_num_rovs($wynik)===1) {
      echo '<br> Istnieje takie konto' ;

}
else{

echo '<br>Konto Nie istnieje';

}

?>

<form name="input" action="index.php?action=login" method="post">
Login: <input type="text" name="login"><br />
Haslo: <input type="password" name="haslo"><br />
<input type="submit" value="Submit">
</form>


 

oabpsw.png
Opublikowano

... i ma racje ze tak krzyczy :) funkcja nazywa sie mysql_num_rows

http://pl1.php.net/function.mysql-num-rows

Ja bym troche zoptymalizowal ten kod

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
<title>Gra RPG : ViaWWWW Pre Alpha 0.5</title>
</head>
<body>
<?php

if ($_POST['login'] && $_POST['haslo'])
{
    require_once 'db/db.php';
    echo $_POST['login'] . '->' . $_POST['haslo'];
}
$wynik = mysql_query("SELECT * FROM users WHERE login='$_POST[login]'LIMIT 1");
if (mysql_num_rows($wynik) == 1) 
    echo '<br>Istnieje takie konto';
else
    echo '<br>Konto Nie istnieje';
?>
<form name="input" action="index.php?action=login" method="post">
Login: <input type="text" name="login"><br />
Haslo: <input type="password" name="haslo"><br />
<input type="submit" value="Submit">
</form>
</body>
</html>

No i jeszce bym jakos oprogramowal zachowanie skryptu po rejestracji, bo teraz wyswietli ze konto jest lub nie i znowu pokaze form

Lepiej jest nie odzywać się wcale i pozwolić ludziom myśleć, że jesteś glupi, niż odezwać się i rozwiać wszelkie wątpliwości.
Mark Twain

Opublikowano

I znowu nie działa 2 błąd

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\gra\login.php on line 16

 

to dopiero takie zarysy ;) spokojnie

oabpsw.png
Opublikowano

To znaczy, że zapytanie nie zwraca żadnych wyników. To musi być problem z zapytaniem. Jeżeli zapytanie byłoby dobre to zwróciłoby chociaż false.

$wynik = mysql_query("SELECT * FROM users WHERE login=' " . $_POST['login'] . " ' LIMIT 1");

I proszę cię, nie bierz się za tworzenie gier. Opanuj podstawy.

gamedevmania.com

Opublikowano

Ja nie planuję wypuścić tej gry robię ją dla siebie chcę lepiej opanować PHP bo robienie kalkulatorków i innych dupereli znudziło mi się

oabpsw.png
Opublikowano

w kodzie apostrof polaczyl sie z LIMIT

tu poprawny kod - powinno dzialac

$wynik = mysql_query("SELECT * FROM users WHERE login='$_POST[login]' LIMIT 1");
$wynik = mysql_query("SELECT * FROM users WHERE login=' " . $_POST['login'] . " ' LIMIT 1");

po to masz funkcjonalnosc cudzyslowu zeby nie budowac tekiej konstrukcji ^^ a po drugie to co podales przy wykonaniu byloby bledne poniewaz przy zalozeniu ze ktos podal login Writen to zapytanie wygladaloby tak

SELECT * FROM users WHERE login=' Writen ' LIMIT 1

ze spacjami przed i po nicku

Lepiej jest nie odzywać się wcale i pozwolić ludziom myśleć, że jesteś glupi, niż odezwać się i rozwiać wszelkie wątpliwości.
Mark Twain

Opublikowano

oj. te spacje rzeczywiście niepotrzebne. 

 

Wyszukanie przez skrypt zmiennej w cudzysłowie trwa trochę dłużej, a ja stawiam na optymalizację. I początkującym też to radzę.

gamedevmania.com

Opublikowano

Wyszukanie przez skrypt zmiennej w cudzysłowie trwa trochę dłużej, a ja stawiam na optymalizację. I początkującym też to radzę.

 

no to jesli juz optymalizujemy to zamiast

mysql_query("SELECT * FROM users WHERE login=' " . $_POST['login'] . " ' LIMIT 1")

trzeba zrobic

mysql_query('SELECT * FROM users WHERE login='\' . $_POST['login'] . '\' LIMIT 1')

a opoznienie ja tak krotkim wierszu jest akceptowalne i wiersz

mysql_query("SELECT * FROM users WHERE login='$_POST[login]' LIMIT 1")

jest chyba najsluszniejszym rozwiazaniem, a Twoja konstrukcja " . (...) . " ma w sobie opoznienie cudzyslowu i dodatkowo opoznienie łączenia ciagow . (...) .

Lepiej jest nie odzywać się wcale i pozwolić ludziom myśleć, że jesteś glupi, niż odezwać się i rozwiać wszelkie wątpliwości.
Mark Twain

Opublikowano

Ogólnie zapis z cudzysłowiem jest wolniejszy - bo skrypt szuka w nim zmiennych nawet jak ich tam niema. 

Apostrofy są zdecydowanie szybsze.

 

Najsłuszniejszym rozwiązaniem jest użycie apostrofów. Operator konkatenacji (czyli ta kropka) niczego nam nie opóźnia.

gamedevmania.com

Opublikowano

@Writen - widze ze jestes z tych co maja zawsze racje czyli

" (...) ' " . $_POST['login'] . " ' (...)"

to w/g Ciebie jest optymalizacja? w takim szkoda palcow i zuzycia gumek w klawiaturze

 

@ALL - opisu optymalizacji kodu szukajcie w innych wątkach ;)

Lepiej jest nie odzywać się wcale i pozwolić ludziom myśleć, że jesteś glupi, niż odezwać się i rozwiać wszelkie wątpliwości.
Mark Twain

Opublikowano

 Optymalizacja to jest szereg działań prowadzący do zwiększenia szybkości aplikacji. Ale tu też chodzi o czytelności kodu.

 

@Writen - widze ze jestes z tych co maja zawsze racje czyli

 

 

Jeżeli ktoś ma około 5 lat doświadczenia to swoje racje też ma.

 

Jeżeli ktoś pisze grę. I uważa że optymalizacja jednego zapytania to strata palców, to gry nigdy nie zrobi.

 

 

No ale dobra, różnica między tym

" (...) '" . $_POST['login'] . "' (...)"

a tym:

" (...) '$_POST[login]' (...)"

jest bardzo mała.

 

 

Bo jak już mówiłem apostrofy są szybsze.

gamedevmania.com

Opublikowano

no dobra - jak juz idziemy w przechwalki to pierwszy program do odpytywania ze stopni wojskowych napisalem w 1987 w szkole na zx spectrum, nie mam kalkulatora zeby policzyc "doswiadczenie"

dwa - to nie ja pisze gre tylko staram sie to ulatwic

trzy

 

(...)

 

No ale dobra, różnica między tym

" (...) '" . $_POST['login'] . "' (...)"

a tym:

" (...) '$_POST[login]' (...)"

jest bardzo mała.

 

 

Bo jak już mówiłem apostrofy są szybsze.

piszesz jedno a robisz drugie skoro apostrofy sa szybsze (bo sa) to po co piszesz kod

mysql_query("SELECT * FROM users WHERE login=' " . $_POST['login'] . " ' LIMIT 1")

gdzie tu masz apostrofy uzyte w sensie przyspieszenia kodu?

Lepiej jest nie odzywać się wcale i pozwolić ludziom myśleć, że jesteś glupi, niż odezwać się i rozwiać wszelkie wątpliwości.
Mark Twain

Opublikowano

Dajże mi spokój. Napisałem, że apostrofy są szybsze, a nie że to co podałem.

Chodzi mi o to, że cudzysłowie to stringi, a operacje na stringach zawsze dłużej trwają.

gamedevmania.com

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...