Změna proměnných v databázi pomocí javascriptu – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Změna proměnných v databázi pomocí javascriptu – JavaScript, AJAX, jQuery – Fórum – Programujte.comZměna proměnných v databázi pomocí javascriptu – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

quest0
Newbie
4. 6. 2013   #1
-
0
-

Dobrý den.

Cíl: Chci aby se po kliknutí (přihlášeného uživatele) na tlačítko "pridej x" přičetla 1 k x a odečetla 1 od y.A aby se mu to při další návštěvě znovu objevilo tak jak si to navolil minule.

Problém: Při kliknutí na tlačítko se sice změní hodnota x a y ale jen vizuálně (Ne v databázi).Takže když uživatel odejde a vrátí se, nebo nechá stránku aktualizovat tak se mu to vrátí zpátky tak jak to bylo.A v databázi nedojde ke změně.

Zde jsou mé kódy:

config.php:

<?php
error_reporting(E_ALL);

define('DBHOST', 'server);          # databazovy server
define('DBNAME', 'databaze');              # jmeno databaze
define('DBUSER', 'me jmeno(treba quest)');               # uzivatelske jmeno
define('DBPASS', 'heslo.jako treba 1234:-))');                   # heslo k databazi

@mysql_connect(DBHOST, DBUSER, DBPASS) or die (mysql_error());
@mysql_select_db(DBNAME) or die (mysql_error());
mysql_query("SET NAMES utf8_czech_ci");

@session_start();
?>

user.php:

<?php
require_once dirname(__FILE__)."/config.php";

$dotaz = mysql_query("SELECT x, y FROM uzivatele WHERE id='".$id."'") or die(mysql_error());
if ($odpoved = mysql_fetch_array($dotaz))
  {
  $x = $odpoved['x'];
  $y = $odpoved['y'];
  }
?>
<script type="text/javascript">
  var x=<?php echo $x ?>;
  var y=<?php echo $y ?>;
  var id=<?php echo $_SESSION['id'] ?>;

  function nazev()
    {
    if (y>= 1)
       {
       x +=1;
       y -=1;
       }
    window.document.getElementById("vysledek").innerHTML=x;
    var temp = new Image();
    temp.src = "ulozDoDatabaze.php?x=" + x + "&y=" + y;
    }
</script>
<div id="vysledek">10
</div>
<br>
<input type="button" onClick="nazev();" value="pridej x">

ulozdodatabaze.php:

<?php
  require_once dirname(__FILE__)."/config.php";
$dotaz = mysql_query("UPDATE uzivatele SET x='".$_GET["x"]."', y='".$_GET["y"]."' WHERE id='".$_SESSION['id']."'");
?>

Proměnné z databáze se mi načtou protože když se přihlásím z účtu a. tak mám základní hodnoty 10 a 10 ale pokud se přihlásím z účtu b. na kterém jsem změnil x na 11 a y na 9(změnil jsem to v administraci databáze ne přes tuhle funkci) tak se načte 11 a 9.Takže načítání z databáze funguje.
Takže:id,x,y se načtou správně ale po přičtení hodnoty se do databáze neuloží a při dalším načtení stránky se zobrazí zase jako předtím.

Už nevím v čem to je a budu rád za každou radu.

Nahlásit jako SPAM
IP: 94.241.70.–
peter
~ Anonymní uživatel
3981 příspěvků
5. 6. 2013   #2
-
0
-

Zkus si udelat alert vsech promennych, ktere jsou pro spravnou funkci dulezite. Podle tveho popisu hadam, ze nevis, jaka data odesilas, pouze si to tipujes. Treba, kdyz je podminka y>=1 a funkce y-=1, tak to znamena, ze se ten if nemusi provest, pokud neni y prave 1 a vys. V tech ostatnich pripadech proto bude tlacitko ukladat porad to same, co nacte z databaze.

U obrazku se tez provadi kesovani. Na konec adresy bych pridal bud nahodne cislo nebo casove razitko, aby byla adresa unikatni a nemohl ji kesovat.

Nahlásit jako SPAM
IP: 193.84.207.–
Ericsko+3
Stálý člen
6. 6. 2013   #3
-
0
-

Tak, ako ti napisal Peter + musis sa naucit pouzivat debugovanie = vypis premennych pocas behu v scripte.

Ten najednoduchsi sposob je jednoduche echo/print_r()/var_dump(), zlozitejsie do buducna napr. pouzitie niektorej debug kniznice (http://coding.smashingmagazine.com/…l-php-tools/)

Co sa tyka zmeny databazy z javascriptu, tu by som urcite nesiel touto formou (parameter k obrazku), lebo staci, ze na strane servra nebudu korektne img hlavicky a o prekvapenie je postarane.

Namiesto toho treba pouzit asynchronny request - ajax (idealne skus napr. jQuery kniznicu a $.post()
Javascript sa da tiez pekne debugovat cez console.log (vysledok uvidis po stlaceni F12 v browseri).

Cize skor, ako ti najst chybu volim naviest ta na programatorske praktiky, ktorymi si ulahcis hladanie chyb a naucis sa debugovat vlastne scripty sam.

Nahlásit jako SPAM
IP: 87.197.170.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý