Navigacija

Vartotojų tinkle

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

Registruoti nariai: 25,957
Naujausias narys: keistuole

Naujausi straipsniai

Paskutiniai nariai

Nepas03:21:15
keistuole 2 savaitės
Gizmis 3 savaitės
Reikalas 3 savaitės
Rytis13 savaitės
MaFetas17 savaitės
ozzWANTED18 savaitės
saulyzas20 savaitės
TOMIJUS21 savaitės
Jaunelis36 savaitės
lanis37 savaitės
And2s38 savaitės
Memento Mori43 savaitės
Quwqkibor45 savaitės
asirija49 savaitės
tomeem51 savaitės
weberiz54 savaitės
mRokass57 savaitės
kartoonas58 savaitės
grunskiz60 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 3.139.104.134
Naujienų: 529
Straipsnių: 235
Temų: 52,589
Postų: 522,539
Postų pask. parą: 0
Shout'ų pask. parą: 2
P.S.C. pask. parą: 2
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.

Nepas
2025 Bal. 9 17:04:13
drovus

Nepas
2025 Bal. 9 17:04:08
drovus

Gizmis
2025 Kov. 15 14:03:50
OMG, smagu matyt sita puslapi veikianti

ozzWANTED
2024 Lap. 30 15:11:14
Taip, vis dar up šypsosi

MaFetas
2024 Lap. 13 22:11:57
hey how, geras dar veikiantis saitas?

Š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ų: 3898      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ą: