Problema cu vectorii in php

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Newinphp
New Member
Mesaje: 2
Membru din: Vin Dec 02, 2005 2:42 pm

Problema cu vectorii in php

Mesajde Newinphp » Vin Dec 02, 2005 2:46 pm

Salutare!
Sunt si eu la inceput in php si vreau sa invat cum trebuie acest limbaj.Am o nelamurire:de ce trebuie sa folosesc vectorii cand am o baza de date in care retin date si din care pot sa le scot cand vreau fara sa mai folosesc vectorii.Inteleg sa folosesc vectorii cand am putine valori de scos.Daca ma poate cineva ajuta in legatura cu necesitatea vectorilor si cu modul lor de utilizare in codul php.Unde as putea eu sa folosesc vectorii,dati-mi un exemplu.Va rog sa fiti concreti in explicatii,sa fie simple nu aburelii.Mersi,sunt si eu la inceput :D



Avatar utilizator
ExcalIbvr
Senior Member
Mesaje: 1105
Membru din: Dum Mai 02, 2004 10:56 pm
Localitate: Oradea
Contact:

Mesajde ExcalIbvr » Vin Dec 02, 2005 3:24 pm

Folosesti vectori si matrici pentru a mari viteza de executie a scripturilor. Ar fi criminal sa faci o interogare noua in baza de date pentru fiecare inregistrare de care ai nevoie.
Hai sa presupunem ca ai un tabel cu 10 inregistrari (10 randuri, daca vrei). Vei face o interogare in care vei extrage toate datele si le vei salva in vectori PHP, dupa care lucrezi mai departe cu vectorii. Alternativa ar fi sa faci cate-o interogare separata pentru fiecare rand... not smart.

In practica:
[php]<?php
// initializez vectorul
$vectorulMeu = array();
$sql = "SELECT camp FROM tabel";
// execut interogarea
$result = mysql_query($sql);
// trec prin fiecare inregistrare returnata
while ($row = mysql_fetch_assoc($result))
{
// adaug inregistrarea curenta la vector
$vectorulMeu[] = $row['camp'];
}
?>
[/php]In momentul asta, campurile din tabel sunt in vector. De-aici incolo vei avea datele in vector si poti sa le procesezi, sa le sortezi, sa le afisezi, etc.

Ai mai lucrat in vreun limbaj de programare?



Newinphp
New Member
Mesaje: 2
Membru din: Vin Dec 02, 2005 2:42 pm

Mesajde Newinphp » Vin Dec 02, 2005 4:04 pm

ok, thanks!am inteles mai bine acum cu exemplul pe care l-ai dat.Mersi inca o data pt raspuns.
Eu credeam ca nu puteam sa folosim vectorii sa scoatem datele din baza de date,ci doar sa scriem noi datele in vector si am zis ce fac in momentul in care am f multe date, nu stiu ceva de ordinul miilor,o sa scriu tot timpul in vector sau o sa le scot din baza de date unde deja le am.Asta nu intelegeam eu,dar acum am inteles.Intotdeauna un ex practic ca cel dat de tine ajuta mai mult decat o carte plina de teorie despre vectorii(array). :wink:

matricks
Average Member
Mesaje: 90
Membru din: Sâm Oct 09, 2004 2:39 am
Localitate: Turda
Contact:

Mesajde matricks » Vin Ian 05, 2007 12:12 pm

Am creat o functie prin care incarc valori in mai multe matrice. Numele acestor matrice le extrage dintr-o baza de date, si printr-o functie le trimite spre functia de mai jos.

function incarc_matrice($mtx,$cat_id)
{
$mtx = array();
$mynr = count_articole($cat_id);
for ($n = 0; $n < $mynr; $n++)
{
$mtx[$n] = loader($cat_id,$n);
echo $mtx."=".$mtx[$n]."<br>";
}
}
Intrebarea mea este cum apelez numele matricei. echo $mtx imi afiseaza Array. Eu vreau sa imi afiseze numele pe care il primeste matricea. Cum pot apela pe urma un anumit vector din ea?

