Diskuze: předávání proměnných mezi soubory
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 22 zpráv z 22.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
pokud to sou soubory v jednom requestu
například soubor1.php:
$cisloPrvni = Rand(1,2);
include("soubor2.php");
tak v soubor2 by s proměnnou $cisloPrvni mělo jít pracovat. Pokud je to mezi více requesty, tak na začátek každého dokumentu kde chceš s proměnnou pracovat dáš
session_start();
a pak máš k dispozici super globální pole $_SESSION, kam si můžeš hodnoty odkládat.
Zdravím,
můžeš to číslo přenést přes parametr v URL (např. soubor.php?cislo=$cisloPrvni).
Nebo přes sessions:
// soubor 1
session_start();
$_SESSION["cislo"] = $cisloPrvni;
// soubor 2
session_start();
echo $_SESSION["cislo"];
To Pavelco: A v tom souboru 2, mohu nějakým způsobem dostat tu super globální proměnnou cislo do normální proměnné řekněme zase $cisloPrvni?
To Misaz: A to musím includovat u každé proměnné zvlášť? Nejde třeba takto sdílet všechny proměnné v tom daném souboru?
Děkuji
Proměnných si uděláš kolik potřebuješ a když pak "naincluduješ" ten jiný soubor, měl by umět s všemi dříve (resp. výše) uvedenými proměnnými pracovat.
Tak v tom případě nechápu, jak je možné, že když mám tyto dva zdrojáky:
index.php(1.soubor)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Jerabina's web</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<?php
$rozhodnuti = Rand(1,2);
include("kontrola.php");
?>
<a href="http://nasobenideleni.maweb.eu/kontrola.php">kontrola</a>
</body>
</html>
kontrola.php(2.soubor)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Jerabina's web</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<?php
echo($rozhodnuti);
?>
</body>
</html>
Tak mi to na stránce s indexem vypíše právě ty čísla 1-2 a když jdu na tu stránku kontrola.php tak mi to neukáže nic ...
klikni v prohlížeči pravým tlačítkem ->zobrazit zdrojový kód. Podle mě to tam bude, jen jak tam máš 2× DOCTYPE, 2× celou definici, tak je z toho browser zmatený a neukáže vůbec nic.
Když zobrazím zdroják, tak to vypadá v tom druhém souboru takto:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Jerabina's web</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<div ><div class="zoznam">Vyzkoušejte nový webhosting <a href="http://b.cz/">b.cz</a>. Nejkratší doména 2. řádu na českém trhu.</div></div></body>
</html>
A v prvním:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Jerabina's web</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Jerabina's web</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
1
<div ><div class="dulezite">Vyzkoušejte nový webhosting <a href="http://b.cz/">b.cz</a>. Nejkratší doména 2. řádu na českém trhu.</div></div></body>
</html>
<a href="http://nasobenideleni.maweb.eu/kontrola.php">kontrola</a>
</body>
</html>
Takže nevím co s tím je, nevíš jak to opravit?
Protože do toho souboru kontrola.php tím tvým kódem nic nepředáváš a
při kliknutí na odkaz se ty proměnné ztratí.
když chceš jít na stránku tímto odkazem
<a href="http://nasobenideleni.maweb.eu/kontrola.php">kontrola</a>
tak musíš použít session, jinak bys tu proměnnou musel dát do odkazu
<a href="http://nasobenideleni.maweb.eu/kontrola.php?tvojepromenna=$rozhodnuti">kontrola</a>
a v souboru kontrola.php to zobrazit
echo ($tvojepromenna);
a používej "tlačítko" odpovědět...
Když použiješ "include", tak ty dva soubory máš v podstatě zobrazené v jedné stránce najednou, proto ten includovaný soubor "zná" ty proměnné, které jsou definované před includováním. Pokud chceš, aby o těch proměnných věděl soubor i po kliknutí a "přesměrování" odkazem, musíš mu je nějak "poslat"
Děkuji za osvětlení.
Budu to tedy dělat přes sessions, ale mám tento dotaz:
Mohu nějakým způsobem dostat tu super globální proměnnou cislo do
normální proměnné řekněme zase $cisloPrvni?
Asi nějak dost dobře nechápu "super globální proměnná"...
Do proměnné si můžeš dosadit co potřebuješ...
$promenna1 = $promenna2;
uložíš to do session z proměnné cisloPrvni
$_SESSION["c1"] = $cisloPrvni;
a zpět to dostaneš jednoduše
$cisloPrvni = $_SESSION["c1"];
žádná věda
Tak já už nevim, když mám ty kódy takto:
index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Jerabina's web</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<?php
$rozhodnuti = Rand(1,2);
session_start();
$_SESSION["r"] = $rozhodnuti;
?>
<a href="http://nasobenideleni.maweb.eu/kontrola.php">kontrola</a>
</body>
</html>
kontrola.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Jerabina's web</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<?php
$rozhodnuti = $_SESSION["r"];
echo($rozhodnuti);
?>
</body>
</html>
A když v indexu kliknu na odkaz tak mi to nic neukáže .. :/
Musíš sessions zapnout pomocí funkce session_start() i v tom druhém souboru;
<?php
session_start();
?>
<!DOCTYPE html>
...
<body>
<?php
// zde už můžeš použít proměnnou $_SESSION
?>
session_start musíš napsat na začátek dokumentu ještě před doctype.
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Jerabina's web</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<?php
$rozhodnuti = Rand(1,2);
$_SESSION["r"] = $rozhodnuti;
?>
<a href="http://nasobenideleni.maweb.eu/kontrola.php">kontrola</a>
</body>
</html>
a možná by neuškodilo, kdyby sis přečetl tutoriál, tipuji že SESSION tam určitě bude vysvětlený.
Tak jsem to nějak sesmolil takto:
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cs-cz">
<head>
<title>Opakování násobení a dělení</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
<link rel="shortcut icon" href="favicon.bmp">
</head>
<body>
<p>Vypočítej</p>
<?php
for ($i=0; $i < 10; $i++)
{
$rozhodnuti = Rand(1,2);
if($i == 0)
if($rozhodnuti == 1)
$cisloPrvni1 = Rand(1,5);
$cisloDruhe1 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni1 = Rand(5,10);
$cisloDruhe1 = Rand(1,5);
if($i == 1)
if($rozhodnuti == 1)
$cisloPrvni2 = Rand(1,5);
$cisloDruhe2 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni2 = Rand(5,10);
$cisloDruhe2 = Rand(1,5);
if($i == 2)
if($rozhodnuti == 1)
$cisloPrvni3 = Rand(1,5);
$cisloDruhe3 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni3 = Rand(5,10);
$cisloDruhe3 = Rand(1,5);
if($i == 3)
if($rozhodnuti == 1)
$cisloPrvni4 = Rand(1,5);
$cisloDruhe4 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni4 = Rand(5,10);
$cisloDruhe4 = Rand(1,5);
if($i == 4)
if($rozhodnuti == 1)
$cisloPrvni5 = Rand(1,5);
$cisloDruhe5 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni5 = Rand(5,10);
$cisloDruhe5 = Rand(1,5);
if($i == 5)
if($rozhodnuti == 1)
$cisloPrvni6 = Rand(1,5);
$cisloDruhe6 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni6 = Rand(5,10);
$cisloDruhe6 = Rand(1,5);
if($i == 6)
if($rozhodnuti == 1)
$cisloPrvni7 = Rand(1,5);
$cisloDruhe7 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni7 = Rand(5,10);
$cisloDruhe7 = Rand(1,5);
if($i == 7)
if($rozhodnuti == 1)
$cisloPrvni8 = Rand(1,5);
$cisloDruhe8 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni8 = Rand(5,10);
$cisloDruhe8 = Rand(1,5);
if($i == 8)
if($rozhodnuti == 1)
$cisloPrvni9 = Rand(1,5);
$cisloDruhe9 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni9 = Rand(5,10);
$cisloDruhe9 = Rand(1,5);
if($i == 9)
if($rozhodnuti == 1)
$cisloPrvni10 = Rand(1,5);
$cisloDruhe10 = Rand(5,10);
if($rozhodnuti == 2)
$cisloPrvni10 = Rand(5,10);
$cisloDruhe10 = Rand(1,5);
}
echo($cisloPrvni1 . " x " . $cisloDruhe1 . " = " . '<input name="vysledek1" type="text"/>');
echo('<br />');
echo($cisloPrvni2 . " x " . $cisloDruhe2 . " = " . '<input name="vysledek2" type="text"/>');
echo('<br />');
echo($cisloPrvni3 . " x " . $cisloDruhe3 . " = " . '<input name="vysledek3" type="text"/>');
echo('<br />');
echo($cisloPrvni4 . " x " . $cisloDruhe4 . " = " . '<input name="vysledek4" type="text"/>');
echo('<br />');
echo($cisloPrvni5 . " x " . $cisloDruhe5 . " = " . '<input name="vysledek5" type="text"/>');
echo('<br />');
echo($cisloPrvni6 . " x " . $cisloDruhe6 . " = " . '<input name="vysledek6" type="text"/>');
echo('<br />');
echo($cisloPrvni7 . " x " . $cisloDruhe7 . " = " . '<input name="vysledek7" type="text"/>');
echo('<br />');
echo($cisloPrvni8 . " x " . $cisloDruhe8 . " = " . '<input name="vysledek8" type="text"/>');
echo('<br />');
echo($cisloPrvni9 . " x " . $cisloDruhe9 . " = " . '<input name="vysledek9" type="text"/>');
echo('<br />');
echo($cisloPrvni10 . " x " . $cisloDruhe10 . " = " . '<input name="vysledek10" type="text"/>');
?>
<div class="reklama_endora"><endora></div>
</body>
</html>
Zde je odkaz na web: http://nasobenideleni.maweb.eu/
Jenže mám problém, nevím proč, ale nad číslo 5 se to generuje vždycky
jenom na levé straně a na pravé nikdy .. při tom by se to mělo řídit
podle další náhodně vygenerované proměnné.
PS: tich formulářů si nejvšímejte, zatím to nechci nikam odesílat, až
budu, tak to přepracuji.
jo, vrať se k těm tutoriálům. Začni od začátku přes pole, cykly a třeba se dostaneš i k předávání proměnných mezi soubory dopodrobna.
S předáváním nemám problém(to jsem pochopil), já mám problém s tím,
že se mi generují čísla nad 5 pouze na levé straně
Zkus to udělat přes pole, takhle se v tom prakticky nedá vyznat. Pak to sem pošli a uvidíme, co je tam za problém.
Zobrazeno 22 zpráv z 22.