-
Migrace z Joomla 1.5, 2.5 a 3.x do nové Joomla 6
Bong ·
- X Online Joomla bar xunil ·
-
Phoca Cart - pluginy dopravy
H13 ·
-
Nový joomlaportal.cz
Linelabcz ·
-
Amanus - nová šablona Astroid frameworku podporující Phoca Cart
H13 ·
- X Claude Code a VS Code - kompromitace xunil ·
-
Phoca Download - verze 6.1.6 vydána
H13 ·
-
Phoca Cart - Booking
H13 ·
předání dat z javascript do PHP
- karel
-
- OFFLINE
- Zkušený uživatel
-
Méně
Více
- Příspěvky: 621
23. zář 2015 12:59 - 23. zář 2015 13:02 #123547
od karel
Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.
Odpověď od karel v tématu předání dat z javascript do PHP
vyzkoušejte, [strike]ale (imho) nebude fungovat, protože JS "nedrží" přihlášeného uživatele (v session/cookies) - jako když budete volat stejnou URL z jiného prohlížeče.[/strike]
Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
23. zář 2015 15:17 #123548
od Cony
Odpověď od Cony v tématu předání dat z javascript do PHP
Ano to by fungovat mělo, popř. JFactory::getUser()->id nebo můžete také testovat zda je uživatel přihlášen pomocí JFactory::getUser()->guest
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
23. zář 2015 15:18 #123549
od Cony
Odpověď od Cony v tématu předání dat z javascript do PHP
Jinak do toho volání AJAX si můžete přidat proměných dle libosti, stačí rozšířit pole data: {} o dal39 prvky.
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
23. zář 2015 19:38 #123554
od Ernst
Odpověď od Ernst v tématu předání dat z javascript do PHP
Ano funguje, jak jsem si myslel.
Pokud někdo tuhle diskuzi sleduje, tak pak lokace.php vypadá následovně:
<?php
define( '_JEXEC', 1 );
if (stristr( $_SERVER, 'win32' )) {
define( 'JPATH_BASE', realpath(dirname(__FILE__).'\..\..\..' ));
} else define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
$app =& JFactory::getApplication('site');
$app->initialise();
jimport( 'joomla.user.user' );
jimport( 'joomla.user.helper' );
$real_lat = floatval($_REQUEST);
$real_lgt = floatval($_REQUEST);
$user = JFactory::getUser()->username;
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt));
$conditions = array($db->quoteName('display_name') . ' = "$user"');
$query->update($db->quoteName('#__lovefactory_profiles'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->query();
?>
Možná se tam tahá něco i zbytečně, to ještě otestuji
Pokud někdo tuhle diskuzi sleduje, tak pak lokace.php vypadá následovně:
<?php
define( '_JEXEC', 1 );
if (stristr( $_SERVER, 'win32' )) {
define( 'JPATH_BASE', realpath(dirname(__FILE__).'\..\..\..' ));
} else define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
$app =& JFactory::getApplication('site');
$app->initialise();
jimport( 'joomla.user.user' );
jimport( 'joomla.user.helper' );
$real_lat = floatval($_REQUEST);
$real_lgt = floatval($_REQUEST);
$user = JFactory::getUser()->username;
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt));
$conditions = array($db->quoteName('display_name') . ' = "$user"');
$query->update($db->quoteName('#__lovefactory_profiles'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->query();
?>
Možná se tam tahá něco i zbytečně, to ještě otestuji
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
23. zář 2015 19:49 #123555
od Ernst
Odpověď od Ernst v tématu předání dat z javascript do PHP
a máte Cony pravdu, použil jsem tam raději to JFactory::getUser()->id, tam mám opravdu jistotu, že nenastane duplicita.
PS jak zde vkládáte ukázky kódu do toho rámečku? To neumím a vypsání do textu je trochu nepřehledné.
PS jak zde vkládáte ukázky kódu do toho rámečku? To neumím a vypsání do textu je trochu nepřehledné.
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
24. zář 2015 09:26 #123561
od Cony
V horní řadě ikon nad smajlíkama, cca uprostřed ikona "kód", nebo ručně
[code]
Tady bude kód
[/code]
Odpověď od Cony v tématu předání dat z javascript do PHP
ernst napsal: PS jak zde vkládáte ukázky kódu do toho rámečku? To neumím a vypsání do textu je trochu nepřehledné.
V horní řadě ikon nad smajlíkama, cca uprostřed ikona "kód", nebo ručně
[code]
Tady bude kód
[/code]
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
24. zář 2015 10:44 #123562
od Ernst
Odpověď od Ernst v tématu předání dat z javascript do PHP
Tak to zkusím stejně jsem měl chybu v tom zápisu do databáze. Správně má být to lokace.php
Code:
<?php
define( '_JEXEC', 1 );
if (stristr( $_SERVER['SERVER_SOFTWARE'], 'win32' )) {
define( 'JPATH_BASE', realpath(dirname(__FILE__).'\..\..\..' ));
} else define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
$app =& JFactory::getApplication('site');
$app->initialise();
jimport( 'joomla.user.user' );
jimport( 'joomla.user.helper' );
$real_lat = floatval($_REQUEST['lat']);
$real_lgt = floatval($_REQUEST['lgt']);
$user = intval(JFactory::getUser()->id);
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt));
$conditions = array($db->quoteName('user_id') . ' = '.$user);
$query->update($db->quoteName('#__lovefactory_profiles'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->query();
?>
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
24. zář 2015 16:52 #123570
od Cony
Odpověď od Cony v tématu předání dat z javascript do PHP
Používáte Joomlu (i když tady poměrně nešikovně nepřímo), používejte tedy její "vychytávky".
Místo šahání přímo na $_REQUEST zkuste
Odstraňte & u těcto řádků - emitovalo by to deprecated hlášení
Měl by jste si asi také přidat kontrolu na to, že uživatel je přihlášen, něco jako
Místo šahání přímo na $_REQUEST zkuste
Code:
$real_lat = $app->input->getInt('lat',0);
$real_lgt = $app->input->getInt('lgt',0);
Code:
$app =& JFactory::getApplication('site');
$db =& JFactory::getDBO();
Code:
if ($user) {
...
}
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
25. zář 2015 11:56 - 25. zář 2015 12:00 #123586
od Ernst
Odpověď od Ernst v tématu předání dat z javascript do PHP
děkuji za rady, zkusím to.
Teď jsem aplikoval tyto informace v php, tam moc rad nepotřebuji.
To první funguje, jen místo getint( musím dát get( , potřebuji to na desetinná místa.
To druhé nefunguje, naopak to vypíše parse error. Musím tam to $ nechat.
Test na přihlášení nepotřebuji, všichni uživatelé webu musí být přihlášeni, ale dát ho tam mohu.
Kvůli podmínkám jsem tam musel přidat čtení z databáze, tak to teď vypadá takto:
Jak moc zatěžují ty dotazy na databázi server? Musel jsem je i jinde párkrát přidat.
Teď jsem aplikoval tyto informace v php, tam moc rad nepotřebuji.
To první funguje, jen místo getint( musím dát get( , potřebuji to na desetinná místa.
To druhé nefunguje, naopak to vypíše parse error. Musím tam to $ nechat.
Test na přihlášení nepotřebuji, všichni uživatelé webu musí být přihlášeni, ale dát ho tam mohu.
Kvůli podmínkám jsem tam musel přidat čtení z databáze, tak to teď vypadá takto:
Code:
<?php
define( '_JEXEC', 1 );
if (stristr( $_SERVER['SERVER_SOFTWARE'], 'win32' )) {
define( 'JPATH_BASE', realpath(dirname(__FILE__).'\..\..\..' ));
} else define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
$app =& JFactory::getApplication('site');
$app->initialise();
jimport( 'joomla.user.user' );
jimport( 'joomla.user.helper' );
$real_lat = $app->input->get('lat',0);
$real_lgt = $app->input->get('lgt',0);
$user = intval(JFactory::getUser()->id);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$conditions = array($db->quoteName('user_id') . ' = '.$user);
$query->select(array('field_50','membership_sold_id'))
->from($db->quoteName('#__lovefactory_profiles'))
->where($conditions);
$db->setQuery($query);
$row = $db->loadRow();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$conditions = array($db->quoteName('user_id') . ' = '.$user);
$query->select(array('membership_id'))
->from($db->quoteName('#__lovefactory_memberships_sold'))
->where($conditions);
$db->setQuery($query);
$row1 = $db->loadRow();
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
if (!($row[0]==0 and $row1[0]==2)){
$fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt));}
else {
$fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt),$db->quoteName('field_43_lat') . ' = ' . $db->quote($real_lat), $db->quoteName('field_43_lng') . ' = ' . $db->quote($real_lgt));
}
$conditions = array($db->quoteName('user_id') . ' = '.$user);
$conditions = array($db->quoteName('user_id') . ' = '.$user);
$query->update($db->quoteName('#__lovefactory_profiles'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->query();
?>
Jak moc zatěžují ty dotazy na databázi server? Musel jsem je i jinde párkrát přidat.
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
25. zář 2015 17:37 #123592
od Cony
Odpověď od Cony v tématu předání dat z javascript do PHP
ad 1/ Pravda getInt ne, ale můžete použít getFloat - oproti get si zajistíte, že vrácená hodnota bude opravdu float
ad 2/ Já ale nepsal odstranit $, ale &
Podle toho jak jsou napsané, jak je udělaná databáze, jestli používají indexy apod. Pokud by se měli dotazy opakovat, můžete si dotaz zavolat jen jednou a pak si výsledek někde pamatovat...
ad 2/ Já ale nepsal odstranit $, ale &
ernst napsal: Jak moc zatěžují ty dotazy na databázi server? Musel jsem je i jinde párkrát přidat.
Podle toho jak jsou napsané, jak je udělaná databáze, jestli používají indexy apod. Pokud by se měli dotazy opakovat, můžete si dotaz zavolat jen jednou a pak si výsledek někde pamatovat...
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
25. zář 2015 22:47 #123605
od Ernst
Odpověď od Ernst v tématu předání dat z javascript do PHP
ad 2 přehlédl jsem se , omlouvám se.
dotazy jsou všechny psané jako ty dva v lokace.php
a teď můj oblíbený dotaz, jak pamatovat? volám je v různých php a různých třídách. Tak asi objekty použít nemůžu, snad nějaké parent, ale ty ještě neumím.
Jak je udělána databáze na hostingu netuším. je to mysqli
dotazy jsou všechny psané jako ty dva v lokace.php
a teď můj oblíbený dotaz, jak pamatovat? volám je v různých php a různých třídách. Tak asi objekty použít nemůžu, snad nějaké parent, ale ty ještě neumím.
Jak je udělána databáze na hostingu netuším. je to mysqli
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
26. zář 2015 00:00 #123607
od Cony
Odpověď od Cony v tématu předání dat z javascript do PHP
mysqli neni databáze ale způsob připojení k databázi MySQL.
Jak je udělaná - tím nemyslím jak funguje MySQL, ale jak si to rozšíření (popř. Vy) vytváří tabulky, jaké mají indexy, jaká data apod.
A kde data ukládat? Nevím tedy přesně co ta pole mají za význam, ae nestačilo by Vám je přečíst jen jednou v rámci Session? a pak si je udržovat v session proměnné?
Jak je udělaná - tím nemyslím jak funguje MySQL, ale jak si to rozšíření (popř. Vy) vytváří tabulky, jaké mají indexy, jaká data apod.
A kde data ukládat? Nevím tedy přesně co ta pole mají za význam, ae nestačilo by Vám je přečíst jen jednou v rámci Session? a pak si je udržovat v session proměnné?
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
26. zář 2015 12:32 #123609
od Ernst
Odpověď od Ernst v tématu předání dat z javascript do PHP
Děkuji, zamyslím se nad tím . Session je vlastně platná po celou relaci?
Ale mám jeden problém, na který nemohu přijít.
Potřebuji do numerického políčka v databázi nastavit NULL
Když to udělám takhle:
Nastaví se mi tam nula
Ale mám jeden problém, na který nemohu přijít.
Potřebuji do numerického políčka v databázi nastavit NULL
Když to udělám takhle:
Code:
If($row[4]==1) {
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$fields = array($db->quoteName('field_43_lat') . ' = ' . $db->quote(""), $db->quoteName('field_43_lng') . ' = ' . $db->quote(""),);
$conditions = array($db->quoteName('user_id') . ' = '.$user);
$query->update($db->quoteName('#__lovefactory_profiles'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->query();
}
Nastaví se mi tam nula
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
26. zář 2015 14:24 #123611
od Cony
Odpověď od Cony v tématu předání dat z javascript do PHP
Session = Relace
$db->quote("") - posíláte prázdný řetězec, to není null, pošlete opravdu null.
$db->quote("") - posíláte prázdný řetězec, to není null, pošlete opravdu null.
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
26. zář 2015 17:04 #123613
od Ernst
Odpověď od Ernst v tématu předání dat z javascript do PHP
to jsem všechno zkoušel, dokonce jsem tam poslal proměnnou s hodnotou NULL, ale v databázi je 0
Ta pole jsou decimal(15,12)
Ta pole jsou decimal(15,12)
Vygenerováno za 0.123 sekund