Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP externé súbory

Dobré ráno, skúšam programovať svoj web cez php. Ako mám spraviť to, že keď napríklad mám na stránka1.php napísanú premennú $text = "Ahoj"; tak ako urobím, že na stránka2.php napíšem ten názov konkrétnej premennej a vypíše sa jeho obsah?

Skúsil som:

(stranka1.php)

<?php
$text = "test";
?>

(stranka2.php)

<?php
require_once('stranka1.php');
echo $text;
?>

Chyba je v tom, že keď otvorím stránku 2, tak sa celá stránka 1 len "duplikuje" (zdvojí?) ale nevypíše mi to to, čo chcem konkrétne aby to vypísalo.

Předmět Autor Datum
Takto ako to je, to musí fungovať. Vypíše ti "test". nový
pozorovateľ 18.11.2018 09:27
pozorovateľ
Dobre, tak inak. Pôvodne som sa chcel tejto "dlhšej" verzie vysvetlenia vyhnúť, ale očividne sa už n… nový
AD4M 18.11.2018 15:24
AD4M
To si to budeš muset nejdřív někam uložit (třeba do databáze) a na druhé stránce si to z ní zase pře… nový
Wikan 18.11.2018 15:42
Wikan
Urobím to na registráciu a prihlásenie. Ešte čo sa týka tej databáze.. mohol by si mi to prosím viac… nový
AD4M 18.11.2018 15:52
AD4M
Obsah databáze závisí na celkových požadavcích. Zatím víme jenom o jménu admina pro předání mezi dvě… nový
Wikan 18.11.2018 15:56
Wikan
Jasné, chapem. A nie je nejaký jednoduchší spôsob ako urobiť čítanie z iného php súboru? Alebo sa to… nový
AD4M 18.11.2018 16:03
AD4M
Nějak se ta druhá stránka musí dozvědět, co jsi udělal na té první. Takže někde si to budeš muset ul… nový
Wikan 18.11.2018 16:47
Wikan
Dobre, vďaka. Ešte ďalšia vec: Držal som sa podľa tohotonávodu, keď vytvorím čistú stránku napríkl… nový
AD4M 18.11.2018 18:54
AD4M
Ten zápis do databáze se děje jenom při POSTu, ale na tu stránku nejspíš vždycky jdeš GETem. nový
Wikan 18.11.2018 19:03
Wikan
Nechápem, kde je teda chyba? Ako to mám opraviť? Prípadne môžeš prosím zobrať môj kód, a upraviť ho… nový
AD4M 18.11.2018 19:20
AD4M
Však jsem ti napsal, kde je chyba. Netuším, co je správná podoba, protože nevím, co to přesně má děl… nový
Wikan 18.11.2018 19:33
Wikan
Tak teda takto: Chcem, aby tá stránka po odoslaní toho formulára odoslala tie údaje, ktoré sú zapís… nový
AD4M 18.11.2018 19:49
AD4M
Když zadáš adresu stránky v prohlížeči, nebo klikneš na link, provede se GET dotaz. Jeho výsledkem b… nový
Wikan 18.11.2018 19:52
Wikan
Promiň, ale neumíš ani absolutní základy a už programuješ práci s databází. Z toho vznikne akorát po… nový
host 18.11.2018 19:53
host
Takže som to urobil následne: vytvoril som si ďalší .php odoslidata.php. Vo <form action=""> som na… nový
AD4M 18.11.2018 20:25
AD4M
No pak je tu ještě problém, že ten INSERT je špatně napsaný. Nesouhlasí ti počet parametrů. nový
Wikan 18.11.2018 20:40
Wikan
Ach bože... ja som fakt magor... problém bol v takejto prkotine, kvoli ktorej som sa tu trápil 5 hod… poslední
AD4M 18.11.2018 21:01
AD4M

Dobre, tak inak. Pôvodne som sa chcel tejto "dlhšej" verzie vysvetlenia vyhnúť, ale očividne sa už nevyhnem.

stránka 1 obsahuje následujúci kód:

<html>
<head>
<!-- Hlavné kódy -->
<link href="styles/styly.css" rel="stylesheet" type="text/css"/>
<title>&copy; Congral 2018 &copy;</title>
<!-- JavaScritps --> 
</head>

	<body>
	<style>
	.cervena {color: red}
	.modra {color: blue}
	.biela {color: white}
	.cierna {color: black}
	</style>

		<div id="hlavicka">
			<span class="biela"><br><h2><b>Inštalácia administrácie Congral</b></h2></span>
		</div>
		
		<div id="kroky">
			<b><p class="cierna">Krok 1</p><br><br>
			
			<p class="cierna">Krok 2</p><br><br>
			
			<p class="cierna">Krok 3</p></b>			
		</div>	
		
		<div id="hlavne-okno">
			<b><center>Nastavenie Administrácie - Základné nastavenia - Krok 1</center></b><br><br>
			
			<form action="install.php" method="post">
				<center>Názov administrácie:<br>
				<input type="text" name="menoadminky"><br><br>
				
				Kontakt na vás: (e-mail, skype atď...)<br>
				<input type="text" name="kontakt"><br><br>
				
				<input type="submit" value="Hotovo!"></center>
			</form>	

			<?php
				if ($_POST)
				{
					$meno_adminky = $_POST['menoadminky'];
					$kontakt = $_POST['kontakt'];
					
					echo "Hotovo, môžeš prejsť na ďalší krok!<br><br>";
					
					echo "Zvolené údaje:<br>";
					echo "Názov Administrácie: " . $meno_adminky . "<br>";
					echo "Kontakt na vás: " . $kontakt;
					echo "<br><br>";
					echo "<a href=\"install2.php\"><b>Krok 2</b></a>";
				}
			?>
			
		</div>
		
		<div id="paticka">
			<p class="biela">&copy; Copyright by AD4M | Admin Panel Congral 2018</p>
		</div>
	
	</body>	
	
</html>

druhá stránka obsahuje následujúci kód:

<html>
<head>
<!-- Hlavné kódy -->
<link href="styles/styly.css" rel="stylesheet" type="text/css"/>
<title>&copy; Congral 2018 &copy;</title>
<!-- JavaScritps --> 
</head>

	<body>
	<style>
	.cervena {color: red}
	.modra {color: blue}
	.biela {color: white}
	.cierna {color: black}
	</style>

		<div id="hlavicka">
			<span class="biela"><br><h2><b>Inštalácia administrácie Congral</b></h2></span>
		</div>
		
		<div id="kroky">
			<b><p class="cierna">Krok 1</p><br><br>
			
			<p class="cierna">Krok 2</p><br><br>
			
			<p class="cierna">Krok 3</p></b>			
		</div>	
		
		<div id="hlavne-okno">
			<?php
			require_once('install.php');
				echo $meno_adminky;
			?>
		</div>
		
		<div id="paticka">
			<p class="biela">&copy; Copyright by AD4M | Admin Panel Congral 2018</p>
		</div>
	
	</body>	
	
</html>

Keď zadám rôzne údaje do prvej stránky, a následne kliknem na ďalší krok, tak na miesto toho, aby sa mi vypísala čisto hodnota $meno_adminky, sa mi následne stane zo stránky toto:
https://ctrlv.cz/Rps3

To si to budeš muset nejdřív někam uložit (třeba do databáze) a na druhé stránce si to z ní zase přečíst. Taky si budeš muset uložit do cookie nějaký identifikátor návštěvníka, abys vůbec poznal, kdo ti na tu druhou stránku přišel. Nebo tam máš přihlášení?

Urobím to na registráciu a prihlásenie. Ešte čo sa týka tej databáze.. mohol by si mi to prosím viac objasniť? Resp. aké tabulky mám vytvoriť, koľko riadkové atď... samotné pripojenie do databáze nemusíš písať, pripojiť sa do databáze pomocou php viem.

Dobre, vďaka.

Ešte ďalšia vec:

Držal som sa podľa tohotonávodu, keď vytvorím čistú stránku napríklad web.php, a vložím tam čisto len formulár + php kód na zápis do databáze, tak všetko funguje ako má, ale ako náhle vložím formulár s php kódom do svojej stránky, kde mám div-y, odkazy, javascripty atď... tak sa mi nič nezapíše do databáze. Chybu to taktiež nenapíše, jediné čo sa potom na stránke zmení je to, že zmizne päta stránky. (päta - časť, kde je umiestnený copyright) neviete čo s tím? Prikladám celý kód svojej stránky:

