Dynamické stránky vs SQL vs require

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Balin.Tomas
Nováček
Nováček
Registrován: 28. kvě 2009

Dynamické stránky vs SQL vs require

Příspěvek od Balin.Tomas »

Zdravím a prosím o pomoc.Podle tohoto článku zde na webu:
http://pctforum.tyden.cz/viewtopic.php?f=53&t=140263
jsem udělal vkládání stránek.Vše je jak má.Problém je: adresa např.:index.php?strana=problem
Pokud je adtesa v databázi a soubor existuje tak bez problému, pokud ale pouze je v databázi a neexistuje soubor vyhodí to hlašku "failed to open stream: No such file or directory in" atd.

Jak a kam a jaký kod, pokud to půjde, by se měl doplnit do toho scriptu aby to i v tomto případě přesměrovalo na stranku 404.php

Mockrát děkuji za vaše rady.
Tady je ten kod:

Kód: Vybrat vše

<?
  $kod = "xxxx"; // Napíšeme bezpečnostní kód
  if(IsSet($_GET['strana'])): // Ověříme, jestlie existuje proměnná $strana
  MySQL_Connect("xxx", "xxx", "xxx"); // Připojíme se k databázi
  MySQL_Select_DB("xxx"); // Vybereme databázi
  $vysledek = MySQL_Query("SELECT url FROM strany WHERE id = '$_GET[strana]'"); // Napíšeme SQL příkaz
 
  if(MySQL_NumRows($vysledek) == 1):
  $url = MySQL_Result($vysledek, 0, "url"); // Adresu z databáze zapíšeme do proměnné $url
  else:
  $url = "404.php"; // Pokuď záznam nebyl nalezený, tak do proměnné $url vložíme jinou stránku, např. upozornění na chybu
  endif;
 
  else:
  $url = "uvod.php"; // V případě, ze neexistuje poměnná $strana, vložíme do $url hlavní stránku
  endif; // Ukončíme první podmínku

  require $url; // Vygenerujeme stránku
?>
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od arxeiss »

Jako když ta stránka v SQL je zapsaná, ty ji dáš jako require, jako že by se měla vypsat, ale neexistuje tak ti to napíše tu chybu, tak zkus pak jěště dát if(!file_exists("stranka")){ include "error404.php"; }
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od OndraSter »

Kód: Vybrat vše

 ...
 if(MySQL_NumRows($vysledek) == 1):
  $url = MySQL_Result($vysledek, 0, "url"); // Adresu z databáze zapíšeme do proměnné $url
  if (!file_exists($url)) $url = '404.php';
  else $url = $url;
  else:
 ...
(Proč tam je "else $url = $url;"? Protože tam jsou použity to totálně dementní ": else: endif;" otevírací a zavírací, mohlo by se to pak splést a vyelsovat se to dřív, což by zavinilo chybu skriptu.)
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
snouman.net
Nováček
Nováček
Uživatelský avatar
Registrován: 28. kvě 2009
Bydliště: $> cd /pub | more beer
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od snouman.net »

