ahoj,
v php jsem slabý začátečník a potřeboval bych poradit s následující podmínkou.
<?php
if (!$id=="")
{
echo $titulek;
}
else
{
echo $titulek[$_GET['id']] . " - ";
}
?>
smylem jaksi mělo být:
- pokud není žádný parametr (id) nebo je prázdný, tak vypsat titulek ($titulek="Můj první titulek";)
- pokud je nějaký parametr, tak vypsat proměnnou z pole (array)
$titulek = array(xx=>"XX titulek",
yy=>"YY titulek");
druhá podmínka funguje, tedy pokud mám např. stranka.php?id=xx, vypíše se "XX titulek". Ale pokud je id prázdné, nebo není (je pouze stranka1.php), tak se mi vypíše titulek stránky, ale vždy pouze první písmeno. Místo "Můj první titulek" se zobrazí pouze "M".
prošel jsem na netu všechno možý, až jsem dal dohromady tohle, ale teď už jsem v koncích:-)
předem děkuji za pomoc.
Mára
PHP má volnost, pokud jde o typování proměnných. Což může být výhoda, ale i způsobit zmatek. Což se děje i zde. Spojujete hrušky s jablkama.
Pokud je $titulek typován jako array, tak se pracuje jako pole. Vy zkoušíte $titulek jako string a to nejde. Tedy echo $titulek by ve skutečnosti mělo vypsat "Array". Takže v tomto směru tam musí být někde chybka.
Jinak ten kód je řešen trochu nešťastně. Pokud se má testovat existence proměnné (hodnoty), pak by uvnitř podmínce měla být ona proměnná a ne ji umístit vně (za else).
Takže správně by to mělo být asi takto
<?php
if (isset($_GET['id'])) // testujeme existenci proměnné
{
if($_GET['id'] == "") // testujeme prázdnost proměnné
{
echo $titulek[$_GET['id']] . " - ";
}
else
{
echo "Můj první titulek"; // vypíšeme při prázdné hodnotě id
}
}
else
{
echo "Můj první titulek"; // Vypíšeme při neexistenci id
}
?>
Problemem bude zrejme to,ze podminka je nesplena a provede se cast v else .. vypise se pouze jeden znak, kdyz je $titulek retezec. Jako takovy typ retezec neexistuje - jedna se totiz pouze o seznam charu (znaku)..
$prm = 'muj textovy obsah';
echo $prm[1]; //vypise u
echo $prm[4]; //vypise t
Osobne bych to tedy napsal takto:
if(isset($_GET['id']) && $_GET['id'] != '' ) echo $titulek[$_GET['id']] . " - ";
else echo $titulek;
oprava:
if($_GET['id'] != "") // testujeme prázdnost proměnné
no když já mám rád hrušky i jablka:-)
každopádně děkuji za pomoc, jak to napsal freeze, tak to funguje přesně, jak jsem chtěl.
díkas
<HTML>Vyřešeno, proto zamykám.<style>form { display: none; }</style></HTML>