<html>
<head>
<!-- Hlavné kódy -->
<link href="styles/styly.css" rel="stylesheet" type="text/css"/>
<title>&copy; Congral 2018 &copy;</title>
<!-- JavaScritps --> 
</head>

	<body>
	<style>
	.cervena {color: red}
	.modra {color: blue}
	.biela {color: white}
	.cierna {color: black}
	</style>

		<div id="hlavicka">
			<span class="biela"><br><h2><b>Inštalácia administrácie Congral</b></h2></span>
		</div>
		
		<div id="kroky">
			<b><p class="cierna">Krok 1</p><br><br>
			
			<p class="cierna">Krok 2</p><br><br>
			
			<p class="cierna">Krok 3</p></b>			
		</div>	
		
		<div id="hlavne-okno">
			<center><b>Vytvorenie prvého Admin účtu - Krok 2</b></center><br><br>
			
			<form action="install2.php" method="post">
				<center>Prezývka:<br>
				<input type="text" name="prezyvka"><br><br>
				
				heslo:<br>
				<input type="password" name="pass"><br><br>
				
				<input type="submit" value="Vytvoriť"></center>
			</form>
		</div>
                <?php

                require_once('Db.php');
                Db::connect('localhost', 'databaza', 'root', '<heslo vedieť nemusíte :-)>');
                if ($_POST)
                {
                        Db::query('
                                INSERT INTO users (prezyvka, pass)
                                VALUES (?, ?, ?)
                        ', $_POST['prezyvka'], $_POST['pass']);

                        echo('<p>Byl jste úspěšně zaregistrován.</p>');
                }
                ?>		
		
		<div id="paticka">
			<p class="biela">&copy; Copyright by AD4M | Admin Panel Congral 2018</p>
		</div>
	
	</body>	
	
</html>

A mohli by ste mi prosím poslať aj nejakú stránku, kde sa môžem naučiť php? Aby to bola stránka fakt pre začiatočníkov, nemusím hneď zo začiatku vedieť ako sa daný script zabezpečuje proti sql injection atď... to až časom. Skrátka stránka, kde je všetko hneď vysvetlené.

Nepotrebujem stránku, kde sú zbytočné dlhé texty, ako napríklad:

Nóó a dneska si povieme niečo o podmienkach, ich funkcie, čo všetko sa dá a nedá atď...

Hľadám niečo, čo je hneď k veci, príklad:

if - podmienka
else - čo sa stane, keď sa nesplní if
atď...

Snáď chápete :D.

Když zadáš adresu stránky v prohlížeči, nebo klikneš na link, provede se GET dotaz. Jeho výsledkem bude ta tvá stránka s formulářem. Uložení do databáze se provede ale pouze v případě POST dotazu, který typicky vzniká při posílání formuláře, nebo se vyvolává JavaScriptem. Ty tam formulář s POSTem máš, ale ten odkazuje na jinou stránku.
Takže pravděpodobně budeš chtít jedno z následujících řešení:
a) formulář bude posílat data na stejnou stránku a na následující pak provede přesměrování, nebo
b) uložení databáze provede ta následující stránka

Promiň, ale neumíš ani absolutní základy a už programuješ práci s databází. Z toho vznikne akorát polofunkční paskvil.

phpMyAdmin není žádná databáze, to je jenom rozhraní pro práci s databází. Databázi máš pravděpodobně MySQL.

Obecně: hodnoty z inputů předáš pomocí metody $_POST skriptu, který je zpracuje (ošetří vstupy atd.) a pomoci UPDATE nebo SET zapíše do databáze.

Takže som to urobil následne:

vytvoril som si ďalší .php odoslidata.php. Vo <form action=""> som na miesto install2.php dal odoslidata.php. Po kliknutí na tlačítko Odoslať, sa mi otvorila prázdna stránka odoslidata.php.

odoslidata.php obsahuje následujúci kód:

<?php

require_once('Db.php');
Db::connect('localhost', 'databaza', 'root', '<Nemusíte vedieť>');
if ($_POST)
{
Db::query('
INSERT INTO users (prezyvka, pass)
VALUES (?, ?, ?)
', $_POST['prezyvka'], $_POST['pass']);

echo('<p>Byl jste úspěšně zaregistrován.</p>');
}
?>

Opäť... nič sa nevytvorilo. žiadny zápis do databáze.

Viem, že teraz možno nado mnou krútite hlavou či som normálni, alebo či si tu teraz z vás robím len srandu... každopádne môj mozog nerozmýšľa 2x najlepšie, a aby niečo pochopil, musíte mi to napísať úplne do detailov.

Ach bože... ja som fakt magor... problém bol v takejto prkotine, kvoli ktorej som sa tu trápil 5 hodín!!!!!

Na miesto (?, ?, ?) malo byť len (?, ?)

A toto je u mňa normálne, vždy sa zastavím pri nejakej somarine, pri ktorej sa trápim 5 hodín, no druhý by na to prišiel za 5 minút... Ach bože... :D ďakujem všetkým za snahu mi pomôcť :).

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