Jump to content
php.lv forumi

While cikls


Morphius

Recommended Posts

Hmm... Jāmācās jāmācās, par cikliem jāmācās. Klasisks jautājums - ar ko atšķiras cikls:

do
{
} while()

no

while()
{
}

 

Pričom te cikli kā tādi, 'mārcis' jau augstāk izskaidroja ar ko atšķiras šie cikli un tik daudz arī es zinu, bet ne ko vairāk! Izskaidro man kāpēc viens koda gabals izvada visus ierakstus, bet tāds pats līdzīgs ne visus?! a? Kāpēc lieka rindiņa "$row=mysql_fetch_assoc($result)", ietekmē uz izvadi? It kā problēma nav būtiska, bet tomēr interesē? Kur ir tas āķis?

 

O, vel viens jautājums, kamdēļ "while($row=mysql_fetch_assoc($result))" un "while(mysql_fetch_assoc($result))" ir tik ļoti atšķirīgi! Es vienreiz nevarēju iebraukt, kāpēc 'while' nevēlas ciklēties...izrādas mainīgo nebiju piemetis! Bet vai tad funkcija bez mainīgā piesaistes nefunkcionē? Man, kā iesācējam, tā ir kārtējā mistika...

Edited by Morphius
Link to comment
Share on other sites

Morphius: tev saku - vai tu zini, ko nozīmē mysql_fetch_assoc funkcija? Tb ko tā dara?

Pateikšu priekšā (bet manuālī arī to vari izlasīt) - tā izvelk vienu rindu no selekta rezultātiem un atgriež no funkcijas.

Tavs pirmais kods bija:

Taču otrs kods bija:

$.. = mysql_fetch..(); // izvelkam pirmo rindu
do
{
// apstrādājam rindu, vispimrs pirmo, tad otro, tad trešo, utt
}
while($.. = mysql_fetch..()); // izvelkam otro, trešo rindu un ciklējamies, kamēr ir rindas

 

Taču otrais kods:

mysql_fetch_..(); // izvelkam vienu rindu

while ($.. = mysql_fetch...()) // izvelka otro, trešo, utt rindu
{
// apstrādājam vispirms otro rindu, tad trešo, utt
}

 

Vai pats neredzi, ka otrs kods nemaz neapstrādā pirmo izvilkto rindu?

 

Par atšķirību starp while ($a = b()) un while (b()) - pirmajā gadījumā funkcijas b() rezultāts piešķiras mainīgajam $a, otrajā nē.

Link to comment
Share on other sites

Kaut ko sapratu, kaut ko nē, bet sapratu pilnībā to ka man vēl daudz jāmācas :D

Cik es cenšos rakāties pa manuāli, rezultātu īpaši nekādu, it sevišķi ja ir kāds nopietnas dabas jautājums...sāk likties ka tas manuālis ir vai nu pieredzējušiem, vai arī tā ir viela atkārtošanai, ja kas ir aizmirsies! Bet ne katrā ziņā viela no kuras mācīties... un ja vēl eng valoda klibo, tad it sevišķi sarežģīts process :)

 

 

Par atšķirību starp while ($a = b()) un while (b()) - pirmajā gadījumā funkcijas b() rezultāts piešķiras mainīgajam $a, otrajā nē.

 

Šī rinda ko Tu uzrakstīji ir ābece, bet jautājuma doma bija tāda, ka kamdēļ funkcija jāpiesaista mainīgajam, ja tas mainīgais netiks nekur izmantos? Piemēram ja pārbaudam 'login' paroli...varam pārbaudīt gan:

if($_POST["pass"] == md5($row["pass"]))

 

gan arī:

$pass=md5($row["pass"];
if($_POST["pass"] == $pass)

 

respektīvi mana loģika ir tāda ka nav obligāti jāpiesaista funkcijai mainīgais jā šī funkcija arī bez mainīgā izpildīsies korekti...vai ne tā? :) Nu it kā domu loģiski izklāstīju...:)

Tad kāpēc "while($row=mysql_fetch_assoc($result))" strādā korekti, bet "while(mysql_fetch_assoc($result))" nē? Tikko paeksperimentēju...man iekš db ir 8 ieraksti, while ar mainīgo izvada visas tabulas ar datiem korekti, bet savukārt while bez mainīgā izvada tukšas 8 tabulas bez jebkādiem datiem :D WTF

 

Zinu ka manā augstāk minētajā loģikā ir kļūda un arī neba jau php izstrādātāji būs ūdeņus nolaiduši...nu bet gribētos dzirdēt kādu ne pārāk sarežģītu skaidrojumu bez liekiem uzbraucieniem :D

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...