Jump to content
php.lv forumi

While cikls


Morphius

Recommended Posts

Es kā iesācējs uzrāvos uz vienas, it kā, elementāras lietas, bet man pagaidām nesaprotamas un neziāmas. Velos izvadīt preces tabulā, kā par piemēru paņemsim salidzini.lv preču katalogu. Tur ir redzams ka tabula sastāv no 3 rindām un 5 kolonnām. Man datubāzē pieņemsim ir 22 preces. Respektīvi pirmajā lapā 15 un otrajā 7. Es māku cilklā izvadīt preces, kuras tiek viena aiz otras pakārtotas(kā komentāri), nevis smuki tabulāri... Lūgums, izvadiet man kādu elementāru piemēru kā man ar ciklu palīdzību aizpildīt tabulu ar 15 vai 7 precēm! Savādāk bez piemēriem nespēju iebraukt šajā zinātnē...vai varbūt te ar cikliem nav nekāda saistība?!

Link to comment
Share on other sites

Viens no variantiem varētu būt ar DIV'u palīdzību, liekot ciklā. Ar tabulām šķiet nebūs vairs tik vienkārša padarīšana.

//datu izvads
echo '
<div style="float:left;width:100px;">saturs</div>
';

Tas, cik vienā rindā saies divi, atkarīgs no pārējā lapas platuma, pielāgo, kamēr ir nepieciešamais.

Edited by kechums
Link to comment
Share on other sites

Viens no variantiem varētu būt ar DIV'u palīdzību, liekot ciklā. Ar tabulām šķiet nebūs vairs tik vienkārša padarīšana.

 

Ok, bet kā tas izskatās uz paīra ar visu ciklu? Cik saprotu, Tu man parādīji kā nostilēt <div> tegu?! ;)

 

Ar tabulām es mēģināju darīt sekojoši:

  • Izveidoju tabulu
  • Katrā šūniņā ieliku do...while ciklu ar limit=1
  • izvadīju
  • un aplauzos

 

Respektīvi vienā šūnā izvadījās prece, bet pārējās palika tukšas, kaut gan tajās bija ierakstīta cikla funkcija! Kāpēc? Varbūt ir kāda cita funkcija, kas pārbauda vai ir jau izvadīts kaut kas un tad tiek izvadīts nākamais ieraksts?

Edited by Morphius
Link to comment
Share on other sites

Padomāt tikai vajag :)

 

Ar div elementiem būs vienkāršāk aiz tāda iemesla, ka nav jāseko līdzi izvadāmo ierakstu skaitam, atliek css'ā sarakstīt attiecīgās vērtības attiecīgajam elementam. Piemēram, ja tu izvadīsi vienu elementu pēc otra un pēc css noteikumiem tam ir noteikts platums, tad loģiski, ka tas automātiski pārleks jaunā rindā.

Ja nu tomēr tabula, tad jāizdomā, ko jāizvada ciklam. Loģiski, katram elementam nebūs vajadzīga jauna tabula, tātad <table> tagiem jāatrodas ārpus cikla. Arī <tr> tagus nav jāizvada līdz ar katru ierakstu, taču ik pa noteiktam ierakstu skaitam gan. Tad nu jāsāk lietot izdoma.

$i = 0;
echo '<table><tr>';
while(){
 echo '<td> </td>';
 if(++$i%5==0){ // ja šī ieraksta kārtas numurs dalās ar 5 bez atlikuma, tad taisam jaunu rindu
echo '</tr><tr>';
 }
}
echo '</tr></table>'

Link to comment
Share on other sites

Padomāt tikai vajag :)

 

Ar div elementiem būs vienkāršāk aiz tāda iemesla, ka nav jāseko līdzi izvadāmo ierakstu skaitam, atliek css'ā sarakstīt attiecīgās vērtības attiecīgajam elementam. Piemēram, ja tu izvadīsi vienu elementu pēc otra un pēc css noteikumiem tam ir noteikts platums, tad loģiski, ka tas automātiski pārleks jaunā rindā.

Ja nu tomēr tabula, tad jāizdomā, ko jāizvada ciklam. Loģiski, katram elementam nebūs vajadzīga jauna tabula, tātad <table> tagiem jāatrodas ārpus cikla. Arī <tr> tagus nav jāizvada līdz ar katru ierakstu, taču ik pa noteiktam ierakstu skaitam gan. Tad nu jāsāk lietot izdoma.

$i = 0;
echo '<table><tr>';
while(){
 echo '<td> </td>';
 if(++$i%5==0){ // ja šī ieraksta kārtas numurs dalās ar 5 bez atlikuma, tad taisam jaunu rindu
echo '</tr><tr>';
 }
}
echo '</tr></table>'

 

Nu ja...ar <div> ir pavisam vienkārši :)

 

Bet ja atgriežamies pie tabulām... ja piemēram sataisa <table> ar 1 rindu u 5-cām kolonnām, tad ar ciklu ieliekam katrā šūnā pa vēl vienai tabulai jau ar produkta saturu?! Tikai jautājums kā tas izskatās koda veidolā? Es jau minēju ka meģināju cikliski izvadīt katrā šūnā pa produktam..bet man kaut kā nesanāk tas pasākums...

Link to comment
Share on other sites

Es tev pat piemēru uzrakstīju kā izskatīsies kods, kad būs tabula ar 5 kolonām. Ciklā, ik pa 5 ierakstiem, tu veidosi jaunu rindu, tas arī viss.

 