Dobrá prasečinka... :-D
[server #1] merlin - PIII@2x1133MHz, 4x256MB, 2xSCSI RAID1 33GB, 40GB IDE > Ubuntu 8.10 texťák
[server #2] malcolm - Celeron@1,2GHz, 1GB, 1x10G + 1x40G RAID1 IDE > Ubutu 8.04 okýnka

[server #3] memphis - Intel Atom 330@1,6GHz, 1GB RAM, RAID1 2x1TB > ServerUbuntu 9.04
[notebook] mike - C2D@2,2GHz, 1GB, 160GB IDE > Ubuntu 9.04
[desktop] mischel - Q6600@2,4GHz, 8GB RAM, 0,5TB SATAII > Ubuntu 9.04 & XP
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od arxeiss »

snouman.net píše:Dobrá prasečinka... :-D
Teď myslíš celkově kód, jako jeho psaní? Mi to připadá totálně nepřehledně, já i když dávám podmínku na jeden řádek, stejně použiju { }. Endif používám jenom pokdu je mezi tím hodně dlouhý kód.
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
snouman.net
Nováček
Nováček
Uživatelský avatar
Registrován: 28. kvě 2009
Bydliště: $> cd /pub | more beer
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od snouman.net »

Všechno, struktura kódu. Endif, ten se v PHP nepoužívá. http://cz.php.net/manual/en/control-structures.if.php
[server #1] merlin - PIII@2x1133MHz, 4x256MB, 2xSCSI RAID1 33GB, 40GB IDE > Ubuntu 8.10 texťák
[server #2] malcolm - Celeron@1,2GHz, 1GB, 1x10G + 1x40G RAID1 IDE > Ubutu 8.04 okýnka

[server #3] memphis - Intel Atom 330@1,6GHz, 1GB RAM, RAID1 2x1TB > ServerUbuntu 9.04
[notebook] mike - C2D@2,2GHz, 1GB, 160GB IDE > Ubuntu 9.04
[desktop] mischel - Q6600@2,4GHz, 8GB RAM, 0,5TB SATAII > Ubuntu 9.04 & XP
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od OndraSter »

Nechtělo se mi to jeho kompletně upravovat, tak jsem se jen podřídil, svojí funkci to plní a pokud se na to nebude dále šahat, tak to je jedno, jak to vypadá, ne?

Jinak endif atd funguje.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
snouman.net
Nováček
Nováček
Uživatelský avatar
Registrován: 28. kvě 2009
Bydliště: $> cd /pub | more beer
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od snouman.net »

Jasný to není tvoje vina :D Ten kód je celej špatně koncipovanej. No, pokud na ty stránky vleze deset lidní denně, tak to jedno je. Ale už jen pro dobrý pocit bych to přepsal o výkonnosti nemluvě. Endif samozžejmě funguje, kvůli "kompatabilitě" s jinými jazyky...
[server #1] merlin - PIII@2x1133MHz, 4x256MB, 2xSCSI RAID1 33GB, 40GB IDE > Ubuntu 8.10 texťák
[server #2] malcolm - Celeron@1,2GHz, 1GB, 1x10G + 1x40G RAID1 IDE > Ubutu 8.04 okýnka

[server #3] memphis - Intel Atom 330@1,6GHz, 1GB RAM, RAID1 2x1TB > ServerUbuntu 9.04
[notebook] mike - C2D@2,2GHz, 1GB, 160GB IDE > Ubuntu 9.04
[desktop] mischel - Q6600@2,4GHz, 8GB RAM, 0,5TB SATAII > Ubuntu 9.04 & XP
l_iNu$
Začátečník
Začátečník
Uživatelský avatar
Registrován: 01. pro 2005

Re: Dynamické stránky vs SQL vs require

Příspěvek od l_iNu$ »

snouman.net píše:Endif samozžejmě funguje, kvůli "kompatabilitě" s jinými jazyky...
Endif samozřejmě nefunguje kvůli kompatibilitě s jinými jazyky ale hodí se třeba do šablon kde se hodí psát:

Kód: Vybrat vše

<?php foreach (…): ?>
<b>…</b>
<?php endforeach ?>
namísto v nepříliš jasnýho (hlavně pokud je vnitřek bloku nabitější)

Kód: Vybrat vše

<?php foreach (…) { ?>
<b>…</b>
<?php } ?>
snouman.net
Nováček
Nováček
Uživatelský avatar
Registrován: 28. kvě 2009
Bydliště: $> cd /pub | more beer
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od snouman.net »

endif != endforeach
To co řikáš je samozřejmě pravda...
[server #1] merlin - PIII@2x1133MHz, 4x256MB, 2xSCSI RAID1 33GB, 40GB IDE > Ubuntu 8.10 texťák
[server #2] malcolm - Celeron@1,2GHz, 1GB, 1x10G + 1x40G RAID1 IDE > Ubutu 8.04 okýnka

[server #3] memphis - Intel Atom 330@1,6GHz, 1GB RAM, RAID1 2x1TB > ServerUbuntu 9.04
[notebook] mike - C2D@2,2GHz, 1GB, 160GB IDE > Ubuntu 9.04
[desktop] mischel - Q6600@2,4GHz, 8GB RAM, 0,5TB SATAII > Ubuntu 9.04 & XP
Balin.Tomas
Nováček
Nováček
Registrován: 28. kvě 2009

Re: Dynamické stránky vs SQL vs require

Příspěvek od Balin.Tomas »

snouman.net píše:Jasný to není tvoje vina :D Ten kód je celej špatně koncipovanej. No, pokud na ty stránky vleze deset lidní denně, tak to jedno je. Ale už jen pro dobrý pocit bych to přepsal o výkonnosti nemluvě. Endif samozžejmě funguje, kvůli "kompatabilitě" s jinými jazyky...
Tak koukám že jsem se měl s tímto kodem ..... :oops:
Jak jsem ale psal je to převzato odtud z webu a tam nikdo nic proti nenapsal, ba naopak.
Mohli by jste mi poradit jak pomoci databáze includovat stranky nebo odkaz kde bych se něco dozvěděl (ale prosím aby to bylo psané pro blbečky :-D ) Vše se teprve sám učím a příklad je nejlepší učitel.
Děkuji
Balin.Tomas
Nováček
Nováček
Registrován: 28. kvě 2009

Re: Dynamické stránky vs SQL vs require

Příspěvek od Balin.Tomas »

Mám otázečku,asi to nepatří pod tento nadpis příspěvku co jsem uvedl, ale co tento kod bez databáze?

Kód: Vybrat vše

<?php
					 if (isset($_GET['page'])){
					    $soubor=$_GET['page'];
					    $soubor2= dirname($_SERVER['SCRIPT_FILENAME'])."/".$soubor.".php";
					    if(file_exists($soubor2)){
					       if(substr_count($soubor,"../")>0){ 
					           echo "<h3>Upozornění</h3>Nelze nahrát soubor v nadřazeném adresáři!";
					       }elseif($soubor=="index" or $soubor=="/index"){
					           echo "<h3>Upozornění</h3>Index nemůže načíst sám sebe!";
					       }else{
					           include $soubor2;
					       }
					    }else{                
					       include "inc/error404.php";
					    }
					  }else{                 
					    include "uvod.php";
					  }
?>
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od arxeiss »

Tento kód používám já, a je OK. Ale jak kontroluješ jestli to není index nebo /index tak tam dopiš ./index takto

Kód: Vybrat vše

...
}elseif($soubor=="index" or $soubor=="/index" or $soubor=="./index"){
...
ale jinak je OK :wink:
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Balin.Tomas
Nováček
Nováček
Registrován: 28. kvě 2009

Re: Dynamické stránky vs SQL vs require

Příspěvek od Balin.Tomas »

arxeiss píše:Tento kód používám já, a je OK. Ale jak kontroluješ jestli to není index nebo /index tak tam dopiš ./index takto

Kód: Vybrat vše

...
}elseif($soubor=="index" or $soubor=="/index" or $soubor=="./index"){
...
ale jinak je OK :wink:
Díky, tak ja použiji tento.Ale co když mám soubory třeba ve třech adresářích?Dá se to napsat nějak v tom kodu a nebo musím ty soubory volat index.php?page=adresar/soubor1, index.php?page=adresar2/soubor2 to by mi moc nevyhovovalo.
Děkuji
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od arxeiss »

Tak třeba předpokládám že ty adresáře tam nemáš jen tak že? Např v adresar1 jsou stránky v adresar2 je administrace a v adresar3 je fotogalerie. Tak třeba udělej že adresar1 bude ?p=stranka adresar 2 bude ?a=administrace a ?g=galerie
Nebo si to rozšiř že uděláš podmínku a nejdříve to zčekne adresar1 a pokud to tam nepujde tak to zkontroluje adresar2 a pak adresar3 ale to sebou nese nevyhodu ze se ti 2 soubory nesmí jmenovat stejně, tak si z toho něco vybereš.
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Balin.Tomas
Nováček
Nováček
Registrován: 28. kvě 2009

Re: Dynamické stránky vs SQL vs require

Příspěvek od Balin.Tomas »

Teď jsem se do toho zamotal :oops:
Prosim tě jak by měl ten kod tedy vypadat při tom prvním způsobu (?p=stranka atd.)
Díky moc za tvou pomoc.
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od arxeiss »

Kód: Vybrat vše

  if (isset($_GET['page'])){
    $soubor=$_GET['page'];
    $soubor2= dirname($_SERVER['SCRIPT_FILENAME'])."/page/".$soubor.".php";
  }elseif (isset($_GET['admin'])){
    $soubor=$_GET['admin'];
    $soubor2= dirname($_SERVER['SCRIPT_FILENAME'])."/admin/".$soubor.".php";
  }elseif (isset($_GET['galery'])){
    $soubor=$_GET['galery'];
    $soubor2= dirname($_SERVER['SCRIPT_FILENAME'])."/galery/".$soubor.".php";
  }
Snad chápeš že tam musíš mít ty kontroly atd... a pak jěště na konci to else inlcude uvod atd...
Jinak raději používej ?p= místo ?page= nebo ?a= místo ?admin= atd... Čím delší tím se více spleteš, mluvím z vlastní zkušenosti
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Balin.Tomas
Nováček
Nováček
Registrován: 28. kvě 2009

Re: Dynamické stránky vs SQL vs require

Příspěvek od Balin.Tomas »

Tak už to konečně chápu.Děkuji za pomoc a použiji to tak. Aještě k tý tadabázi, co je na tom špatně tedy když se nekouká na přehlednost.Já abych věděl čeho a kdy se vyvarovat.Ještě toto, jestli includování stránek (tento příklad) chápu dobře Tak pomocí tohoto kodu se stranky vypíšou v idexu, ale když potřebuji naincludovat nastavení, třeba připojení k databázi tak se musí použít to klasické include nebo require: require ("neco.php"); ?nebo se může použít index.php?neco=neco
Já jsem to zkoušel a občas mi to vzalo a občas hodilo chybu.Vše se sám učím a pokud nevidím nějaký příklad, kterému nerozumím tak to nechápu.Dík
Naposledy upravil(a) Balin.Tomas dne pát 29. kvě 2009, 20:55, celkem upraveno 1 x.
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Dynamické stránky vs SQL vs require

Příspěvek od arxeiss »

Teď nevím co by na tom mělo být špatně, až na to že tam chyběla podmínka jestli vůbec stránka existuje, a že pokud přidáš stránku tak to musíš zapsat i do DB tak myslím že tam nic nebylo

Edit:\\ Tak to teď nechápu jak to myslíš, jako že budeš chtít třeba do jiné části stránky vložit něco jiného? Nebo jako jěště z jiného adresáře? Zkus popsat příklad
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Balin.Tomas
Nováček
Nováček
Registrován: 28. kvě 2009

Re: Dynamické stránky vs SQL vs require

Příspěvek od Balin.Tomas »

Omlouvám se poslední dotaz beru zpět.Ale dik
Odpovědět

Zpět na „Programování a web“