Navigacija

Vartotojų tinkle

Prisijungusių svečių: 52
Prisijungusių narių: 0
Prisijungusių narių nėra

Registruoti nariai: 25,952
Naujausias narys: tomeem

Naujausi straipsniai

Paskutiniai nariai

tomeem 1 savaitė
Reikalas 2 savaitės
weberiz 4 savaitės
mRokass 7 savaitės
kartoonas 8 savaitės
iaescortsmap 8 savaitės
ozzWANTED 9 savaitės
grunskiz11 savaitės
Bruksnys11 savaitės
illusion11 savaitės
ordo12 savaitės
Jurgaila13 savaitės
originalcs1613 savaitės
Rytis14 savaitės
halis15 savaitės
junkus18 savaitės
morlis18 savaitės
Majakas19 savaitės
andsoft20 savaitės
picolee9022 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 18.223.20.57
Naujienų: 529
Straipsnių: 235
Temų: 52,584
Postų: 522,522
Postų pask. parą: 0
Shout'ų pask. parą: 0
P.S.C. pask. parą: 0
Nuorodų kataloge: 13

Lankomumo Statistika

Peržiūrų šiandien: 22

Iš viso peržiūrų: 22948724

Prisijungti

REGISTRUOTIS
Nario vardas

Slaptažodis



Pamiršai slaptažodį?
Paprašyk naujo

Aktyvuoti save

Šaukykla

Jei norite rašyti žinutes, turite prisijungti.

ozzWANTED
2024 Sau. 17 01:01:00
Desperatiškus komentarus šaukykloje su accountu po mėnesio prasibuvimo, ištryniau. Pasaulis ir taip juodas. Įjungiam šviesą, prašviesės. šypsosi

Majakas
2023 Gru. 10 19:12:39
Negaliu patikėti jog žinutės/pranešimai visi yra nuo 2008 m akinanti šypsen

Žmogus
2023 Rugs. 7 21:09:14
O gal BloodKiller pasijungs?

Apocal
2023 Rugs. 2 18:09:23
Nu davai nuveikiam kažką akinanti šypsen. Prisijungti kada visi čia akinanti šypsen.

Apocal
2023 Rugs. 2 00:09:18
Šiaip atėjau pažiūrėti ar dar lopas nesby yra ar koks ten buvo.

Šaukyklos archyvas

Apklausa

Ar esate patenkinti lietuviško vertimo kokybe?

Taip!

Taip, bet yra ką taisyti (parašysiu komentaruose)

Ne

Norėdamas balsuoti turite prisijungti.
Archyvas
Reklama 400x60
CIKLAS + FOREACH()
Forumas | PHP-Fusion, WordPress, Shopify, PHP ir MySQL (PROGRAMAVIMAS) | Expert PHP, MySQL klausimai

Autorius: Kelmas Peržiūrų: 3541      Spausdinti temą
2010 Kov. 19 17:03:30          1 žinutė iš 10
Spausdinti pranešimą
Sveiki visi!

Berašant savo TVS iškilo problema kurios niekaip neįsprendžiu. Tai einam prie temos.

Turiu pasirašęs db_query() funkcija kuri ne tik atlieka UŽKLAUSA, bet ir sudaro CIKLA ir SUKEŠUOJA turinį.

$query = db_query(....);
$text = ....;

foreach ($query as $row) {
    $text .= $row['......'];
}

echo $text;



Toks kodas labai gerai suveikia.

$query = db_query("SELECT SQL_CACHE * FROM `main_settings`");

foreach ($query as $data) {
   $settings[$data['settings_name']] = $data['settings_value'];
}




O toks kodas neveikia! Iš niekur gaunu ne į tema klaida!

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/xxxxxxxxxx on line xxxxxx

Bet esmė, kad vistiek sudaro masyvą ir viskas OK. Tik plius išmeta šita klaidą. Įdomu dėl ko?

Visiems iškart ačiū už atsakymus!


Redagavo Kelmas 2010 Kov. 19 17:03:03
2010 Kov. 19 18:03:08          2 žinutė iš 10
Spausdinti pranešimą
O jei pamėgintum su while, o ne forearch:
while ($data = mysql_fetch_assoc($query))

nežino

2010 Kov. 19 18:03:58          3 žinutė iš 10
Spausdinti pranešimą
nbanba parašė:
O jei pamėgintum su while, o ne forearch:
while ($data = mysql_fetch_assoc($query))

nežino


Turiu pasirašęs db_query() funkcija kuri ne tik atlieka UŽKLAUSA, bet ir sudaro CIKLA ir SUKEŠUOJA turinį.

Kitaip tariant tavo ciklą jau seniai sudaro. Čia reikia labai įsiskaityti į mano variantą, kad suprastum.


