Autor Zpráva
JaJco
Profil
Dobrý deň,

vytváram si vlastný jednoduchý RS a potrebujem vyriešiť ako dynamicky ťahať dáta z databázi a následne vytvoriť url.
Mám v tabuľke 4stĺpce -> id, nadpis, text, dátum. Chcel by som vytiahnuť tie dáta tak aby my vzniklo url www.xxx.yy/najnovsie.php?clanok=1(id) dočítal som sa na jednom anglickom fóre že sa to robí cez $_GET ale neviem ako presne a s PHP+MySQL mám zatiaľ malé skúsenosti.

$result = mysql_query("SELECT nadpis, obrazok_url, datum, text FROM obrazok ORDER BY obrazok_id DESC LIMIT 4");

 include $_GET['id'].".php";
 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo '<div id="div">';
    echo '<p class="datum">'. $row["datum"] .'</p>';
    echo '<a href="' . $row["obrazok_url"] .'"><img src="'. $row["obrazok_url"] .'" width="120" height="120"></a>';
    echo '<h2>'. $row["nadpis"] .'</h2>';/* Sem by som chcel vytiahnuť link z databázy a pridať ho do <a href="">*/
    echo '<p>'. $row["text"] .'</p>';
    echo '</div>';
    }
mysql_free_result($result);

?>

Popravde nevedel som zrozumitelnejšie popísať čo potrebujem. Vedeli by ste mi napísať presný postup ako na to? Alebo poprípade rovno kód(ale to chcem už asi priveľa).

ďakujem, JaJco
Someone
Profil
Jestli nevíš jak se pracuje s $_GET tak jsem o tom včera psal Je to zatím úvod to práce s ním, ale pak už jen na základě toho stavíš mysql dotaz...
JaJco
Profil
Stačilo poriadne porozmýšlať a na spôsob som došiel :) ale vypisuje mi to chybu.
" Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\my_cms\obrazok.php on line 13"
<?php
    $spojenie = mysql_connect("localhost","root","")
        or die( "Nieje možné pripojiť sa k databáze!" . mysql_error() );

    mysql_select_db("cms", $spojenie);


    $id = $_GET['id'];

    $dotaz = mysql_query("SELECT * FROM clanok WHERE id='$id' ");


    while($row = mysql_fetch_array($dotaz))
      {
      echo $row['nadpis'] ;
      }
Someone
Profil
Potrpím si na své standarty tudíž ti navrhnu nezapisovat proměnnou jako součástí řetězce a zapsato takto (+ještě jedna menší změna) $dotaz = mysql_query("SELECT * FROM clanok WHERE clanok.id='".$id."'");
Tori
Profil
JaJco:
Chyba je zřejmě v dotazu, koukněte se do FAQ jak snadno zjistit příčinu.

Jinak radila bych, abyste si už od začátku zvykal escapovat data, která posíláte do DB - v tomto případě tedy
mysql_query("SELECT * FROM clanok WHERE id=" . intval($id)); Pokud je sloupec číselného typu, použije se intval (nebo floatval) a není potřeba dávat hodnotu do apostrofů/uvozovek. Řetězce se ošetřují funkcí mysql_real_escape_string. U řetězců a časových údajů ("2012-03-08") se naopak uvozovky používají.
Je to ze začátku asi trochu otravné to tam pokaždé psát, ale taky je to dobrá ochrana pro SQL injection. A později třeba přejdete na nějakou DB vrstvu, která to bude automaticky dělat za vás.
JaJco
Profil
Ďakujem za všetky rady už som to rozbehal, problém bol u mňa vo wamp-e

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0