Es sapratu ka tiks pievienota jauna rinda...jautaajums bija kaa tajaa pirmajaa rindaa izvadiit produktus katraa atsevishkaa shuunaa bez <div> tegiem? Kaa tas izskataas koda veidaa? Es jau mineeju ka katraa shunaa ieliku while ciklu un ieksh db kverija uzliku limit=1...rezultaats bija taads ka tika izvadiits viens produkts pirmajaa shuunaa, bet paareejaas 4 bija tukshas!

 

BTW tavam piemeeram ir kluuda(3. rindaa)...vari izlabot...es ilgi shtukoju, bet taa arii nepieleca kaa to var izlabot!

Edited by Morphius
Link to comment
Share on other sites

while starp iekavām vajag izteiksmi ibio ... tu tak teici ka rindiņā no db maaki izvadiit datus ....

 

Nevajag tachu trakot...kas tev liekas elementaari man iespejam liekas nepaveicami, tapec arii prasu lai paradat kaa tas kodaa izskataas, lai vaardos nepaarprastu! Taa "ibio" vietaa buutu labaak ielicis realu piemeru :)

 

Tu kad autinjam atver kapotu, uzreiz vari pateikt ka iespeejams varsti klaudz, vai arii pec motora darbibas momentali nosaki cik precizi ir noreguleta aizdedze, vai par velu vai agru, vai varbut siksna ir parlekusi pa zobu? :) Vel pasaki...tip kursh tad to nemak ;) Cerams domu gajiens ir skaidrs ;)

Edited by Morphius
Link to comment
Share on other sites

domu gājiens ir skaidrs un ja paceļot kapotu vārsti klab, tad to es protu noteikt (to taču dzird)

un ja aizdedze nav riktīga arī to protu pateikt ...

 

būtu labāk paskatījies savā kodā, kurā tu izvadi tos datus rindiņā. ja tavā kodā nav while tad varbūt ir foreach ?

vai paskaties manuāli kā izvada no db datus. Tur arī manuāli ir komentāri. palasi tos arī.

 

vai arī parādi kas tavā kodā nedarbojas ..

Edited by Klez
Link to comment
Share on other sites

Низкий поклон jums kungi, beidzot pieleca :D

 

ja tavā kodā nav while tad varbūt ir foreach ?

 

Manā kodā ir while...tik daudz jau apjēdzu! Neiet runa par galīgu stulbumu, iet runa par to ka esmu sācis kodēt 1.5 mēnesi atpakaļ un grūti to domāšanu virziīt pareizajā virzienā! Piemēram "kechums" ieteica ar <div> tegiem un es nekādīgi nevarēju iebraukt ko viņš ar tiem <div> bija domājis, kamēr cienītais mārcis neizšpļāva sekojošo tekstu:

Piemēram, ja tu izvadīsi vienu elementu pēc otra un pēc css noteikumiem tam ir noteikts platums, tad loģiski, ka tas automātiski pārleks jaunā rindā.

Pēc šī, bilde momentā palika skaidra! :) It kā sīkums, bet...

 

Nu labi, ne par šo ir šis stāsts, turpinam ar iesākto tēmu :D

 

Manā mazajā praksē jau divreiz esmu nonācis pie vienas neskaidrības, ar kuru vēlētos tagad tikt skaidrībā.

 

Izmantojot 'while() {}' netiek izvadīts pirmais ieraksts no DB, bet savukārt 'do {} while();' izvada pilnībā visus ierakstsu...kadēļ tas pliks while tā uzvedas? A?

 

PS

 

Retais prot atšķir trokšņus un vēl jo vairāk spēj noregulēt aizdedzi :D

Link to comment
Share on other sites

Interesanti... Varbūt parādi kā tu izvadi datus lietojot while() ?

 

Palasot while un do-while manuāļus, saprotam, ka while strādā, kamēr nosacījums ir spēkā, bet do-while sākumā dara un tad pārbauda vai nosacījums ir spēkā.

 

Mārci, tas piemērs, ko Tu man te iedevi izvada DB ierakstus, izņemmot pirmo, bet ja izmantoju do...while tad izvada visus!

 

Šāds do...while cikls izvada visus esošos ierakstus iekš DB

do
{
  printf("Šo forumu apskata lietotājs %s", $row["username"]);
}
while($row=mysql_fetch_assoc($result));

 

Gribi teikt ka man vienam gadījās aš 2-vas reizes tāds pārpratums? Nus kungi, kāds būs rezumējums? Ļausiet iesācējam izprast šo pārpratumu?

Edited by Morphius
Link to comment
Share on other sites

Tev tur kaut kas ir līks, rādi sākot ar mysql_query() izpildi.

Tavā gadījumā pirmais ir ieraksts uz ekrāna tiktu izmests "Šo forumu apskata lietotājs ", jo $row nemaz vēl nav definēts.

 

 

 

Shis kods izvada visus ierakstus:

$result=mysql_query("tiripiri");
$row=mysql_fetch_assoc($result);
do
{
  printf("Šo forumu apskata lietotājs %s", $row["username"]);
}
while($row=mysql_fetch_assoc($result));

 

 

Shis kods neizvada pirmo ierakstu!

 

$result=mysql_query("tiripiri");
$row=mysql_fetch_assoc($result);

while($row=mysql_fetch_assoc($result))
{
  printf("Šo forumu apskata lietotājs %s", $row["username"]);
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...