Autor | Zpráva | ||
---|---|---|---|
grossik Profil |
#1 · Zasláno: 25. 8. 2015, 18:49:01
Dobrý den mám, problém s komunikací mezi Javascript a PHP, mám udělaného hada v javascriptu a nejlepší skóre ukládám na localStorage a s localStorage to přes php chci poslat do databáze, ale kód nefunguje. Teprve se učím...
<?php include_once("db.php"); session_start(); $foo = "<script>document.write(localStorage('nejskore'));</script>"; //Pripojenie k databazi a vkladanie hodnot do nej mysql_connect($DBhost,$DBuser,$DBheslo) or die("Chyba: Nieje mozne sa pripojit k Databaze!"); @mysql_select_db($DBname) or die("Chyba: Nieje mozne vybrat nasledujucu tabulku! $DBname"); { mysql_query("UPDATE `users` SET `skore_snake` = '".$foo."'"); } ?> |
||
lionel messi Profil |
grossik:
Toto ti ani fungovať nemôže. V článku http://pehapko.cz/zakladni-kurz/15-php-a-javascript nájdeš alternatívne funkčné riešenia. Ich základnou ideou je iniciovanie nového požiadavku na server. |
||
grossik Profil |
#3 · Zasláno: 25. 8. 2015, 22:19:33
Stále nevím... jsem začátečník
|
||
Chamurappi Profil |
#4 · Zasláno: 25. 8. 2015, 22:38:46
Reaguji na grossika:
PHP se odehrává na serveru, JS u klienta, nelze je takto kombinovat. „nejlepší skóre ukládám na localStorage“ Proč ne do cookie? Vždyť localStorage je navržený právě na věci, které nechceš posílat na server (na rozdíl od cookies).
Pokud je výsledek určený při konci hry, proč ho neodešleš rovnou třeba formulářem? Mimochodem, jestli sestavuješ tabulku rekordů z hraní javascriptové hry, budeš mít problém s podvrženými výsledky. Vyrábíš hru typu „vymysli si větší číslo“… protože vše, co se děje u klienta (v prohlížeči), je podvrhnutelné. |
||
grossik Profil |
#5 · Zasláno: 25. 8. 2015, 23:01:03
Je to jen to klasický had je tam jen číslo právě probíhané hry a nejlepší skóre a to nejlepší skóre chci vždy poslat do databáze (tam už je ten hráč zaregistrovaný) a nevím jak to udělat přes cookie...
|
||
Časová prodleva: 3 dny
|
|||
grossik Profil |
Chamurappi:
Tak už jsem to přes to cookies udělal, ale mám problém, že tam chci (do té tabulky v databázi) jen to největší číslo, ale to mi nefunguje... z 1 na 0 to nedá, ale z 2 na 1 v pohodě (když se tabulka vytvoří je nejlepší skóre 0) include_once("db.php"); session_start(); $skores = $_COOKIE["skore"]; mysql_connect($DBhost,$DBuser,$DBheslo) or die("Chyba: Není mozne se pripojit k databazi!"); @mysql_select_db($DBname) or die("Chyba: Není mozne vybrat nesledujici tabulku! $DBname"); { $pocet = mysql_query("SELECT skore_snake FROM users WHERE login='".$_SESSION['login']."'"); if(mysql_num_rows($pocet) < $skores) { mysql_query("UPDATE `users` SET `skore_snake` = '".$skores."' WHERE login='".$_SESSION['login']."'"); mysqli_refresh(); header("Location: snake.php"); } else { header("Location: snake.php"); } } ?> |
||
Keeehi Profil |
#7 · Zasláno: 29. 8. 2015, 01:34:26
mysql_num_rows vrací počet řádků výsledku, ne hodnotu uloženou v databázi což je to co chceš. Měl bys použít mysql_fetch_array nebo by v tomto případě úplně stačilo mysql_result.
Řádek 14 tam máš špatně (navíc) Funkce mysql_* jsou zastaralé. Měl bys používat mysqli_*. |
||
grossik Profil |
#8 · Zasláno: 29. 8. 2015, 01:45:16
Keeehi:
O tom řádku 14 vím... a mysql_result mi nepomohlo furt to dělá to sáme a mysql_fetch_array mi nefunguje |
||
Keeehi Profil |
#9 · Zasláno: 29. 8. 2015, 13:10:13
grossik:
Bylo by naprosto skvělé, kdyby jsi ukázal kód, co ti nefunguje. Protože není důvod, aby to nefungovalo, takže jsi tam někde musel udělat chybu. |
||
grossik Profil |
Keeehi:
if(mysql_result($pocet) < $skores) { mysql_query("UPDATE `users` SET `skore_snake` = '".$skores."' WHERE login='".$_SESSION['login']."'"); header("Location: snake.php"); } else { header("Location: snake.php"); } |
||
Keeehi Profil |
#11 · Zasláno: 29. 8. 2015, 17:27:33
Problém je v tom, že funkce mysql_result má 2 povinné parametry a tys jí předal jen jeden. Nastuduj si manuál.
|
||
grossik Profil |
#12 · Zasláno: 29. 8. 2015, 17:35:50
Keeehi:
Děkuju moc, tenhle kód funguje v pořádku... if(mysql_result($pocet, 0) < $skores) { mysql_query("UPDATE `users` SET `skore_snake` = '".$skores."' WHERE login='".$_SESSION['login']."'"); header("Location: snake.php"); header("Connection: close"); } else { header("Location: snake.php"); header("Connection: close"); } |
||
Keeehi Profil |
No, jen se to dá zapsat elegantněji.
if(mysql_result($pocet, 0) < $skores) { mysql_query("UPDATE `users` SET `skore_snake` = '".$skores."' WHERE login='".$_SESSION['login']."'"); } header("Location: snake.php"); Slovo skores neexistuje. Ani v češtině ani v angličtině. |
||
grossik Profil |
#14 · Zasláno: 29. 8. 2015, 17:41:06
Keeehi:
Existuje, ale i tak díky $skores = $_COOKIE["skore"]; |
||
juriad Profil |
Ono je mnohem lepší položit jediný dotaz, který řádek aktualizuje jen, když se má hodnota zvýšit; žádný SELECT není potřeba.
$update = "UPDATE `users` SET `skore_snake` = " . (int) $scores . " WHERE `login` = '" . mysql_real_escape_string($_SESSION['login']) . "' AND `skore_snake` < " . (int) $scores; |
||
grossik Profil |
#16 · Zasláno: 29. 8. 2015, 17:50:16
juriad:
Dobře, díky moc |
||
Keeehi Profil |
#17 · Zasláno: 29. 8. 2015, 18:22:25
grossik:
„Existuje, ale i tak díky“ To bylo o česko-anglickém patvaru, ne o neexistenci proměnné. |
||
Časová prodleva: 10 let
|
0