Autor Zpráva
Pavel Vodnář
Profil *
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
SELECT * FROM inzeraty WHERE IDzadavatele = 14
jenikkozak
Profil
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 *
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
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
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
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
petr 6:
Pravděpodobně potřebuješ
$nadpis=$vysledekSql["nadpis"];
Nepotřebuje, používá mysql_fetch_object.
petr 6
Profil
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
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
"proč echo $nadpis; nevypisuje nic?"
To PHPko je rozbity no ;) Napiš to raději třeba v Ruby nebo .NETu, aspoň bude pokoj...
Pavel Vodnář
Profil *
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č?

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