21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
flying gentleman
Profil
No ahojte,
tak už jsem se dostal k tomu, jak udělat archív. Normálně zachytám nadpisy článků z db, hodím je jako odkazy, takže pak po kliknutí na nějakej odkaz vznikne ta adresa napsaná v threadu.
Jenomže já nevím, jak mám po kliknutí na ten odkaz vypsat celej ten článek. Zatím to vždycky končí tím, že se sice změní adresa z localhost/home/archiv.php na localhost/home/archiv.php?56, ale obsah zůstane stejnej-seznam článků:(
Jak to teda mám celej ten článek vypsat, když kliknu na ten odkaz?

Jo, kód vypadá asi nějak takhle:
<?php
$dbconn=mysql_connect("localhost","root","") or die("Nepovedlo se spojit se serverem");
$dbname=mysql_select_db("weblog",$dbconn) or die ("Nepovedlo se otevřít databázi");
$sql="select * FROM articles ORDER BY time desc LIMIT 6,1000";
$result=mysql_query($sql,$dbconn);
echo"<ul>";
while($data=mysql_fetch_assoc($result)){
$time=Date("d. n. Y H:i", $data['time']);
?>
<li><a href="archiv.php?<?php print $data['ID']; ?> "><?php print $data['nadpis']; ?> </a>&nbsp;&nbsp;/ <?php echo $time;?> </li>
<?php
}
echo "</ul>";
?>
Hugo
Profil
flying gentleman

Pokud dobre chapu dotaz, tak ti staci zmenit tento radek

$sql="select * FROM articles WHERE ID = ".$_SERVER["QUERY_STRING"];
flying gentleman
Profil
Jaký řádek mi stačí změnit?
WertriK
Profil *
Řekl bych že spíš potřebuješ neco jako toto:

<?
$dbconn=mysql_connect("localhost","root","") or die("Nepovedlo se spojit se serverem");
$dbname=mysql_select_db("weblog",$dbconn) or die ("Nepovedlo se otevřít databázi");


if ($action="show_id") {
$sql="select * FROM articles WHERE ID= ".$id;
$result=mysql_query($sql,$dbconn);


}
else {
$sql="select * FROM articles ORDER BY time desc LIMIT 6,1000";
$result=mysql_query($sql,$dbconn);


echo"<ul>";
while($data=mysql_fetch_assoc($result)) {

$time=Date("d. n. Y H:i", $data['time']);
echo "<li><a href=\""archiv.php?id=<?php print $data['ID']; ?>&amp;action=show_id\">";
echo $data['nadpis'];
echo "</a>&nbsp;&nbsp;/ $time </li>";

}
echo "</ul>";
?>
možná to bude házet nejakou chybu, ale nemelo by....
flying gentleman
Profil
WertriK:tak to háže jen bílou obrazovku:)
flying gentleman
Profil
No abyste to správně pochopili, tak tohle
<?php
$dbconn=mysql_connect("localhost","root","") or die("Nepovedlo se spojit se serverem");
$dbname=mysql_select_db("weblog",$dbconn) or die ("Nepovedlo se otevřít databázi");
$sql="select * FROM articles ORDER BY time desc LIMIT 6,1000";
$result=mysql_query($sql,$dbconn);
echo"<ul>";
while($data=mysql_fetch_assoc($result)){
$time=Date("d. n. Y H:i", $data['time']);
?>
<li><a href="archiv.php?<?php print $data['ID']; ?> "><?php print $data['nadpis']; ?> </a>&nbsp;&nbsp;/ <?php echo $time;?> </li>
<?php
}
echo "</ul>";
?>

má vypsat seznam všech nadpisů článků jako odkazy a po kliknutí bych chtěl vypsat článek. Odkazy b samozřejmě měly zmizet:)
Hugo
Profil
flying gentleman

Pokud chces zobrazit clanek, tak ho musis natahnout z db, na to pouzijes ten dotaz co jsem psal o par prispevku vys. Jen musis osetrit pripad, kdy chces zobrazit jen seznam clanku. To je to co psal wertrik.
flying gentleman
Profil
Když tak www.misulinek.wz.cz/archiv.php ať aspoň víte, co to dělá:)
flying gentleman
Profil
To WertriKovo ne a ne rozchodit, je tam asi nějakej problém s uvozovkama a apostrofama, ale je jich tolik, že tu chybu nemůžu najít.
Hugo
Profil
if ($action="show_id")
Chybi tam jedno rovnitko

