Navigacija

Vartotojų tinkle

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

Registruoti nariai: 25,956
Naujausias narys: saulyzas

Naujausi straipsniai

Paskutiniai nariai

MaFetas 1 savaitė
ozzWANTED 3 savaitės
saulyzas 5 savaitės
TOMIJUS 6 savaitės
Reikalas15 savaitės
Jaunelis21 savaitės
lanis21 savaitės
And2s22 savaitės
Memento Mori27 savaitės
Quwqkibor29 savaitės
asirija33 savaitės
tomeem35 savaitės
weberiz39 savaitės
mRokass41 savaitės
kartoonas42 savaitės
grunskiz45 savaitės
Bruksnys45 savaitės
illusion45 savaitės
ordo46 savaitės
Jurgaila47 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 18.117.151.198
Naujienų: 529
Straipsnių: 235
Temų: 52,588
Postų: 522,537
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 Lap. 30 15:11:14
Taip, vis dar up šypsosi

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

Jaunelis
2024 Lie. 25 11:07:43
Oho vis dar veikia svetainė akinanti šypsen Šimtas metų, matau Šaukykloje nuostalgija. Smagu panaršyt po forumą ir pažiūrėt senas temas šypsosi

And2s
2024 Lie. 17 19:07:04
2008 pirmą kart čia patekau, man buvo 10m ir čia pramokau programavimo.. smagu skaityti senas žinutes, tokia nostalgija akinanti šypsen ačiū Ozz kad saugoji šitą kultūrinį reliktą šypsosi

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

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