Autor | Zpráva | ||
---|---|---|---|
Luccy Profil * |
#1 · Zasláno: 13. 7. 2011, 01:50:42
ahojky, přátelé
mám takový problémek - jak mám zapsat cestu stránkování když url podmiňují 2 faktory 1. faktor počet inzerátů dané kategorie 2. faktor kraj respektive potřebovala by jsem to zapsat nějak takto: if($page > 1) { echo "<a href='detail.php?region='.$regionselect.'?page=1'> << </a>"; } nebo jak se to zapisuje? aby výsledné url vypsalo např nějak takto: detail.php?region=4?page=1 respektive jak jinak udělat aby mi to ve stránkování vypisovalo podle hodnoty ze <select> a zároveň i podle page=? |
||
o_O Profil |
#2 · Zasláno: 13. 7. 2011, 06:37:28
Luccy:
„např nějak takto“ Otazník se píše jen za URL souboru, mezi různými hodnotami (region, page) se píše & (&). Nějak nechápu Váš dotaz. O co přesně Vám jde (čeho chcete dosáhnout)? |
||
Luccy Profil * |
#3 · Zasláno: 13. 7. 2011, 08:41:31
Chtěla bby jsem dosáhnout aby mi to stránkovalo v kategorii např automobily i v případě že uživatel vybere např kraj vysočinu, udělala jsem to takto:
<a href='detail.php?region=".$regionselect."?&page=1'> jak to správně zapsat je příkaz <a href='detail.php?region=".$regionselect."?&page=1'> |
||
joe Profil |
#4 · Zasláno: 13. 7. 2011, 08:56:17
Odkaz máš zapsaný dobře :) Tvůj problém spočívá v tom, že to nemáš vyřešené ve skriptu, který se o to stránkování stará - tedy tam musíš zohledňovat danou kategorii.
Tzn. že někde tam bude dotaz (pravděpodobně do databáze) - SELECT .. FROM .. LIMIT .. , .. A pokud budeš mít vyplněný parametr v URL adrese isset($_GET['region']) SELECT .. FROM .. WHERE region = mysql_real_escape_string($_GET['region']) LIMIT .. , .. |
||
Anonymní Profil * |
#5 · Zasláno: 13. 7. 2011, 09:18:12
joe:
„Odkaz máš zapsaný dobře :)“ <a href='detail.php?region=".$regionselect."?&page=1'> Nemá to být bez toho druhého otazníku ? |
||
joe Profil |
#6 · Zasláno: 13. 7. 2011, 09:20:59
Anonymní:
Má, toho jsem si nevšiml :), je to jak píše o_O |
||
Luccy Profil * |
#7 · Zasláno: 13. 7. 2011, 12:15:16
no pořád s tím mám problémek
dotaz sem vyzkousela napsat natvrdo takto: $articles = mysql_query("SELECT id, kategorie, region, nadpis, text, foto, email, telefon, datum, cas FROM inzeraty WHERE kategorie ='1' && region ='13' ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET " . $by); první stránka detail.php se vypíše jak má - stránkování napočítá přesný počet stránek ale jakmile kliknu na druhou stránku která vypadá takto (2 >): /detail.php?region=13&page=2 |
||
joe Profil |
#8 · Zasláno: 13. 7. 2011, 12:25:09
WHERE kategorie = 1 && region =13 Čísla piš bez apostrofů. A kde je chyba... Zkus si přímo ten dotaz vložit třeba do phpMyAdmin a nebo do kódu za ten řádek napiš var_dump($articles); co to vypíše. Máš v databázi data, která tomu dotazu odpovídají? |
||
Luccy Profil * |
#9 · Zasláno: 13. 7. 2011, 12:51:57
ano v db mám data která dotazu odpovídají, selectuje to podle kraju co vybírám ale nikdy nevypíše tu druhou stránku mám to teď zapsáno takto:
WHERE kategorie =1 && region=".$regionselect." ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET " . $by); var_dump($articles); vypíše správně resource(4) of type (mysql result) což mi sedí i podle databáze - nastavila sem stránkování po 3 produktách, takže na 2 stránku zbývá jeden produkt ale když kliknu na odkaz druhé stránky nevypíše se nic, co může být ještě špatně? díky |
||
Luccy Profil * |
#10 · Zasláno: 13. 7. 2011, 14:48:17
Respektive proč druhá stránka nic nezobrazí?
|
||
okolojdouci Profil * |
#11 · Zasláno: 13. 7. 2011, 15:19:22
Luccy:
„když kliknu na odkaz druhé stránky nevypíše se nic, co může být ještě špatně?“ Nech si vypsat ten dotaz. Jestli budeš mít pocit, že je v pořádku, postupuj podle #8, jestli to nevyřešíš, napiš ten dotaz sem. Přímo déotaz, který dáváš databázi. |
||
Luccy Profil * |
#12 · Zasláno: 13. 7. 2011, 15:37:39
db dávám dotaz:
$articles = mysql_query("SELECT id, kategorie, region, nadpis, text, foto, email, telefon, datum, cas FROM inzeraty WHERE region=$regionselecte && kategorie=1 ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET " . $by); var_dump($articles); první stránka zobrazí vše dobře druhá nic, proč? |
||
joe Profil |
#13 · Zasláno: 13. 7. 2011, 15:47:17
Pošli sem raději celý kód... z tohohle se moc vyčíst nedá. Mimochodem v tom dotazu píšeš $regionselecte (e - na konci)
|
||
Luccy Profil * |
#14 · Zasláno: 13. 7. 2011, 16:00:28
vkladam kod sem už pomalinku beznadějna:
<?php $submit = $_POST['submit']; $regionselect = $_POST['regionselect']; $connect = mysql_connect ("","","") or die("Nepodařilo se připojit k databázi"); mysql_select_db ("databaze"); if ($submit) { $regionselecte = $_POST['regionselect']; echo $regionselect; //////////////// stránkování inzerátů $regionselect = $_POST['regionselect']; $max = mysql_result(mysql_query("SELECT COUNT(*) FROM inzeraty WHERE region=$regionselect && kategorie=1 "), 0); echo $max ; //echo $_GET['regionselect']; define ("ON_PAGE", 2); //56 if(!isset($_GET["page"]) || !is_numeric($_GET["page"]) ) $page = 1; else $page = $_GET["page"]; $by = (ON_PAGE * ($page - 1)); $articles = mysql_query("SELECT id, kategorie, region, nadpis, text, foto, email, telefon, datum, cas FROM inzeraty WHERE region=$regionselect && kategorie=1 ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET " . $by); var_dump($articles); echo mysql_error(); if(mysql_num_rows($articles) > 0) { while($article = mysql_fetch_object($articles)){ // řádek 87 //region = mysql_real_escape_string($_GET['region']) //region='".$regionselect."' $vybernadpis=$article->nadpis; $vybertext=$article->text; $vyberkategorie=$article->kategorie; $vyberid=$article->id; $vyberfoto=$article->foto; $vyberemail=$article->email; $vybertelefon=$article->telefon; $datum=$article->datum; $cas=$article->cas; $vyberdatum=$article->datum; $datumtotime = strtotime($datum); $novydatum = date ("j. n. Y", $datumtotime); $obr='<img src="http://.cz/fotkaminiatura/'.$vyberfoto.'">'; $adresa='<a href="detail.php?id='.$vyberid.'">'.$vybernadpis.'</a>'; print "<div style='background:#f9f9f9;width:970px; float:left;text-align:justify; margin-top:20px; padding:5px;'><div style='float:left; width:100px; height:105px;'>".$obr."</div> <div style='color:#434244;padding:3px;width:965px; '> <div style='text-color:blue;'>".$adresa." <small> <div style='background::#434244; float:right; font-family: Verdana, Arial, Courier, sans-serif; font-size:12pt; color:blue;' > ".$novydatum." v ".$cas."</div> <br></div>".$vybertext."</small></div><BR><BR><div style='float:right; font-family: Verdana, Arial, Courier, sans-serif; font-size:10pt; '><a href='#'>Detail inzerátu</a> | <a href='#'>Odpoveď</a></div> </div>"; print "<div style='background:white; height:1px;'></div>"; print "<div style='height:20px; background:white;'></div>"; echo mysql_error(); if ($vyberfoto!='') { $obr='<img src="http://.cz/fotkaminiatura/'.$vyberfoto.'">';} else {$obr='<img src="http://.cz/images/picture.png">';} } } print "<div style='text-align:center; padding:20px;'>"; if(ON_PAGE < $max){ // NA ZAČÁTEK // pokud nejsme na začátku, udělat odkaz na začátek... if($page > 1) { echo "<a href='detail.php?page=1'> << </a>"; } // PŘEDCHOZÍ // pokud nejsme na začátku, zobrazit odkaz na předchozí a cyklus na předchozí if($page > 1) { echo "<a href='detail.php?region='&page=".($page-1)."'> < </a>"; // PŘEDCHOZÍ - CYKLUS // vypíše 3 předchozí stránky for($i = 4; $i > 0; $i--) { if(($page - $i) >= 1){ echo "<a href='detail.php?page=".($page-$i)."'> ".($page-$i)." </a>"; } } } if(($page - $i) >= 1) if($page < ($max / ON_PAGE)) { // DALŠÍ - CYKLUS // vypíše 3 následující stránky for($i = 1; $i < 4; $i++) { if(($page + $i) <= ceil($max / ON_PAGE)) { echo "<a href='detail.php?page=".($page+$i)."'> ".($page+$i)." </a>"; } } // další echo "<a href='detail.php?page=".($page+1)."'> > </a>"; } if(($page + $i) <= ceil($max / ON_PAGE)) // KONEC // pokud nejsme na konci, udělat odkaz na konec if($page < ceil($max / ON_PAGE)) { echo "<a href='detail.php?page=".ceil($max / ON_PAGE)."'> >> </a>"; } } echo "<br />"; echo "<br />"; print "</div>"; ////////////////////////////////////////**************strankovani***********************///////////////////// } ?> |
||
Luccy Profil * |
#15 · Zasláno: 13. 7. 2011, 16:01:43
zde je kod php, jak říkám první stránka se zobrazí dobře i se stránkováním ale druhá stránka už neběží - kde je tedy chybka?
|
||
okolojdouci Profil * |
#16 · Zasláno: 13. 7. 2011, 16:03:27
Co je v $regionselect? Jestli to není číslo, chybí ti na ř. 40 apostrofy.
|
||
Luccy Profil * |
#17 · Zasláno: 13. 7. 2011, 16:05:47
v $regionselect je číslo např. - <select><option value="13">Moravskoslezky kraj</option></select> - kde je tedy jinde chybka?
|
||
okolojdouci Profil * |
#18 · Zasláno: 13. 7. 2011, 16:20:29
Luccy:
Nauč se hledat chyby. "nic to nedělá" není žádná informace. Zjisti si, jestli se ten sql dotaz vůbec provede a jestli vrátí nenulový počet záznamů. |
||
Luccy Profil * |
#19 · Zasláno: 13. 7. 2011, 16:25:20
ano SQL dotaz vrátí správný výsledek - počet inzerátů které vyhovují podmínkám v DB, ale nevím proč mi to nechce brát to stránkování - jak mám zjistit u druhé stránky chybu?
už sem bezradná lámu se stím už 2 dny - vidíte tam někde chybku? nakopněte mě prosím.. |
||
joe Profil |
#20 · Zasláno: 13. 7. 2011, 18:05:12 · Upravil/a: joe
Luccy:
echo "<a href='detail.php?region='&page=".($page-1)."'> < </a>"; Tohle je nějaké podivné, máš tam apostrof navíc a nevyplněný parametr region. Já nepíšu apostrofy u atributů v HTML, takže bych to napsal echo '<a href="detail.php?region=' . $regionId . '&page=' . ($page-1) . '"> < </a>'; Ve zdrojovém kódu HTML by pak mělo být vygenerováno <a href="detail.php?region=...&page=..."> < </a> To je jedna věc. Druhá věc je ta, že pokud na ten odkaz klikneš, musíš si z URL vybrat parametry jak page, tak i ten region. Pomocí $_GET. „lámu se stím už 2 dny“ To je výdrž :-) EDIT: Pravděpodobně tam máš nějaký filtrační formulář, takže tu proměnnou s regionem zjišťuješ $regionselect = $_POST['regionselect']; Při stránkování ale používáš metodu GET, takže musíš musíš psát $regionselect = $_GET['region']; (název tak, jak uvádíš v tom generování těch odkazů - tedy 'region' Takže by bylo asi nejlepší před if($submit) na if(!$submit), tam zjistit ten region z GET |
||
Luccy Profil * |
#21 · Zasláno: 13. 7. 2011, 23:37:43
vyzkoušela jsem vše ale marně - když hodím natvrdo takto:
$articles = mysql_query("SELECT id, kategorie, region, nadpis, text, foto, email, telefon, datum, cas FROM inzeraty WHERE region=13 && kategorie=1 ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET " . $by); opět první stránka se zobrazí jak má a druhá nic je to tímto že mám $regionselect = $_POST['regionselect']; misto $_GET['regionselect']; ? to musím mít i <form method="GET">? odkaz je takto: // další echo "<a href='detail.php?region=".$regionselect."&page=".($page+1)."'> > </a>"; ve výsledku se vypíše takto: detail.php?region=13&page=2 jak to tedy dopravit? moc vás prosím pomožte, díky luccy |
||
joe Profil |
#22 · Zasláno: 14. 7. 2011, 00:12:25
Luccy:
Problém je, že neumíš rychle hledat chyby. Udělej tohle: $articles = mysql_query("SELECT id, kategorie, region, nadpis, text, foto, email, telefon, datum, cas FROM inzeraty WHERE region=13 && kategorie=1 ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET " . $by); nahraď $q = "SELECT id, kategorie, region, nadpis, text, foto, email, telefon, datum, cas FROM inzeraty WHERE region=13 && kategorie=1 ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET " . $by; echo $q; $articles = mysql_query($q); Ten vypsaný dotaz zkus pustit na databázi nebo jestli v něm není nějaká chyba. A nebo sem napiš třeba icq, můžu ti s tim pak poradit |
||
Luccy Profil * |
#23 · Zasláno: 14. 7. 2011, 09:23:32
joe:
Když to opravím podle tebe, pracuje to stále stejně - první stránka se načte jak má, vypíše jak má stránkování, když kliknu na druhou stránku nezobrazí se nic, prázdná stránka může to být tím že mám formulář v POST? či kde může být ještě chybka? děkuji |
||
joe Profil |
#24 · Zasláno: 14. 7. 2011, 10:53:25
Asi je chyba jinde, v kódu se takhle moc neorientuju, musel bych si to zkusit. Pokud se ti zobrazuje jenom bílá stránka - někde došlo k chybě, zkus hned za <?php napsat
error_reporting(E_ALL); |
||
Luccy Profil * |
#25 · Zasláno: 14. 7. 2011, 11:21:29
joe:
píše to: Notice: Undefined index: submit .... on line 71 Notice: Undefined index: regionselect ...... on line 72 chyby těchto řádků: $submit = $_POST['submit']; $regionselect = $_POST['regionselect']; ale proč? |
||
shaggy Profil |
#26 · Zasláno: 14. 7. 2011, 11:25:00
Luccy:
Ako vyzerá ten formulár, ktorý odosielaš? Lebo očividne sa v ňom nenachádzajú polia submit a regionselect. |
||
Luccy Profil * |
#27 · Zasláno: 14. 7. 2011, 11:26:00
joe:
Nebo spíše, chyba vypadá tak - že stránka se načte - běží HTML, ale část kde má být PHP tam je bílé místo - co by to mohlo ještě ovlivňovat? |
||
joe Profil |
#28 · Zasláno: 14. 7. 2011, 11:34:46
Luccy:
Nevím jak chceš, aby ti to fungovalo. Zřejmě tam máš nějaký formulář, který když odešleš, tak se ti objeví záznamy a teď u nich chceš mít stránkování (je to tak?) Tzn. že po odeslání formuláře - pravděpodobně metoda POST - čteš data z $_POST. Pokud ale klikneš na odkaz, data už máš teď v URL adrese, tzn. čteš z $_GET, proto to píše ty upozornění. $submit = isset($_POST['submit']) ? $_POST['submit'] : NULL; $regionselect = isset($_POST['regionselect']) ? $_POST['regionselect'] : NULL; Takhle to psát nebude. Jinak není bílá stránka jako bílá stránka... pokud se ti jen nevypisuje něco co chceš od PHP, pak tam máš asi nějakou logickou chybu, když PHP nic nehlásí |
||
joe Profil |
#29 · Zasláno: 14. 7. 2011, 11:39:07
Jo už to vidim, mnt upravim to a pošlu to sem :)
|
||
joe Profil |
#30 · Zasláno: 14. 7. 2011, 11:59:09
Zkus to takhle
<?php $connect = mysql_connect("", "", "") or die("Nepodařilo se připojit k databázi"); mysql_select_db("databaze"); if (isset($_POST['submit'])) { $regionselect = isset($_POST['regionselect']) ? $_POST['regionselect'] : NULL; } else { $regionselect = isset($_GET['regionselect']) ? $_GET['regionselect'] : NULL; } //////////////// stránkování inzerátů define("ON_PAGE", 2); //56 $query = "SELECT COUNT(*) FROM inzeraty WHERE kategorie = 1" . ($regionselect ? ' AND region = ' . intval($regionselect) : ''); $max = mysql_result(mysql_query($query), 0); if (!isset($_GET["page"]) || !is_numeric($_GET["page"])) { $page = 1; } else { $page = (int) $_GET["page"]; } $by = (ON_PAGE * ($page - 1)); $query = "SELECT id, kategorie, region, nadpis, text, foto, email, telefon, datum, cas FROM inzeraty WHERE kategorie = 1" . ($regionselect ? 'region = ' . intval($regionselect) : '') . ' ORDER BY id DESC LIMIT ' . ON_PAGE . ' OFFSET ' . $by; $articles = mysql_query($query); if (mysql_num_rows($articles) > 0) { while ($article = mysql_fetch_object($articles)) { $vybernadpis = $article->nadpis; $vybertext = $article->text; $vyberkategorie = $article->kategorie; $vyberid = $article->id; $vyberfoto = $article->foto; $vyberemail = $article->email; $vybertelefon = $article->telefon; $datum = $article->datum; $cas = $article->cas; $vyberdatum = $article->datum; $datumtotime = strtotime($datum); $novydatum = date("j. n. Y", $datumtotime); $obr = '<img src="http://.cz/fotkaminiatura/' . $vyberfoto . '">'; $adresa = '<a href="detail.php?id=' . $vyberid . '">' . $vybernadpis . '</a>'; print "<div style='background:#f9f9f9;width:970px; float:left;text-align:justify; margin-top:20px; padding:5px;'><div style='float:left; width:100px; height:105px;'>" . $obr . "</div> <div style='color:#434244;padding:3px;width:965px; '> <div style='text-color:blue;'>" . $adresa . " <small> <div style='background::#434244; float:right; font-family: Verdana, Arial, Courier, sans-serif; font-size:12pt; color:blue;' > " . $novydatum . " v " . $cas . "</div> <br></div>" . $vybertext . "</small></div><BR><BR><div style='float:right; font-family: Verdana, Arial, Courier, sans-serif; font-size:10pt; '><a href='#'>Detail inzerátu</a> | <a href='#'>Odpoveď</a></div> </div>"; print "<div style='background:white; height:1px;'></div>"; print "<div style='height:20px; background:white;'></div>"; if ($vyberfoto != '') { $obr = '<img src="http://.cz/fotkaminiatura/' . $vyberfoto . '">'; } else { $obr = '<img src="http://.cz/images/picture.png">'; } } } print "<div style='text-align:center; padding:20px;'>"; if (ON_PAGE < $max) { $url = 'detail.php' . ($regionselect ? '?region=' . $regionselect . '&page=' : '?page='); // NA ZAČÁTEK // pokud nejsme na začátku, udělat odkaz na začátek... if ($page > 1) { echo '<a href="' . $url . '1> << </a>'; } // PŘEDCHOZÍ // pokud nejsme na začátku, zobrazit odkaz na předchozí a cyklus na předchozí if ($page > 1) { echo '<a href="' . $url . ($page - 1) . '"> < </a>'; // PŘEDCHOZÍ - CYKLUS // vypíše 3 předchozí stránky for ($i = 4; $i > 0; $i--) { if (($page - $i) >= 1) { echo '<a href="' . $url . ($page - $i) . '"> ' . ($page - $i) . ' </a>'; } } } if (($page - $i) >= 1) if ($page < ($max / ON_PAGE)) { // DALŠÍ - CYKLUS // vypíše 3 následující stránky for ($i = 1; $i < 4; $i++) { if (($page + $i) <= ceil($max / ON_PAGE)) { echo '<a href="' . $url . ($page + $i) . '"> ' . ($page + $i) . ' </a>'; } } // další echo '<a href="' . $url . ($page + 1) . '"> > </a>'; } if (($page + $i) <= ceil($max / ON_PAGE)) // KONEC // pokud nejsme na konci, udělat odkaz na konec if ($page < ceil($max / ON_PAGE)) { echo '<a href="' . $url . ceil($max / ON_PAGE) . '"> >> </a>'; } } print "</div>"; ////////////////////////////////////////**************strankovani***********************///////////////////// ?> |
||
Časová prodleva: 13 let
|
0