Redagavo Kelmas 2010 Kov. 19 18:03:30
2010 Kov. 19 22:03:24          4 žinutė iš 10
Spausdinti pranešimą
o jei naudotum _fetch_array() ? visada jį naudoju ir jokių problemų. o dėl tavo atvejo, negali būt sql'e kažkokie neatitikimai? funkcija šita case-sensitive .

programavimo paslaugos pm. ieškau projekto.
2010 Kov. 19 22:03:32          5 žinutė iš 10
Spausdinti pranešimą
iBodom parašė:
o jei naudotum _fetch_array() ? visada jį naudoju ir jokių problemų. o dėl tavo atvejo, negali būt sql'e kažkokie neatitikimai? funkcija šita case-sensitive .


Tai jau antra kartą kartoju, kad jis ir yra naudojamas. Jus išviso žinot kas yra ciklas + kešavimas? juokiasi

db_query(QUERY, TIME = 0)
1) mysql_query()
2) mysql_fetch_assoc()
3) (TIME > 0 && QUERY != UPDATE/DELETE/INSERT) fopen/fwrite/flock/fclose

P.S tavo variantas nekeičia sitaucijos..


Redagavo Kelmas 2010 Kov. 19 22:03:57
2010 Kov. 19 22:03:17          6 žinutė iš 10
Spausdinti pranešimą
tai yra taip : viskas gerai, viską įvygdo, tik meta klaida? wtf?

programavimo paslaugos pm. ieškau projekto.
2010 Kov. 19 22:03:07          7 žinutė iš 10
Spausdinti pranešimą
iBodom parašė:
tai yra taip : viskas gerai, viską įvygdo, tik meta klaida? wtf?


Taip, tik ne klaidą, bet įspėjimą. Tik nesiūlykit variantu su "slepimu".

2010 Kov. 20 01:03:43          8 žinutė iš 10
Spausdinti pranešimą
visų pirma yra toks dalykas kaip dbarraynum(dbquery(...),ID);

todėl gali daryti taip:
$uzklausa = dbquery(...);
$dydis = dbrows($uzklausa);
for($i=0;$i<$dydis;$i++) {
 // Į kešą dabar ką nori susikrauni;
 list($settings[$i]['user_id'],$settings[$i]['user_name'] = dbarraynum($uzklausa,$i);
}



Orginalius, ne fusion funkcijų pavadinimus pasiimsi iš maincore.php, jeigu reikia.


$query = db_query("SELECT SQL_CACHE * FROM `main_settings`");

foreach ($query as $data) {
   $settings[$data['settings_name']] = $data['settings_value'];
}



Toks dalykas iš esmės yra neteisingas, dbquery, tik sukelia į atmintį užklausos rezultatą, bet jos niekaip neparodo, nes negalima mysql'o array'aus nuskaityti php array funkcijomis.
dbarray, dbarraynum, paima pirmąją eilutę, tačiau tu gali užklausoje(LIMIT 5,1) arba dbarraynum($uzklausa,5); nurodyti kurią rezultato eilutę nori matyti.

Dar gali su having - "having sum(total_acts) > 15" pasirimti reikiamą rezultatą, jeigu where parametrais neįmanoma.

Tačiau bet kuriuo atveju tau reikia kokios nors array funkcijos.

while funkcija iš tikrųjų veikia tokiu pat pagrindu kaip:
dbarray($uzklausa);
dbarray($uzklausa);
Tiesiog važiuoja rodykle atmintyje po vieną eilutę žemyn.

Foreach galima taikyti, tik tuomet kaip JAU YRA PHP seka, ir tu ją nori pergrupuoti.


----
Dar žinok, kad komanda SELECT SQL_CACHE sth FROM some_tbl
veiks tik jei:
my.cnf faile bus:
query_cache_type = 2

Dababase independent atveju:
SELECT /*! SQL_CACHE */ sth FROM some_tbl

BR#1, Most Wanted
Redagavo ozzWANTED 2010 Kov. 20 01:03:12
2010 Kov. 20 18:03:22          9 žinutė iš 10
Spausdinti pranešimą
Pabandysiu paaiškinti jums be jokiu funkcijų kaip pas manęs atliekamas šitas dalykas:

<?php
// ATSIMINKITE, ČIA TIK SUPAPRASTINTAS VARIANTAS!

// UŽKLAUSA
$query = mysql_query("SELECT SQL_CACHE * FROM `main_settings`");

// CIKLAS
while ($row = mysql_fetch_assoc($query)) {
  $data[] = $row;
}

// FOREACH'AS
foreach ($data as $info) {
  $settings[$info['settings_name']] = $info['settings_value'];
}
?>




Gal dabar aiškiau..


Redagavo Kelmas 2010 Kov. 20 18:03:29
2010 Kov. 29 19:03:21          10 žinutė iš 10
Spausdinti pranešimą
Problema seniai išspręsta, o tema rakinama. Įdomumo dėlei klaida buvo mano funkcijoje (reikėjo tik $query pervadinti į $result).

Peršokti į forumą: