Autor | Zpráva | ||
---|---|---|---|
Pavel Vodnář Profil * |
#1 · Zasláno: 17. 2. 2011, 12:40:28
Dobrý den, potřebuji nejprve poradit jakým zbůsobem udělat výpis inzerátu zadaných jedním zadavatelem? Děkuji
|
||
xmark Profil |
#2 · Zasláno: 17. 2. 2011, 12:45:03
SELECT * FROM inzeraty WHERE IDzadavatele = 14 |
||
jenikkozak Profil |
#3 · Zasláno: 17. 2. 2011, 12:48:01
Pavel Vodnář:
Kdy si konečně o tom něco přečteš? Tady máš odkaz, na ten klikni, zobrazí se ti seznam článků, začni tím prvním tak, že si jej otevřeš a přečteš. Až jej pochopíš, přejdeš k dalšímu. Až dojdeš na konec seriálu, dojde ti, že se tu ptáš na banální věci. |
||
Pavel Vodnář Profil * |
#4 · Zasláno: 17. 2. 2011, 13:12:55
vytvořil jsem tento kód:
define ("ON_PAGE", 10); if(!isset($_GET["page"]) || !is_numeric($_GET["page"]) ) $page = 1; else $page = $_GET["page"]; $by = (ON_PAGE * ($page - 1)); $vysledekSql = mysql_query("SELECT id_inzeratu, nadpis, text, datum, zadavatel FROM inzeraty WHERE zadavatel = '".$_SESSION["loggeduser"]."' ORDER BY id_inzeratu DESC LIMIT ".ON_PAGE." OFFSET " . $by); if(mysql_num_rows($vysledekSql) > 0) { $nadpis=$vysledekSql-> nadpis; echo $nadpis; } proč echo $nadpis; nevypisuje nic? |
||
panther Profil |
#5 · Zasláno: 17. 2. 2011, 13:15:04
Pavel Vodnář:
přečti si co vrací mysql_query a pochopíš. Snad. |
||
Pavel Vodnář Profil * |
panther:
Poupravim to tedy takto: define ("ON_PAGE", 10); if(!isset($_GET["page"]) || !is_numeric($_GET["page"]) ) $page = 1; else $page = $_GET["page"]; $by = (ON_PAGE * ($page - 1)); $vysledekSql = mysql_query("SELECT id_inzeratu, nadpis, text, datum, zadavatel FROM inzeraty WHERE zadavatel = '".$_SESSION["loggeduser"]."' ORDER BY id_inzeratu DESC LIMIT ".ON_PAGE." OFFSET " . $by); if(mysql_num_rows($vysledekSql) > 0) { while($vysledekSql = mysql_fetch_object($vysledekSql)){ $nadpis=$vysledekSql-> nadpis; echo $nadpis; } } ale stejně mi to nevypíše nic, proč? |
||
xmark Profil |
#7 · Zasláno: 17. 2. 2011, 13:59:16 · Upravil/a: xmark
Pavel Vodnář:
Možná ti ještě nikdo neporadil tohle: To, že ti něco nefunguje, má příčinu buď v php nebo sql dotazu. Používej pro výpis nějakou stabilní konstrukci, kterou budeš mít vyzkoušenou a nebudeš o ní muset přemýšlet. Třeba já jsem tak líný, že si nepamatuju ani název funkce mysql_query, ani ty další a naprosto tupě a bez přemýšlení to sám od sebe kopíruju. Pokud ti stránka nic nevypíše, vypiš si sql dotaz pomocí php (prostě to sestavíš jako text v proměnné a použiješ echo) a jestli v něm už v ten moment neuvidíš nějakou banální chybu typu chybějící číslo nebo neuzavřené uvozovky, zkopíruj si to do phpmyadmina. Pak můžou nastat tři možnosti. 1. uvidíš, že dotaz jako takový funguje -> pak je chyba někde v php, hledáš, najdeš, opravíš, příště konstrukci zkopíruješ, viz nahoře můj postup. 2. phpmyadmin ti nahlásí chybu, kterou si přeložíš a na jejím základě v php opravíš SQL dotaz. 3. chyba žádná nahlášena není a prostě jen nejsou vrácena data. Jestli pak máš pocit, žes nějaká data dostat měl, zřejmě jsi sestavil dotaz syntakticky správně, ale logicky špatně. Opravíš. Ještě k té třetí možnosti (kterou zřejmě teď řešíš) bych dodal, že je nutné rozlišit, jestli se dotaz opravdu provedl a nic nevrátil, nebo jestli byl díky nějakému if nebo něčemu v php prostě přeskočen. I s tím ti pomůže to výše zmíněné echo toho dotazu, které jsem zmínil nahoře. Dávej ho bezprostředně nad to místo, kde ten dotaz provádíš. Když se vypíše, máš jistotu, že ho php z nějakého důvodu neobešlo. To všechno předpokládá jakousi iniciativu a snahu prakticky uvažovat. Snaž se o to. |
||
petr 6 Profil |
#8 · Zasláno: 17. 2. 2011, 14:16:19
Pravděpodobně potřebuješ
$nadpis=$vysledekSql["nadpis"]; (což by ses mimochodem dozvěděl přečtením první kapitoly k jakémukoli tutoriálu k SQL) Pokud ti to stejně nic nevypíše, tak NEzakládej další dotaz se stejným kódem, ale podívej se, zda: 1. tvá tabulka obsahuje tebou vybírané sloupce 2. proměnná $_SESSION["loggeduser"] má nějakou hodnotu 3. v databázi máš alespoň jeden řádek, kde je ve sloupci zadavatel uvedena stejná hodnota jako v $_SESSION["loggeduser"] |
||
Tori Profil |
#9 · Zasláno: 17. 2. 2011, 14:28:01
petr 6:
> Pravděpodobně potřebuješ > $nadpis=$vysledekSql["nadpis"]; Nepotřebuje, používá mysql_fetch_object. |
||
petr 6 Profil |
#10 · Zasláno: 17. 2. 2011, 14:39:01
Pardon, nevšiml jsem si, nicméně stále platí body 1, 2 a 3 a přidal bych ještě bod
4. Podívej se, zda je v proměnné $by číslo menší, než je počet řádků, které mají ve sloupci zadavatel uvedenu stejnou hodnotu jako v $_SESSION["loggeduser"] |
||
panther Profil |
#11 · Zasláno: 17. 2. 2011, 14:54:05
Pavel Vodnář:
zapni si vypisování chybových hlášek, tohle by ti mělo hlásit varování ohledně argumentu fce mysql_fetch_assoc na ř. 16, pokud se nepletu. Na témže řádku je i chyba, proč to nevypisuje nic, resp. první řádek by to vypsat asi mělo. Víc k tomu říkat nebudu, přemýšlej. Informací máš již dostatek. |
||
Lamicz Profil |
#12 · Zasláno: 17. 2. 2011, 16:05:35
"proč echo $nadpis; nevypisuje nic?"
To PHPko je rozbity no ;) Napiš to raději třeba v Ruby nebo .NETu, aspoň bude pokoj... |
||
Časová prodleva: 4 dny
|
|||
Pavel Vodnář Profil * |
#13 · Zasláno: 21. 2. 2011, 10:18:44
echo $_SESSION["loggeduser"]; mi vypíše hodnotu, která je stejná jako nějaká z hodnot v tabulce s řádkem zadavatel.
echo $by; má hodnotu 0 echo $nadpis; vypíše první řádek tabulky, chyba je na řádku 16 z #1 - ale proč? |
||
Časová prodleva: 13 let
|
0