Autor | Zpráva | ||
---|---|---|---|
Vilak Profil |
#1 · Zasláno: 9. 7. 2015, 22:54:16
Zdravím. Mám nějaký php script a v něm podmínku, v ní echo a v echu mám JS script, který by měl vytvořit vyskakovací okno. Ovšem to nefunguje. Poradí mi někdo, proč? Teď se mi neukazuje ani okno samotné (jakoby tam daný JS nebyl).
Jde mi o to, aby se mi do vyskakovacího okna vypsalo toto: for ($i=0; $i <= count($allergens1); $i++) { echo $allergens1[$i]."<br>"; } echo ' <script type="text/javascript"> window.onload = function () { var vypis ="<?php for ($i=0; $i <= count($allergens1); $i++) { echo $allergens1[$i]\n; } ?>"; alert(vypis); } </script> '; if (isset($_POST['go_allergens'])) { $allergen = $_POST['allergens']; $id = $_POST['id']; $allergens = explode(",", $allergen); $allergens1 = array(); for ($i=0; $i < count($allergens); $i++) { echo "alergeny jsou:".$allergens[$i]."<br>"; $number = $allergens[$i]; $dotaz = mysql_query("SELECT `allergen` FROM `allergens` WHERE `number` = '$number'"); while ($vypis = mysql_fetch_assoc($dotaz)) { $allergens1[] = $vypis['allergen']; } } echo "Alergeny jsou:<br>"; for ($i=0; $i <= count($allergens1); $i++) { echo $allergens1[$i]."<br>"; } print_r($allergens1); echo ' <script type="text/javascript"> window.onload = function () { var vypis ="<?php for ($i=0; $i <= count($allergens1); $i++) { echo $allergens1[$i]\n; } ?>"; alert(vypis); } </script> '; } Jen chci poprosit, jestli byste to mohli (ohledně JS) vysvětlit trochu polopaticky, protože s ním pracuji poprvé. Děkuji. |
||
xROAL Profil |
<?php v tom echu nemá čo hľadať, veď predsa už si v PHP, načo ho otvárať znovu? Skús to takto:
<?php $allergensString = ''; for($i = 0, $c = count($allergens1); $i < $c; $i++){ $allergensString .= $allergens1[$i].PHP_EOL; // kvôli prehľadnosti zostavíme najskôr výsledný text } echo ' <script type="text/javascript"> window.onload = function(){ vypis = "'.$allergensString.'"; // teraz už je to jednoduché alert(vypis); } </script> '; |
||
Vilak Profil |
#3 · Zasláno: 9. 7. 2015, 23:23:12
Nefunguje mi to. Nevím proč. Vyskakovací okno se ani neobjeví.
Script nyní vypadá takto: if (isset($_POST['go_allergens'])) { $allergen = $_POST['allergens']; $id = $_POST['id']; $allergens = explode(",", $allergen); $allergens1 = array(); for ($i=0; $i < count($allergens); $i++) { echo "alergeny jsou:".$allergens[$i]."<br>"; $number = $allergens[$i]; $dotaz = mysql_query("SELECT `allergen` FROM `allergens` WHERE `number` = '$number'"); while ($vypis = mysql_fetch_assoc($dotaz)) { $allergens1[] = $vypis['allergen']; } } echo "Alergeny jsou:<br>"; for ($i=0; $i <= count($allergens1); $i++) { echo $allergens1[$i]."<br>"; } print_r($allergens1); $allergensString = ''; for($i = 0, $c = count($allergens1); $i < $c; $i++){ $allergensString .= $allergens1[$i].PHP_EOL; // kvôli prehľadnosti zostavíme najskôr výsledný text } echo ' <script type="text/javascript"> window.onload = function(){ vypis = "'.$allergensString.'"; // teraz už je to jednoduché alert(vypis); } </script> '; } |
||
juriad Profil |
xROAL:
Hodnoty je nutné přenášet do JS vždy po prohnání funkcí json_encode. Kód lze dále zjednodušit. <?php $allergensString = implode("\n", $allergens1); echo ' <script type="text/javascript"> window.onload = function(){ var vypis = ' . json_encode($allergensString) . '; alert(vypis); } </script> '; Vilak: Pokud bys v JS chtěl pole místo řetězce, stačí místo $alergens1 na 6. řádku použít $alergens1 . Funkce json_encode se postará o správný JavaScriptový formát pole.
Další zlepšení je použít jediný dotaz do databáze s podmínkou `number` IN (1, 4, 10, 3) . Vyžaduje to trochu práce.
Dále pak vždy v JS deklaruj proměnné pomocí var . Předejdeš dost ošklivým chybám.
K chybě: Co vše to zobrazí? Jak vypadá zdrojový kód stránky v prohlížeči (Ctrl+U)? Fixnut překlep ↓ |
||
Vilak Profil |
Super! Funguje! Díky juriad!
Ovšem bojoval jsem s tím a až po chvíli jsem si všiml, že místo dvou l tam je jen jedno... (u allergens1) - takže to dyštak oprav, pro budoucí návštěvníky. dávám zde celý FUNKČNÍ script (vypsání informací z databáze do vyskakovacího okna): if (isset($_POST['go_allergens'])) { $allergen = $_POST['allergens']; $id = $_POST['id']; $allergens = explode(",", $allergen); $allergens1 = array(); for ($i=0; $i < count($allergens); $i++) { echo "alergeny jsou:".$allergens[$i]."<br>"; $number = $allergens[$i]; $dotaz = mysql_query("SELECT `allergen` FROM `allergens` WHERE `number` = '$number'"); while ($vypis = mysql_fetch_assoc($dotaz)) { $allergens1[] = $vypis['allergen']; } } echo "Alergeny jsou:<br>"; for ($i=0; $i <= count($allergens1); $i++) { echo $allergens1[$i]."<br>"; } print_r($allergens1); $allergensString = implode("\n", $allergens1); echo ' <script type="text/javascript"> window.onload = function(){ var vypis = ' . json_encode($allergensString) . '; alert(vypis); } </script> '; } |
||
Časová prodleva: 10 let
|
0