Avatar utilizator
gabysolomon
Senior Member
Mesaje: 743
Membru din: Dum Apr 09, 2006 11:39 am
Localitate: Bacau
Contact:

Mesajde gabysolomon » Vin Ian 05, 2007 12:40 pm

| | |

|

strofo
Average Member
Mesaje: 73
Membru din: Lun Noi 27, 2006 3:11 pm

Mesajde strofo » Vin Ian 05, 2007 1:50 pm

posteaza si tu codul functiei loader pote ne prindem ce vrei! despre ce matrice este vorba? matrice din cate stiu eu inseamna mtx[i][j]

matricks
Average Member
Mesaje: 90
Membru din: Sâm Oct 09, 2004 2:39 am
Localitate: Turda
Contact:

Mesajde matricks » Vin Ian 05, 2007 9:19 pm

function aflu_cat_id($tipsk)
{
$query = "SELECT * FROM BT_category where cat_name = '$tipsk'";
$result = mysql_query($query) or die("Error: " . mysql_error());
while($row = mysql_fetch_array($result))
{
return $row['cat_id'];
}
}

function loader($cat_id, $act)
{
$gr_query = "SELECT * FROM BT_inventory where cat_id = $cat_id";
$gr_result = mysql_query($gr_query) or die("Error: " . mysql_error());
$m = 0;
while($row = mysql_fetch_array($gr_result))
{
if($m == $act)
{
$nume = $row['name'];
return $nume;
break;
}
$m++;
}
}

function count_articole($cat_id)
{
$gr_query = "SELECT * FROM BT_inventory where cat_id = '$cat_id'";
$gr_result = mysql_query($gr_query) or die("Error: " . mysql_error());
return mysql_num_rows($gr_result);
}

function incarc_toate_matricele(){
$query = "SELECT * FROM BT_category";
$result = mysql_query($query) or die("Error: " . mysql_error());
while($row = mysql_fetch_array($result))
{
$nume_categorie = $row['cat_name'];
incarc_matrice($nume_categorie,aflu_cat_id($nume_categorie));
}
}

function incarc_matrice($mtx,$cat_id)
{
$mtx = array();
$mynr = count_articole($cat_id);
for ($n = 0; $n < $mynr; $n++)
{
$mtx[$n] = loader($cat_id,$n);
echo $mtx."=".$mtx[$n]."<br>";
}
}

incarc_toate_matricele();



v-am dat toate functiile care se apeleaza intre ele.
totul functioneaza
pana aici am facut totul ok. sunt multumit.

problema este ca acum toate articolele din baza de date sunt incarcate in memorie, fiecare intr-un vector definit de categoria in care se afla.
Problema mea este ca nu stiu cum sa apelez vectorul respectiv.
In ultima functie, function incarc_matrice($mtx,$cat_id) $mtx primeste denumirea pe care o extrage din lista de categorii. Dar apoi o definesc sa fie matrice(array). Iar aste presupuneam ca va face ca daca, categoria se numeste HDD sa devina ceva de genul HDD[$n], si sa pot sa o apelez oricand.
echo $mtx."=".$mtx[$n]."<br>"; imi returneaza Array=valoareadelaindexulcorespunzator.
cum fac sa imi afiseze HDD=valoareadelaindexulcorespunzator
ce trebuie sa folosesc in loc de $mtx."="......... ?

matricks
Average Member
Mesaje: 90
Membru din: Sâm Oct 09, 2004 2:39 am
Localitate: Turda
Contact:

Mesajde matricks » Sâm Ian 06, 2007 2:07 pm


Avatar utilizator
jianuovidiu
Senior Member
Mesaje: 516
Membru din: Joi Mar 16, 2006 8:48 pm
Contact:

Re: Problema cu vectorii in php

