Autor Zpráva
Holda
Profil
Zdravim,
snažím se na své stránce o výpis dat podle podmínek po kliknutí na odkaz ale nic mi to nevrací. Pro výpis dat jsem našel tento skript, ale nějak nefunguje. Myslím, že problém je hned na začátku v tom if. Nejspíš by tam mělo být něco jiného, ale nevím co.

<a href="index.php?page=uvod">Úvod</a>
<?php
if (isset($_GET['page'])){    
                $data=mysqli_query($db_spojeni, "SELECT * FROM texty WHERE 'id' LIKE '%page%'");
                while ($link = mysqli_fetch_array($data))
                    {
                        echo $link;
                    }
               }

?>
David1256
Profil
<?php
if (isset($_GET['page'])){    
                $data=mysqli_query($db_spojeni, "SELECT * FROM texty WHERE 'id' LIKE '%page%'");
                while ($link = mysqli_fetch_array($data))
                    {
                        echo $link['id'];
                    }
               }
 
?>
Ale stejně se mi to zdá divné. Proč bys měl ve sloupci id uloženy nečíselné znaky. Id bývá většinou identifikační číslo. Navíc tam nikde nemáš nedefinovanou $db_spojeni
panther
Profil
Holda:
navíc předpokládám, že v dotazu nechceš porovnávat se stringem „page“, ale s proměnnou $_GET['page'].
Holda
Profil
panther:
Jo, chci to porovnávat s tou $_GET ['page']. Já jsem si ten skript našel na netu a nevím, jak upravit začátek tak, aby se porovnávala data s 'page'. To $db_spojeni je v jinem suboru a to funguje správně.
Again
Profil
Holda:
Tohle ti fungovat nebude a když ano, tak stejně najdeš později problém jinde, doporučuji nejdříve začít studovat SQL dotazy a spojení PHP s databázemi.

Nejprve musíš zjistit, co vlastně chceš porovnat. Jelikož neznám strukturu tabulky "texty", tak ti moc neporadím, ale rozhodně nemůžeš porovnávat ID (což je zpravidla číselná hodnota) s $_GET['page'], což je zase (soudě dle tvého úvodního odkazu) textová hodnota.
panther
Profil
Again:
ale rozhodně nemůžeš porovnávat ID (což je zpravidla číselná hodnota)
to, že ID bývá zpravidla integer neznamená, že v této tabulce to nemůže být (nestandardně) string. Rozhodně bych bez znalosti tabulky takové soudy nevynášel.
Holda
Profil
Again:
A texty s tím porovnávat můžu? Jak by pak měl ten skript vypadat? Třeba takto?:

<a href="index.php?page=uvod">Úvod</a>
<?php
                $page=$_GET['page'];   
                $data=mysqli_query($db_spojeni, "SELECT * FROM texty WHERE 'nadpis' LIKE '%$page%'");
                while ($link = mysqli_fetch_array($data))
                    {
                        echo $link ['nadpis'];
                    }
               }
 
?>
panther
Profil
Holda:
Jak by pak měl ten skript vypadat?
s jakým sloupečkem z DB, resp. tabulky, chceš porovnávat, to snad víš nejlépe ty, ne? Nikde jsi nám neukázal strukturu té tabulky, tak se nemůžeš ptát, s jakým sloupečkem porovnávat.
Holda
Profil
Mám tabulku texty. V ní mám sloupečky id, nadpis a text. Chci vypsat ty texty které mají v nadpisu slovo stejné jako 'page'. A právě to nevím jak udělat.
panther
Profil
"SELECT text [, id] FROM texty WHERE nadpis LIKE '%" . mysql_real_escape_string($_GET['page']) . "'%"

Nebo, pokud má jít o přesnou shodu, pak
"SELECT text [, id] FROM texty WHERE nadpis = '" . mysql_real_escape_string($_GET['page']) . "'"
Holda
Profil
Takže by to mělo vypadat takto? Já teda jen kam co doplnit. Trošku mě to mate, jelikož v php nejsem tak pokročilí.

<?php
                $data=mysqli_query($db_spojeni,"SELECT text [, id] FROM texty WHERE nadpis = '" . mysql_real_escape_string($_GET['page']) . "'");
                while ($link = mysqli_fetch_array($data))
                    {
                        echo $link ['nadpis'];
                    }
               }
 
?>
panther
Profil
Holda:
Trošku mě to mate, jelikož v php nejsem tak pokročilí.
tak si nastuduj zaklady syntaxe.

SELECT text [, id]
pokud potrebujes jen text, bude tam jen select text from, pokud potrebujes i dalsi sloupce, vyjmenuj je vsechny oddelene carkou (nebo pouzij *). Podivat se, jak vypada zakladni syntaxe SELECTu do databaze zvladne i uplny zacatecnik, ktery neni abnormalne lenivy.

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