Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jak předat/vypsat PHP proměnnou do JS (+html)?

Zdarec. Mám proměnnou $allergens1, která je polem. A chci tuto proměnnou zapsat do JS (s JS jsem nikdy nedělal, takže nevim...).
Jak si představuji, že by to mělo vypadat v PHP (funguje):

						echo "Alergeny jsou:<br>";
						for ($i=0; $i <= count($allergens1[$i]); $i++) { 
							echo $allergens1[$i]."<br>";
						}

potom mám JS script, do kterého to chci vložit. Je to pop up okno.

						echo "
							<script type=\"text/javascript\">
								window.onload = function () {
									alert(\"dopsat sem proměnnou z php\");
								}
							</script>
						";

Jak to mám udělat?
proměnná by měla vypadat třeba takto, myslím, ale jak ji tam vložit, aby to fungovalo?

var vypis = <?php 						echo "Alergeny jsou:<br>";
						for ($i=0; $i <= count($allergens1[$i]); $i++) { 
							echo $allergens1[$i]."<br>";
						} ?>
Předmět Autor Datum
alert(vypis);
Wikan 09.07.2015 18:24
Wikan
kdyby to bylo tak jednoduché, tak sem nepíšu. Vypadá to takto, kde mám chybu? Podle mě to je u toho…
Vilak 09.07.2015 18:48
Vilak
Obsah proměnné výpis musí být uzavřený v uvozovkách.
Wikan 09.07.2015 18:53
Wikan
Jak to má vypadat? Zkoušel jsem to různě, ale nevím. Navíc nevím, jak se mám zachovat k tomu druhému…
Vilak 09.07.2015 19:03
Vilak
var vypis ="<?php for ($i=0; $i <= count($allergens1); $i++) { echo $allergens1[$i].\"<br>\"; } ?>";…
Wikan 09.07.2015 19:07
Wikan
No tohle je takový galyatymáš, ve kterym se možná vyzná autor tak 2 dny potom, co to napíše. Ani IDE…
Pan Töfl 09.07.2015 19:21
Pan Töfl
Ten Script nefunguje. Tedy sám o sobě funguje, ale nezobrazuje html (takže se zobrazí <br>) a pokud…
Vilak 09.07.2015 19:28
Vilak
No v alertu opravdu HTML použít nemůžeš. Pokud tam chceš odřádkovat, tak místo <br> použij \n.
Wikan 09.07.2015 19:52
Wikan
Díky, stále tu mám ale tento script, který prostě nefunguje, proč? Tento script je daný v php v podm…
Vilak 09.07.2015 20:32
Vilak
Co přesně to teda vypíše do kódu stránky?
Wikan 09.07.2015 23:07
Wikan
To už nevím, napsal jsme kamarádovi, který mi pomohl se správným řešením, tady je (pro budoucí návšt… poslední
Vilak 10.07.2015 00:00
Vilak

kdyby to bylo tak jednoduché, tak sem nepíšu.
Vypadá to takto, kde mám chybu? Podle mě to je u toho [$i], protože tuto závorku "]" mi to ukazuje červeně a nevím proč.
Btw. nemůže to být taky tím, že mám echo v echu?

						echo "
							<script type=\"text/javascript\">
								window.onload = function () {
									var vypis = <?php for ($i=0; $i <= count($allergens1); $i++) { 
										echo $allergens1[$i].\"<br>\";
									} ?>
									alert(vypis);
								}
							</script>
						";

Jak to má vypadat? Zkoušel jsem to různě, ale nevím. Navíc nevím, jak se mám zachovat k tomu druhému echu (jestli tam vůbec má byt? o.O )
Nefunguje mi to nijak, skončil jsem u toho (a to jsem vyškrkl z tama echo a <br>):

						echo '
							<script type=\"text/javascript\">
								window.onload = function () {
									var vypis = <?php for ($i=0; $i <= count($allergens1); $i++) { 
										"$allergens1[$i]";
									} ?>
									alert(vypis);
								}
							</script>
						';

Mohl bych poprosit o správné řešení, jak to má vypadat? Za $allergens1[$i] má byt ještě <br> (viz výše).

Ten Script nefunguje. Tedy sám o sobě funguje, ale nezobrazuje html (takže se zobrazí <br>) a pokud je v tom echu, tak se neukáže vůbec (pokud ho dám do samotné stránky, tak jde). Navíc jak jsem zjistil, ten script JS nepodporuje html, jakto? Základ:

						<script type="text/javascript">
								window.onload = function () {
									alert("tady<br> nefunguje<br> html");
								}
						</script>

Tak jinak.
Mám nějakou php podmínku (if) a pokud platí, tak do ní potřebuji přidat vyskakovací okno, ve kterém proběhne tento cyklus:

						for ($i=0; $i <= count($allergens1); $i++) { 
							echo $allergens1[$i]."<br>";
						}

Jak to tedy udělat?

Díky, stále tu mám ale tento script, který prostě nefunguje, proč?
Tento script je daný v php v podmínce if a v echu (echo už jde vidět):

						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>
						';

Celý code (podmínka) vypadá takto. Mám tam taky klasické výpisy na stránku, díky kterým jsem si ověřoval správnost polí.

					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>
						';
					}

To už nevím, napsal jsme kamarádovi, který mi pomohl se správným řešením, tady je (pro budoucí návštěvníky):

					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>
						';
					}

Zpět do poradny Odpovědět na původní otázku Nahoru