ugrás a tartalomhoz

Lapozás egyszerűen!

hunge · 2005. Nov. 27. (V), 18.42
Üdv néktek!

Elég sokat vesződtem a lapozás megvalósításával így úgy gondoltam, hogy rászánom azt az órát ameddig az tart hogy ide leírjam, más hozzám hasonló kezdők boldogulását megkönnyítendő. Amit leírok egy példa ami bemutatja az elgondolást. Mivel a script ami írtam közel 200 sor így átírom lerövíditve. Szóval Legyen egy zöldség táblánánk amiből táblázatba szeretnénk megjeleníteni a zöldéségeket természesetesen úgy, hogy a használó eldönthesse hogy milyen paraméter szeriniti sorba rendezést akar.Nohát akkor lássuk a kódot:
  1. <?php  
  2.     $Nev=$_SESSION['user'];//felhasználó neve és jelszava  
  3.     $Kod=$_SESSION['Kod'];  
  4.   
  5.     $hogyan=azon; //alap értelmezett rendezések hogy első futásnál  
  6.     $sor=asc;//is megjelenítse az itt megadottak szerint  
  7.     $tol=0;  
  8.               
  9.     if ($_POST[megnez]=="igen"){ //a felhasználó már beküldte az ürlapot akkor az ő  
  10.     $hogyan=$_POST['Rendezo'];//álltal megadottak szerint rendezünk  
  11.     $sor=$_POST['Sorozo'];  
  12.     $tol=$_POST['OldalValaszt'];        
  13.     }   
  14.       
  15.     function tablamegj(){  
  16.         global $Nev;  
  17.         global $Kod;    //a global utasítás azért kell mert nélküle nem érnénk el a hatókörön   
  18.         global $hogyan// kívüli változókat  
  19.         global $sor;  
  20.         global $tol;  
  21.                                   
  22.         $kapcs=Mysql_connect("localhost",$Nev,$Kod)or die(mysql_error());  
  23.         mysql_select_db("zoldseges",$kapcs)or die(mysql_error());  
  24.         $Zoldseglekerd"Select * from Zoldseg order by $hogyan $sor Limit $tol,10";          
  25.   
  26.             $Zoldsegeredm=mysql_query($Zoldseglekerdor die(mysql_error()); //lekérdezzük a   
  27.         //zöldségeket és az eredményt az eredmény változóba rakjuk   
  28.   
  29.         //a fejléc létrehozása  
  30.             $temalista = "            
  31.         <div id='zoldseges css osztaly'>   
  32.         <tr>        
  33.         <th class'Tablazatfejlec'>Azonosító</th>  
  34.         <th class'Tablazatfejlec'>Zöldség név</th>  
  35.         <th class'Tablazatfejlec'>Zöldség ár</th>  
  36.         <th class'Tablazatfejlec'>Rendelkezése áll menny  
  37.         </th>  
  38.         ";  
  39.         //a táblázat sorainak generálása az eredmény alapján          
  40.         while ($tema_info = mysql_fetch_array($Zoldsegeredm)){  
  41.                 $Zazon$tema_info['Zazon'];  
  42.                 $ZNev$tema_info['ZNev'];  
  43.                 $Zar$tema_info['Zar'];  
  44.                 $ZMeny$tema_info['ZMeny'];  
  45.                   
  46.                 $temalista .= "  
  47.                 <tr>  
  48.                 <td>$Zazon</td>  
  49.                 <td>$ZNev</td>  
  50.                 <td>$Zar</td>  
  51.                 <td>$ZMeny</td>  
  52.                 </tr>";  
  53.         }//while vége     
  54.         $temalista .= "</table> </div>";  
  55.         return $temalista//visza adjuk a témálista függvény eredményét a kész táblázatot  
  56.      }//function tablamegj vége ?>  
  1. <?php  
  2. function lapozo(){  
  3.         $menu="Oldal Választó: <select name='OldalValaszt' size='3'>";          
  4.         $nav=0;  
  5.         $minnav=0;  
  6.         global $Nev;  
  7.         global $Kod//kapcsolodunk az adatbázishoz mint korábban de most más a lekérdezésünk  
  8. //mivel az elemek számát akarjuk megtudni   
  9.         $kapcs=Mysql_connect("localhost",$Nev,$Kod)or die(mysql_error());  
  10.         mysql_select_db("zoldseges",$kapcs)or die(mysql_error());  
  11.         $szam"Select * from Zoldseg";  
  12.         $szameredm=mysql_query($szamor die(mysql_error());  
  13.         $elemszam= mysql_num_rows($szameredm)or die(mysql_error());  
  14.         //a ciklus select elemet tölti fel a mysqltől kapott elemszamig   
  15.         while ($nav<= $elemszam){  
  16.                 $nav=$nav+10;   
  17. // a léptetésre szolgál  
  18.                 $navvalue=$nav-10;   
  19.  // a select elem értéke ugyanis a limit ettől az értéktől a  
  20. // második számmal jelzett értékig működik. pl: limit 20 10  
  21. // akkor 20,21,22...30 lesz. Ezt használjuk ki a $tol-lal.  
  22.                 $minnav=$nav-9;   
  23. //megjeleníténél a kisebb elem  
  24.                 if ($nav+1>$elemszam){   
  25. //ha a szám nagyobb lenne mint az elem szám akkor   
  26. //ide be lép és a végső elem = az elemszámmal vagyis ha 56 elmünk  
  27. //van akkor nem 51-60 lesz a select ben hanem 51-56   
  28.                 $nav=$nav-9;   
  29.                 $minnav=$elemszam;$menu.="<option value=$nav>$nav - $minnav  </option>"break;  
  30.                 }  
  31.                 $menu.="<option value=$navvalue>$minnav - $nav</option>";                                                             
  32.         }  
  33. $menu .="</select>";    
  34. return $menu;  
  35. //lapozo fuggveny vege értékek viszadása.  
  36. }  
  37. ?>  
  38. saját  
  39. .H  
  40. .T   (menű)  
  41. .M   (képek)   
  42. .L   (stb)  
  43. .  
  44. .K  
  45. .ó  
  46. .d  
  47.   
  48. <form action='<?php echo $_SERVER[PHP_SELF]?>' method='post'>  
  49.         Rendezés:  
  50.         <select name='Rendezo' size='2'>  
  51.         <option value='ZNev'selected="selected">Zöldség név szerint</option>          
  52.         <option value='Zazon'>Azonosító szerint</option>  
  53.         <option value='Zar'>Zöldség ár szerint</option>  
  54.         //stb     
  55.         </select>   
  56.   
  57.         Sorrend:  
  58.         <select name='Sorozo' size='2'>  
  59.         <option value='asc' selected="selected">normál sorrend</option>  
  60.         <option value='desc'>fordított sorrend</option>  
  61.         </select>  
  62.               
  63.         <?php print lapozo();?>         
  64.         <input  type='submit' name='ok' value='Rajta!' size='20'>  
  65.         <input type='hidden' name='megnez' value='igen'>   
  66.           
  67.         </form>         
  68. <?php  
  69. if ($sor==asc){$modja=Normál;}  
  70. if ($sor==desc){$modja=Fordított;}  
  71.   
  72. print "<i>A rendezés típusa:</i> <strong>$hogyan</strong> <i>Módja:</i> <strong>$modja </strong> ";    
  73. print tablamegj();  
  74. ?>  
Ez a kód egy "rövidített" változat sajátomból a könnyebb érthetőség véget,nem néztem át pláne nem futattam , ezért elképzelhető, hogy került bele hiba de az elv működik! Megaztán amúgy se a konkrét paramétereket használnátok fel (hanem az elvet), kivéve persze aki zöldséges bolt adatbázis tervez készíteni... :-)

Korlátok: A 3. php álltal generált paramétert kézzel kell kiválasztani.Ott jelenformába nem működik a selected (vagy ha még is beírjátok akkor minidig az utolsó elötti 10es elemszámot választja ki) De ez egy "if első 10 érték, akkor selected beszurása", feltétellel kiküszöbölhető.Hasonlóan az ifszám nagyobb mint összelem feltételhez.
Továbbá Kiegészíthető a lapozás mértékének változtatásával.
De erre most nem jutot időm.


Hát ennyi. Remélem lesz akinek segítek vele.


Kérdés az expertekhez: hogy tudok értéket átadni 2 függvény között? Arra gondolok hogy a táblamegj függvénybe már kapcsolódok az adatbázishoz mivel ott kérem le a neveket, akkor ugyanott megírhatnám a darabszám lekérdezést is feltéve ha tudnám hogy az ott kapott darabszámot hogy érem el a 2. függvénybe.(akkor nem kéne 2* kapcsolódni az adatbázishoz) Tud valaki ebbe segíteni?
 
1

Nem kell ketszer csatlakozni...

Grandmaster · 2005. Nov. 27. (V), 22.01
Miert kellene ketszer csatlakozni?

Idezet a manualbol:
"Ha a kapcsolatazonosító nincs megadva, akkor az utólsó mysql_connect()-el megnyitott kapcsolatot használja. Ha nem talál semmilyen kapcsolatot, megpróbál létrehozni egyet úgy, mintha a mysql_connect() paraméterek nélkül lett volna meghívva. Ha esetleg semmilyen kapcsolatot nem talál és nem is sikerül létrehoznia, akkor egy E_WARNING szintű figyelmeztetés generálódik."

A kapcsolatazonosito a query fuggveny masodik parametere.

Egyebkent ez a lapozo kod tobb sebbol is verzik. Pl: globalis valtozok tomkelege, "SELECT COUNT(*) AS darab FROM Zoldseg" sokkal jobb lekerdezes, etc.
2

Javítsuk!

hunge · 2005. Nov. 28. (H), 09.24
Ebbe biztos voltam, ugyanis csak párhete kezdtem el phpzni (programozni) és ezt a kódot is _kezdőként_ 1.5 napig írtam, namost én úgy gondoltam, hogy ez nem egy szép de viszont működő kód és leírom ide hátha idevetődik egy (hozzám hasonló) kezdő akkor ne kelljen neki ezzel molyolnia hanem csak átír pár mezőt és van egy nagyon alap de működő kódja. Namost a profik nyilván valami jobb megoldás jutna eszükbe és teljesen biztos vagyok hogy jobban is írnák meg de ez a hozzászólás nem nekik szól!

Különben Nem várok el se tapsikolást se semmi hasonlót, tisztán jó szándékból írtam, nem kevés időt rászánva , de azt szeretném, hogy ha hiba van benne (már pedig van, lásd első soromat) akkor nem egy üres "több sebből vérzik" frázissal válaszolod meg hanem akkor javitsuk ki együtt! pl: ne használj globális változót hanem használd ezt "...kód..." stb. Hasonlóan a lekérdezésjavításához...

u.i: a manual ezen részét még nem olvastam köszönöm hogy felhívtad rá a figyelmemet.

Köszönöm
Üdvözlettel Hunge
3

Nem allt szandekomban

Grandmaster · 2005. Nov. 28. (H), 11.23
Elnezest Hunge, nem azert szoltam, mert mindenaron kotozkodni szerettem volna, csupan arra felhivni a figyelmet, hogy erdemes meg atnezni a kodot. Kijavitassal meg szerintem ne itt foglalkozzunk, ha kerdesed van keress meg az elerhetosegeim valamelyiken! Szivesen segitek.

Ui: a programozas alapjai I. tanarom mindig azt mondta, hogy az nem eleg, ha egy programkod mukodik, helyesnek is lenni kell. :)
4

Kérés elfogadva.

hunge · 2005. Nov. 28. (H), 13.01
Én pedig köszönöm a segítségedet!

Ha szükségem lesz rá élni fogok vele.

-könyen lehet hogy hamarosan írok mivel van egy feletébb bosszantó és "szűnni nem akaró" mkdir() függv problémám. De egyenlőre még szenvedek vele magam-

Üdv hunge