Autor Zpráva
Jeremy88
Profil
Chtel bych kapanek vylepsit nasledujici script:

<?php if(IsSet($_GET['p'])):
switch($p) {
...
case "half-life2":
$url = "1-3half-life2.php";
break;

case "half-life2-info":
$url = "1-3-1info.php";
break;

case "half-life2-recenze":
$url = "1-3-2recenze.php";
break;
...
require $url;
endif; ?>


Vse mi na webu (ukazka) funguje bez problemu, ale zcela logicky se tam pak nemeni titulek stranky.

Premyslel sem zhruba nad timto resenim:

...
case "half-life2-recenze":
$url = "1-3-2recenze.php";
$title = "Recenze - Half-Life 2";
break;
...


Ale dal nevim, jak $title dat do titulku. Jestli z nej udelat nejakym zpusobem funkci a nasledne s ni provest toto:

<title>{title} - Hry</title>


Jsem temer neznaly PHP, tak prosim o radu. Jen upozornuji, ze nevim jak se spravne funkce tvori a ani v dalsich podrobnostech se jeste zrovna dvakrat neorientuji.

A taky sem premyslel o pouziti MySQL db podle jednoho tutorialu na interval.cz, ale tam je vsude napsano, jak se z db data volaji a jak potom vypada PHP script, ale nikde neni uvedeno, jak tam ty data dostat. Jestli vite o nejakem tutotialu na rucni vkladani dat do db, nebo to umite strucne popsat, tak to sem taky napiste.

Predem dik za odpovedi.
Mingan
Profil
<title><?php echo $title ?> - Hry</title>

Či něco jiného v tomto smyslu-
WertriK
Profil *

case "half-life2-recenze":
$url = "1-3-2recenze.php";
$title = "Recenze - Half-Life 2";
break;

Uvazujes spravne, kdyz das ten script hned na zacatek, nebo staci pred tag <html> tak staci prepsat titulek
na <title><?=$title;?> - Hry</title>
a budes mit vytouzeny titulek.

Pres DB by to slo taky a bylo by to dokonce i efektnejsi, do DB se data vkladaji pres PHPmyAdmina nebo rucne pres

$sql = "INSERT into bla bla SET nejakapromenna='blabla'";
mysql_quert($sql);
Jeremy88
Profil
Inspiraci jsem hledal tady - interval.cz/clanek.asp?article=1873.

Je tam i jak vytvorit tabulku v db a jak nasledne upravit ten script, ale jak do ni nacpat ty data uz tam neni a ani na zadnej poradnej clanek sem na tohle tema nenasel. PHPmyAdmina obcas pouzivam, tak jestli vite jak, tak zde prosim napiste strucnej postup, diky. Pres to $sql to moc delat nechci, jak se znam, tak bych tam mel pak spoustu preklepu a chyb.

A to co mi poradil Mingan, tedy "<title><?php echo $title ?> - Hry</title>" funguje bezproblemove, dik. Jen sem cely ten script musel rozdelit, vetsinu presunout hned za DOCTYPE a pak <?php require $url; ?> dat na to misto, kde se ta cast souboru ma zobrazit.
Jeremy88
Profil
Tak uz jsem zacal pracovat na verzi s pouzitim db, ale mam nasledujici problem

Udelal script, ktery ma za pomoci databaze dynamicky generovat jak cast stranky, tak i titulek, ale vypada to, ze nejspis nekde v zavolani dat z databaze bude chyba. Prosim poradte, vubec netusim, kde by to mohlo byt. Navic mi db ani script nehlasi zadnou chybu, jen to hodi dafaultne nastavenou stranku.

script:

<?php
if(IsSet($_GET['p'])): // overeni existence 'p'
MySQL_Connect("localhost"); // pripojeni k db
MySQL_Select_DB("web_czif_net"); // zvoleni db
$output = MySQL_Query("SELECT url,name FROM 1hry WHERE id = '$_GET[p]'"); // sql prikaz na url + name a ulozeni id do $p

if(MySQL_NumRows($output) == 1):
$url = MySQL_Result($output, 0, "url"); // url z db zapsana do $url
$title = MySQL_Result($output, 0, "name"); // name z db zapsan do $title

else:
$url = "1-0start.php"; // kdyz neexistuje $url, tak do nej vloz uvodni stranku sekce ...
$title = ""; // ... a navic vloz prazdny titulek, bo ho uz neni treba
endif;

else:
$url = "1-0start.php"; // kdyz neexistuje $p, tak do nej vloz uvodni stranku sekce ...
$title = ""; // ... a navic vloz prazdny titulek, bo ho uz neni treba
endif;
?>


zapis v XHTML:

<title><?php echo $title ?> Hry - IF</title>
...
<div>
<?php require $url; ?>
</div>


V databazi uz tabulka s nazvem "1hry" vlozena je, data jsou tam snad napsana take dobre (pod spravnymi nazvy), ale kdyz kliknu na jakykoliv odkaz, tak se nacte jen uvodni stranka "1-0start.php".
Pokud budete potrebovat jeste dalsi upresneni problemu, tak napiste co presne potrebujete a ja se pokusim dale specifikovat moje potize.
Predem diky moc za odpovedi.
WertriK
Profil *
Zkus si vypsat kolik to naslo zaznamu v DB, to taky hodne rekne ...

$test = MySQL_NumRows($output);
echo $test."<br />";

if($test == 1):

$url = MySQL_Result($output, 0, "url"); // url z db zapsana do $url

$title = MySQL_Result($output, 0, "name"); // name z db zapsan do $title
...
Jeremy88
Profil
No takze jestli tvoji uprave dobre chapu, tak kdyz se z db se "neco" nacte, tak by se mel nekde na webu (podle toho kde bude echo $test."<br />"; ) udelat jeden radek, ze ??? To se taky stane, ale dal pretrvava stejny problem, do $url ani do $title se asi z db nic neulozi a pak ani nezavola. Fakt uz nevim jak dal, kod sem si projizdel uz nekolikrat radek po radku, ale stejne sem tam chybu neobjevil.
Jestli mas chvilku casu, tak napis prosim na icq 239961599 nebo na mail a ja ti dam prihlasovaci udaje k db a na ftp, at se na to muzes mrknout sam.
WertriK
Profil *
ale v tom radku se ma zobrazit taky nejake cislo.
Misto echo $test."<br />"; tam napis echo $test."<- pocet shod<br />";
A napis jake cislo ti to vypsalo pred tim <- pocet shod ...
krteczek
Profil
Místo if(isset($_GET['p'])) doporučuji pužívat if(!empty($_GET['p'])) dosáhneš tím toho že se nebude snažit načíst "p" ale rovné 0
krteczek
24k_VERYSICK
Profil *
Mno kdyz uz bychom brali v uvahu toto testovani tak bych spis pouzil

if ($_GET['p'])
krteczek
Profil
ještě jedna věc, chybí ti tam použití funkce $r=mysql_fetch_array($output);
udělal bych to nějak takhle:

$dotaz="select nazev, clanek from tabulka where seonazev='".$_GET['p']."' ";
if($v=mysql_query($dotaz, pripojeni()))
{
$p=mysql_num_rows($v);
if($p==1)
{
$r=mysql_fetch_array($v);
$title=$r['title'];
$clanek=$r['clanek']; // do databáze ulož celý článek, nemusíš ho ukládat do souboru
}
}

krteczek
Jeremy88
Profil
A napis jake cislo ti to vypsalo pred tim <- pocet shod ...
Nevypsalo to tam bohuzel nic. Budu se pokouset dal opravovat script podle vasich rad.
krteczek
Profil
Jeremy88: nejdříve si zapiš dotaz na databázi do proměnné(jak to dělám já), můžeš si ten dotaz nechat zobrazit echem a dát exit hned za to echo

$page="jak-se-branit-spyware";
$dotaz="select * from tabulka where seonazev='".$page."' ";
echo $dotaz; exit;
Jeremy88
Profil
Takze uz se v tom beznadejne ztracim. Z vasich jiste ochotnych rad jsem nepostoupil ani o krok dopredu. Porad se udaje z databaze nechteji do promenych vlozit a ani test, ktery jste zde uvadeli, nefungoval.

Uz vazne nevim kudy kam, projekt jsem chtel mit hotovy koncem jarnich prazdnin (tj. 12. 2.), ale tento problem me velmi nepekne brzdi. Nejspis to bude moji velkou neznalosti PHP a MySQL vubec, ale z vasich ponekud kusych odpovedi nejsem shopen dat dohromady script, ktery by byl funkcni.

Zde uvadim jake promene pouzivam a dalsi upresneni meho postupu, ktere asi bude potrebne pro nalezeni one fatalni chyby:
1 - prvni podminka s "$_GET['p']"
2 - adresa tedy je ".../1-0hry.php?p=call_of_duty2"
3 - do db se pripojim pres "localhost" a jeji nazev je web_czif_net, ale v phpMyAdminovy je napsano, ze jsem prihlasen jako "web_czif_net@localhost" (!)
4 - pak do $out_url ulozim hodnotu "url" z db, tabulka "1hry" a jeste je tam napsano "id = $_GET[p]"
5 - to same udelam s titulkem, jen misto "url" dam "name" a promena je $out_title
6 - nasleduje podminka cislo 2 a do $url se ulozi vysledek z db "url"
7 - opet podminka, promena $title a do ni "name" z db, if hned ukoncena
8 - else ke druhe podmince, kdyz nebyl nalezen zaznam v db, tak do $url ulozit chybovou stranku "1-0error.php" + endif
9 - else k prvni podmince, do $url vlozena uvodni stranka secke "1-0start.php" + endif + ukonceni scriptu

Tady je muj script a volani v xhtml:
<?php if(isset($_GET['p'])): // bod cislo 1 a 2
mysql_connect("localhost"); // bod cislo 3
mysql_select_db("web_czif_net"); // bod cislo 3

$out_url = mysql_query("select url from 1hry where id = $_GET[p]"); // bod cislo 4
$out_title = mysql_query("select name from 1hry where id = $_GET[p]"); // bod cislo 5

if(mysql_numrows($out_url) == 1): // bod cislo 6
$url = mysql_result($out_url, 0, "url"); // bod cislo 6

if(mysql_numrows($out_title) == 1): // bod cislo 7
$title = mysql_result($out_title, 0, "name"); // bod cislo 7
endif;

else:
$url = "1-0error.php"; // bod cislo 8
endif;

else:
$url = "1-0start.php"; // bod cislo 9
endif; ?>

+

<title><?php echo $title ?> Hry - IF</title>

+

<?php require $url; ?>


Nefunguje tam ulozeni udaju z db do $url a $title, ale kdyz jsem na uvodni stranu "1-0hry" tak se do $url nacte 1-0start.php a kdyz "selze" db, tak je v $url "error.php" - snad jedina funkcni vec na tomto scriptu, ale dosti logicka, protoze toto je zapsano primo v php bez nutnosti ziskani udaju z db. V db mam zatim jen zkusebne nahrate tri udaje (tj. id = seonazev nebo-li take soucast url adresy, name = titulek, url = umisteni na serveru) ke strankam s id "arx_fatalis" a "call_of_duty2", ale totozne odpovedi se dockam i kdyz zkusim zavolat stranky, ktere nemaji v db zatim zadne svoje udaje, podle toho usuziji, ze bude chyba uz nekde v pripojovani k db.

Dale uvadim relevantni odkazy:
- http://new.czif.net/1-0hry.php - hlavni soubor, ve kterem je vepsan vyse uvedeny script
- http://new.czif.net/1-0hry.php?p=arx_fatalis - udaje k teto strance jsou v db
- http://new.czif.net/1-0hry.php?p=call_of_duty2 - to same jako predchozi adresa
- http://interval.cz/clanek.asp?article=1873 - clanek podle je script z casti vytvoren

Uplne na zaver bych chtel podekovat za cas straveny zabyvanim se nad mym problemem, jsem v php a mysql jeste moc velka lama, to priznavam, ale cas me tlaci, potrebuji s touto problematikou nutne pomoci. Jednou jsem to zde uz psal, ale pokud mate chvili cas, tak vam dam udaje k mysql i na ftp, at se na to muzete podivat osobne, treba na tu chybu pak prijdete rychleji, hesla muzu v administraci zmenit hned, to neni problem.
WertriK
Profil *
To tvoje mysql_numrows nahrad MySQL_Num_Rows
WertriK
Profil *
Tady to mas cele predelane, jak se na to divam tak je to otresne .. :

<?php
if(isset($_GET['p'])) {

mysql_connect("localhost");
mysql_select_db("web_czif_net");
$p = $_GET["p"];

$out = mysql_query("SELECT url, name FROM 1hry WHERE id = '$p'");
$out_num = MySQL_Num_Rows($out);

if ($out_num != 0) {

list($url, $title) = mysql_fetch_row($out);

if ($url == "") {
$url = "1-0error.php";
}

if ($title == "") {
$title = "Nejaky obecny titulek";
}

} else {
$url = "1-0error.php";
}

} else {
$url = "1-0start.php";
}
?>
WertriK
Profil *
misto $url == "" tam muze byt
if (empty($url)) {
$url = "1-0error.php";
}

if (empty($title)) {
$title = "Nejaky obecny titulek";
}
Anonymní
Profil *
[pre][/pre][i][/i][b][/b]
[pre][/pre][img][/img][url=http://neco.cz]Text odkazu[/url]
Jeremy88
Profil
Vazeni dekuji vam vsem za spolupraci, problem byl vyresen. Jmenovite bych chtel zminit uzivatele s nickem WertriK a
krteczek a jeste jednou jim podekovat. Tito dva jsou u me skutecnymi machry pres php a mysql a vytahli me z dost tezkeho pruseru.
Pokud budete chtit zase vy dva s necim pomoci, tak napiste na mail Jeremy88@seznam.cz nebo na icq 239961599, rad vam pomohu napr. s webovou grafikou apod.
A abych nezapomel, chyba byla samozrejme nejdrive v mem naprosto prasackem zapisu scriptu a pak take v spatnem nastaveni prihlasovacich udaju k db.
Funkcni ukazkova cast je tady - http://new.czif.net/1-0hry.php?p=arx_fatalis
Jeste jednou DIKY !!!
Toto téma je uzamčeno. Odpověď nelze zaslat.

0