if ($action=="show_id")

echo "<li><a href=\""archiv.php?id=<?php print $data['ID']; ?>&amp;action=show_id\">";
echo "<li><a href=\"archiv.php?id=<?php print $data['ID']; ?>&amp;action=show_id\">";

Doufam, ze jsem nic neprehledl
flying gentleman
Profil
Pořád nic. Uvozovky jsou svině:)
Hugo
Profil
Jeste je chyba tady

echo "<li><a href=\""archiv.php?id=<?php print $data['ID']; ?>&amp;action=show_id\">";
flying gentleman
Profil
Ne-e, prostě to nefunguje:(
flying gentleman
Profil
Dívám se na to v PSPadu (zvýrazněná syntaxe), ale neumím tu chybu najít.
Hugo
Profil
Takto je to syntakticky spravne

<?php
$dbconn=mysql_connect("localhost","root","") or die("Nepovedlo se spojit se serverem");
$dbname=mysql_select_db("weblog",$dbconn) or die ("Nepovedlo se otevøít databázi");


if ($action=="show_id") {
$sql="select * FROM articles WHERE ID= ".$id;
$result=mysql_query($sql,$dbconn);


}
else {
$sql="select * FROM articles ORDER BY time desc LIMIT 6,1000";
$result=mysql_query($sql,$dbconn);

}
echo"<ul>";

while($data=mysql_fetch_assoc($result)) {
$time=Date("d. n. Y H:i", $data['time']);
echo "<li><a href=\"archiv.php?id=".$data['ID']."&amp;action=show_id\">";
echo $data['nadpis'];
echo "</a>&nbsp;&nbsp;/ ".$time." </li>";
}
echo "</ul>";
?>
flying gentleman
Profil
f ($action=="show_id") {
$sql="select * FROM articles WHERE ID= ".$id;
$result=mysql_query($sql,$dbconn);


Hugo:předpokládám správně, že do této části mám doplnit zachycení článku? Jako echo $data['article']???
flying gentleman
Profil
Takže dělá to zhruba tohle:pokud kliknu na nějakej odkaz, přesměruje mě to znova na ten seznam odkazů a pod ním to vypíše "Nadpis článkuResource id #cislo"
flying gentleman
Profil
Update: tak to resource id#cislo byla chyba v syntaxi, tu jsme odstranil, ale pořád mě to háže ten seznam článků i po kliknutí:(
Hugo
Profil
Misto $id pouzij $_SERVER['QUERY_STRING']

asi takto

f ($action=="show_id") {
$sql="select * FROM articles WHERE ID= ".$_SERVER['QUERY_STRING'];
$result=mysql_query($sql,$dbconn);
$data = MySQL_Fetch_Assoc($result);

Potom budes mit nadpis v $data['article']

P.S.: Neuvazoval jsi nekdy o tom, precist si neco o php??
flying gentleman
Profil
Hele tak doma to nefacha ale na www.misulinek.wz.cz/pokus.php jo! To je zajímavý.
Hugo
Profil
Jo a jeste musis upravit tu podminku, mela by vypadat nejak takto
if ($_SERVER['QUERY_STRING'] != '')
flying gentleman
Profil
Hugo: já vím, jsem lama. Ale už jsem se naučil zachytávat výpis z db pomocí těch mysql_fetch_assoc/array.
Jen jsem se ujišťoval:)
flying gentleman
Profil
Hugo: v čem je výhoda toho $_SERVER['QUERY_STRING']???
Stejně mi to s tím háže nějakou chybu, takže tam nechám to id.
Hugo
Profil
Protoze doma asi nemas povolene register_globals, misto $id pouzij $_GET['id'] a pojede to.

Tu podminku neupravuj. Psal sem to pro ten odkaz co je v nadpisu teto diskuze.
Hugo
Profil
flying gentleman

v čem je výhoda toho $_SERVER['QUERY_STRING']???

Myslel sem, ze mas ty odkazy ve stylu
http://localhost/home/archiv.php?56

Pak musis pouzit $_SERVER['QUERY_STRING'], coz je promenna, ktera obsahu retezec z URL (ten za otaznikem). Ale ty predavas cislo clanku pomoci ?id=56&..., takze tam dej $_GET['id']
flying gentleman
Profil
Aha, díky za vysvětlení. Doma jsem to nerozjel ani pomocí předávání GEt, takže už nevím. No hlavně že to fachá na wz.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0