Mesajde jianuovidiu » Sâm Ian 06, 2007 2:40 pm


Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Mesajde MihaiC » Sâm Ian 06, 2007 2:45 pm

Dev @

Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Mesajde MihaiC » Sâm Ian 06, 2007 3:22 pm

nu stiu exact ce vrei sa faci asa ca nu ma injura daca nu itzi mere
[php]
<?php
###########
function aflu_cat_id($tipsk)
{
$query = "SELECT * FROM BT_category where cat_name = '$tipsk'";
$result = mysql_query($query) or die("Error: " . mysql_error());
while($row = mysql_fetch_array($result))
{
$return=$row['cat_id'];
}
return $return;
}

function loader($cat_id, $act)
{
$gr_query = "SELECT * FROM BT_inventory where cat_id = $cat_id";
$gr_result = mysql_query($gr_query) or die("Error: " . mysql_error());
$m = 0;
while($row = mysql_fetch_array($gr_result))
{
if($m == $act)
{
$nume = $row['name'];
}
$m++;
}
return $nume;
}

function count_articole($cat_id)
{
$gr_query = "SELECT * FROM BT_inventory where cat_id = '$cat_id'";
$gr_result = mysql_query($gr_query) or die("Error: " . mysql_error());

return mysql_num_rows($gr_result);
}

function incarc_toate_matricele()
{
$nume_categorie = array();
$query = "SELECT * FROM BT_category";
$result = mysql_query($query) or die("Error: " . mysql_error());
while($row = mysql_fetch_array($result))
{
$nume_categorie[] = $row['cat_name'];
}
return incarc_matrice($nume_categorie,aflu_cat_id($nume_categorie));
}

function incarc_matrice($mtx,$cat_id)
{
$mtx = array();
$mynr = count_articole($cat_id);
for ($n = 0; $n < $mynr; $n++)
{
$name[$n] = loader($cat_id,$n);
}
foreach($name as $k=>$val)
{
echo $val .'='.$mtx[$k]."<br />\n";
}
}

incarc_toate_matricele(); ?>[/php]
Dev @

matricks
Average Member
Mesaje: 90
Membru din: Sâm Oct 09, 2004 2:39 am
Localitate: Turda
Contact:

Mesajde matricks » Mar Ian 09, 2007 2:23 pm


Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Mesajde MihaiC » Mar Ian 09, 2007 4:04 pm

Dev @

matricks
Average Member
Mesaje: 90
Membru din: Sâm Oct 09, 2004 2:39 am
Localitate: Turda
Contact:

Mesajde matricks » Mar Ian 09, 2007 6:09 pm

Poate ca ce vreau eu este o himera.
Sa explic ce vreau:
Vreau sa fac o pagina in care sa imi urc inainte de afisarea ei, toate valorile din doua tabele mysql, in niste array-uri. De ce asta?
Pentru ca vreau sa pot popula dinamic valori in niste select-uri, in functie de ce am ales in alt select, fara sa faca reload la pagina. Asta eventual in combinatie cu javascript, pentru ca nu stiu daca php se preteaza la asta de unul singur.
Este exclus sa definesc manual fiecare array.
De aceea vreau sa il creez dinamic cu ajutorul unei functii care ia pe rand dintr-un tabel denumirea array-ului. Sunt vreo 100, si este posibil sa fie schimbate din cand in cand, de aceea este exclusa modificarea codului. Odata ce este populat arrayul respectiv, vreau sa pot apela din el diferite campuri, in loc sa le apelez din tabela mysql, evitand astfel reloadul paginii.
Daca aveti vreo idee, sau un exemplu, astept cu interes maxim.

Avatar utilizator
gabysolomon
Senior Member
Mesaje: 743
Membru din: Dum Apr 09, 2006 11:39 am
Localitate: Bacau
Contact:

Mesajde gabysolomon » Mar Ian 09, 2007 10:50 pm

| | |



|


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 16 vizitatori