Diskuze: předávání proměnných mezi soubory

PHP PHP předávání proměnných mezi soubory American English version English version

Avatar
jerabina
Člen
Avatar
jerabina:

Brý večer,
mám menší problém, potřebuji předat obsah proměnných z jednoho souboru do druhého, dočetl jsem se, že to jde pomocí sessions, ale nikde jsem nenašel správnou syntaxi.
Takovýhle proměnný potřebuju předat do toho druhého souboru.

$cisloPrvni = Rand(1,2);

Poradí prosím někdo?
Děkuju

Odpovědět 29.7.2014 21:00
Když tě všechno zradilo, pomůže ti kladivo!
Avatar
Odpovídá na jerabina
Michal Žůrek (misaz):

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.

Nahoru Odpovědět 29.7.2014 21:04
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na jerabina
Martin Konečný (pavelco1998):

Zdravím,

můžeš to číslo přenést přes parametr v URL (např. soubor.php?cis­lo=$cisloPrvni).

Nebo přes sessions:

// soubor 1
session_start();
$_SESSION["cislo"] = $cisloPrvni;

// soubor 2
session_start();
echo $_SESSION["cislo"];
 
Nahoru Odpovědět 29.7.2014 21:04
Avatar
jerabina
Člen
Avatar
jerabina:

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

Editováno 29.7.2014 21:54
Nahoru Odpovědět 29.7.2014 21:51
Když tě všechno zradilo, pomůže ti kladivo!
Avatar
Odpovídá na jerabina
Michal Štěpánek:

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.

Nahoru Odpovědět 30.7.2014 8:40
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
jerabina
Člen
Avatar
jerabina:

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 ...

Nahoru Odpovědět 30.7.2014 8:53
Když tě všechno zradilo, pomůže ti kladivo!
Avatar
Odpovídá na jerabina
Michal Žůrek (misaz):

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.

Nahoru Odpovědět 30.7.2014 9:43
Nesnáším {}, proto se jim vyhýbám.
Avatar
jerabina
Člen
Avatar
jerabina:

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?

Nahoru Odpovědět 30.7.2014 10:21
Když tě všechno zradilo, pomůže ti kladivo!
Avatar
Odpovídá na jerabina
Michal Štěpánek:

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...

Editováno 30.7.2014 11:01
Nahoru Odpovědět 30.7.2014 10:59
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na jerabina
Michal Štěpánek:

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"

Nahoru Odpovědět 30.7.2014 11:05
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
jerabina
Člen
Avatar
Odpovídá na Michal Štěpánek
jerabina:

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?

Nahoru Odpovědět 30.7.2014 12:45
Když tě všechno zradilo, pomůže ti kladivo!
Avatar
Odpovídá na jerabina
Michal Štěpánek:

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;
Editováno 30.7.2014 13:01
Nahoru Odpovědět 30.7.2014 13:00
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na jerabina
Michal Žůrek (misaz):

uložíš to do session z proměnné cisloPrvni

$_SESSION["c1"] = $cisloPrvni;

a zpět to dostaneš jednoduše

$cisloPrvni = $_SESSION["c1"];

žádná věda

Nahoru Odpovědět 30.7.2014 13:03
Nesnáším {}, proto se jim vyhýbám.
Avatar
jerabina
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
jerabina:

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 .. :/

Nahoru Odpovědět 30.7.2014 13:26
Když tě všechno zradilo, pomůže ti kladivo!
Avatar
Odpovídá na jerabina
Martin Konečný (pavelco1998):

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

?>
Editováno 30.7.2014 13:29
 
Nahoru Odpovědět 30.7.2014 13:29
Avatar
Odpovídá na jerabina
Michal Žůrek (misaz):

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>
Nahoru Odpovědět 30.7.2014 13:30
Nesnáším {}, proto se jim vyhýbám.
Avatar
Michal Žůrek (misaz):

a možná by neuškodilo, kdyby sis přečetl tutoriál, tipuji že SESSION tam určitě bude vysvětlený.

Nahoru Odpovědět  +1 30.7.2014 13:31
Nesnáším {}, proto se jim vyhýbám.
Avatar
jerabina
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
jerabina:

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.

Nahoru Odpovědět  -1 30.7.2014 17:36
Když tě všechno zradilo, pomůže ti kladivo!
Avatar
Odpovídá na jerabina
Michal Žůrek (misaz):

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.

Nahoru Odpovědět 30.7.2014 17:39
Nesnáším {}, proto se jim vyhýbám.
Avatar
jerabina
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
jerabina:

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ě :(

Editováno 30.7.2014 17:42
Nahoru Odpovědět 30.7.2014 17:41
Když tě všechno zradilo, pomůže ti kladivo!
Avatar
Odpovídá na jerabina
Martin Konečný (pavelco1998):

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.

 
Nahoru Odpovědět 30.7.2014 18:37
Avatar
jerabina
Člen
Avatar
jerabina:

A to jsem se tak snažil polím vyhnout :D
Pokusím se tedy .. ale pole nikdy nebyla má silná stránka.

Nahoru Odpovědět 30.7.2014 19:23
Když tě všechno zradilo, pomůže ti kladivo!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 22 zpráv z 22.