Създаване на връзки в PHP

bunchevi

Registered
Въпросът ми е как да създам връзките в php сайт. Прочетох доста уроци за това, но не ми се изяснява.

Например искам при кликане върху име на програма да се отваря нов прозорец на който да се показва инфото само на тази програма. Това, което виждам по уроците е че пишат примерно линка да е следния:
Код:
programs.php?id=7
Това как да го разбирам- че сме си направили папка programs и в нея какво има? Нали цялото инфо за програмата ми се намира в базата данни.

А другият проблем ми е с това къде да напиша кода на новата страница която трябва да се отвори. Какво име на файла да дам или се прави по друг начин без запазване на отделен файл за съответното инфо.
 
Код:
programs.php?id=7

programs.php ти е фаил с php код а ?id=7 ти е параметър с име ID и стойност 7
него го зимах например с :
Код:
 $parameter=$_GET[id]
 
а какво се очаква примерно да има във файла programs.php? Някъде го пишат и без такъв файл.
Аз доколкото гледам такива уроци идеята им е следната. Където искам да изведа информацията пиша нещо от рода на
Код:
if(isset($_GET['cat']))
{
$cat=$_GET['cat'];
}

И по- нататък извеждаме инфото. Само, че дали това е достатъчно, за да се промени съответно и урл-то?
 
Код:
id=7
това ти е просто параметър които присвояваш с $_GET[параметъра които присвояваш] в случая "id" toest $_GET[id].
например:
Код:
$parametyr=$_GET[id];
echo $parametyr;

ще ти върне резултат: 7, на страницата
просто пренасяш параметър от някъде към страницата programs.php.
 
за да ти стане още по ястно имаш линк
в index.php от рода на :
Код:
<a href="parograms.php?id=7&name=Nqkakwo ime">Цък</a>

и в parograms.php имаш:

Код:
<?php
$id=$_GET[ID];
$ime=$_GET[name];
?>
Име: <? echo $ime ?>
Номер: <? echo $ид?>


Ще ти изкара резултата:

Име: Nqkakwo ime
Номер: 7
 
Това да го разбирам ли така: ако имам programs.php в урл-то, тогава в programs.php да пиша кода който да извежда информацията от тази категория и съответно урл-то автоматично се променя в .../programs.php?cat=7, а в случай че урл-то ми е само ?cat=7- кода за извеждане на инфото от тази категория се пише в индекс.пхп и съответно при н атискане на тази категория урл-то се променя на ....?cat=7

Дано да съм обяснила правилно.
 
Когато опитах примера, при кликане на линка се отвори другата страница и ми изведе това съобщение:
Notice: Use of undefined constant id - assumed 'id' in D:\Program Files\wamp\www\proba\films.php on line 9

Notice: Use of undefined constant name - assumed 'name' in D:\Program Files\wamp\www\proba\films.php on line 10
Име: Номер:

Опитах да направя линкове с php понеже използвам функции, но ми дава постоянно Parse error: parse error in D:\Program Files\wamp\www\proba\index.php on line 13
Това е и кода ми в индекс.пхп
Код:
<?php
echo '<a href="films.php?'.urlencode(ime= IOsdfl LDdf).' "> cuk </a>';

?>
Опитах как ли не да направя да ми излиза връзката, но постоянно ми дава или грешката или ми извежда след "cuk" и '; ?>
 
За първият проблем, трябва да използваш кавички. Доста хора пропускат да скагат кавички на елементите от масива. Ето пример:
Код:
$masiv[name]; // Грешно
$masiv['name']; // Правилно

Хората го игнорират това, защото си спират показването на грешки на PHP кода, което само по себе си е голяма грешка :D
Изпълнението на кода се забавя, когато се прикриват такива грешки.

В грешката, която ти изважда PHP, пише че използваш константа, която не е дефинирана. Това е така, защото когато пхп срещне някакъв стринг, каквто в този случай name и около него няма кавички, и не започва с $, което е индикатор за променлива, парсера го счита за константа!

Код:
define('name', 'stoinost'); // Дефинираме константа name!
$masiv[name]; // Правилно
$masiv['name']; // Правилно
След като първоначално сме дефинирали константата name, можем по-надолу в кода да я използваме. Така $masiv[name], всъщност извиква $masiv['stoinost'] :)

Относно втората грешка, пак изпускаш кавичките :)
+ това, трябва да encode-неш само стойността на параметъра name!
echo '<a href="films.php?ime= '.urlencode("IOsdfl LDdf").' "> cuk </a>';
 
Да аз го оправих това, но проблема се оказа, че са били кратките тагове <? вместо <?php.
Благодаря за подробния отговор.
 
А има ли опасност полетата които извеждам от базата данни да бъдат променени и следователно трябва ли когато извеждам всяко такова поле като резултат на самата страницата да го извеждам с htmlentities() ?
 

Back
Горе