Returnare rezultat ca array din functie.

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Returnare rezultat ca array din functie.

Mesajde quadmachine » Mie Dec 19, 2012 3:22 pm

Cu ce am gresit aici? Nu imi returneaza nimic.

Cod: Selectaţi tot

     function newProducts(){
       
       $data = date('Y-m-d');
       
              $queryn = mysql_query("SELECT `primkey`, `name`, `introdescription`, `description`,
              `thumbnail`, `price`, `tags`, `category`, `weight`, `length`, `width`, `height`, `dataprodus`
              FROM `mgz_wpstorecart_products`
              WHERE `dataprodus` = '$data'") or die(mysql_error());
             
                    $newProducts = array();
                   
                                 while($row = mysql_fetch_array($queryn)){

                                            $newProducts[] = $row['name'];

                                 }


                      return $newProducts;
     }


Cod: Selectaţi tot

Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.

tedy
Average Member
Mesaje: 95
Membru din: Vin Ian 06, 2012 7:28 pm
Localitate: Ramnicu Valcea
Contact:

Re: Returnare rezultat ca array din functie.

Mesajde tedy » Mie Dec 19, 2012 4:40 pm

Cred ca in cazul de fata e mai indicat fetch_assoc decat fetch_array. De asemenea, nu stiu de ce selectezi o gramada de coloane daca oricum vei folosi decat una.

Incearca asa:

Cod: Selectaţi tot

<?php

function newProducts()
{
    $array = array();
    $data = date('Y-m-d');
   
    $q = mysql_query("SELECT `primkey`, `name`, `introdescription`, `description`, `thumbnail`, `price`, `tags`, `category`, `weight`, `length`, `width`, `height`, `dataprodus`
                                   FROM `mgz_wpstorecart_products`
                                   WHERE `dataprodus` = '$data'") or die(mysql_error());
                                               
    while($row = mysql_fetch_assoc($q))
        $array[] = $row['name'];
       
    return $array;
}
                     
?>


Nu am modificat (in mare) decat functia de retrieve din db, dar denumirile variabilelor sunt schimbate pt. ca am rescris functia si asa sunt obisnuit sa le denumesc, te descurci tu.

Ar trebui sa iti functioneze daca ai conexiune, db selectat, populat, etc. In caz ca totusi nu merge si nu returneaza nicio eroare SQL, incearca un var_dump la array-urile alea, joaca-te putin si vezi unde e problema. Bafta.

quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Re: Returnare rezultat ca array din functie.

Mesajde quadmachine » Mie Dec 19, 2012 5:06 pm

Am in alt script aceasi chestie si functioneaza bine, aici face nazuri.Interogare OK, eu vreau sa scot toate rezultatele.

Cod: Selectaţi tot

array
  'primkey' => string '2' (length=1)
  'name' => string 'Baie completa cabina de dus.' (length=28)
  'introdescription' => string '' (length=0)
  'description' => string '' (length=0)
  'thumbnail' => string 'http://78.97.32.27/magazin/wordpress/wp-content/uploads/2012/12/3080.jpg' (length=72)
  'price' => string '900.00' (length=6)
  'tags' => string '' (length=0)
  'category' => string '1' (length=1)
  'weight' => string '0.00' (length=4)
  'length' => string '0.00' (length=4)
  'width' => string '0.00' (length=4)
  'height' => string '0.00' (length=4)
  'dataprodus' => string '2012-12-11' (length=10)


Daca..

Cod: Selectaţi tot

     function newProducts(){

              $queryn = mysql_query("SELECT `primkey`, `name`, `introdescription`, `description`,
              `thumbnail`, `price`, `tags`, `category`, `weight`, `length`, `width`, `height`, `dataprodus`
              FROM `mgz_wpstorecart_products`") or die(mysql_error());
             
                   $result = mysql_fetch_assoc($queryn);


                                $newProducts = array();
                   
                                 while($row = mysql_fetch_assoc($queryn)){

                                            $newProducts[] = $row;


                                 }

                 return $newProducts;

     }

Cod: Selectaţi tot

Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.

tedy
Average Member
Mesaje: 95
Membru din: Vin Ian 06, 2012 7:28 pm
Localitate: Ramnicu Valcea
Contact:

Re: Returnare rezultat ca array din functie.

Mesajde tedy » Mie Dec 19, 2012 5:21 pm

Cred ca ar trebui sa fie


array(
1 => array( 'name' => .... etc)
2 => alt array
...
etc



Am si eu o functie asemanatoare:

Cod: Selectaţi tot

    public function getHotArticles()
    {
        $q = $this->db->select(array('id', 'title', 'datetime'))->from($this->table)->where('importance', 4, '!=')->orderby('datetime', 'DESC')->limit(5)->query();
       
        $hotArticles = array();
       
        while($array = $q->fetch())
            $hotArticles[] = $array;
           
        return $hotArticles;
    }



si imi merge bine.

Avatar utilizator
mandix
Average Member
Mesaje: 142
Membru din: Dum Apr 01, 2012 2:04 am
Localitate: Santana, Arad
Contact:

Re: Returnare rezultat ca array din functie.

Mesajde mandix » Mie Dec 19, 2012 9:41 pm

Query-ul nu este bun. Ceri selectia unei date, nu string. Randul `dataprodus` din db trebuie sa fie de tip DATE, si in aceeasi ordine(Y-m-d) cu data care o ceri tu din PHP. Pentru selectie faci: "SELECT col1, col2 FROM tabel WHERE DATE(randul_cu_data)=$data". Copy/paste la cod, eu doar am modificat query-ul.

Cod: Selectaţi tot

   function newProducts(){
       
       $data = date('Y-m-d');
       
              $queryn = mysql_query("SELECT `primkey`, `name`, `introdescription`, `description`,
              `thumbnail`, `price`, `tags`, `category`, `weight`, `length`, `width`, `height`, `dataprodus`
              FROM `mgz_wpstorecart_products`
              WHERE DATE(`dataprodus`) = '$data'") or die(mysql_error());
             
                    $newProducts = array();
                   
                                 while($row = mysql_fetch_array($queryn)){

                                            $newProducts[] = $row['name'];

                                 }


                      return $newProducts;
     }


Edit: Functioneaza si daca schimbi in baza de date `dataprodus` ca date. Dupa ce il schimbi in date, poti sa faci interogarea normala.

quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Re: Returnare rezultat ca array din functie.

Mesajde quadmachine » Joi Dec 20, 2012 12:25 am

Este corect la date, nu inteleg de ce "se rupe filmul" dupa $newProducts = array();. Am scos conditia cu data si totusi trebuia sa imi afiseze cele 8 produse care le am in db.

Cod: Selectaţi tot

Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.

tedy
Average Member
Mesaje: 95
Membru din: Vin Ian 06, 2012 7:28 pm
Localitate: Ramnicu Valcea
Contact:

Re: Returnare rezultat ca array din functie.

Mesajde tedy » Joi Dec 20, 2012 1:37 am

Incearca niste var_dump-uri de genul asta...

Cod: Selectaţi tot

<?php
     function newProducts(){
       
       $data = date('Y-m-d');
       
              $queryn = mysql_query("SELECT `primkey`, `name`, `introdescription`, `description`,
              `thumbnail`, `price`, `tags`, `category`, `weight`, `length`, `width`, `height`, `dataprodus`
              FROM `mgz_wpstorecart_products`
              WHERE `dataprodus` = '$data' LIMIT 2") or die(mysql_error());
             
                    $newProducts = array();
                    var_dump($newProducts);
                   
                                 while($row = mysql_fetch_array($queryn))
                                 {
                                    var_dump($row);
                                    echo '<br /><br /><br />';
                                    var_dump($row['name']);
                                    echo '<br /><br /><br />';
                                    $newProducts[] = $row['name'];
                                    var_dump($newProducts);
                                 }
     }   
?>


Unele sunt puse in plus (adica sunt nefolositoare) dar cred ca in felul acesta iti poti face cel mai bine o idee unde apare problema si ce nu merge bine... am pus si limit 2 in query sa nu iti umple pagina.

Revino cu post daca gasesti problema si lumineaza-ne si pe noi, chiar ma streseaza treaba asta:))

As testa personal dar pana setez si populez db... :D spune-ne care sunt rezultatele de mai sus.

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

Re: Returnare rezultat ca array din functie.

Mesajde MihaiC » Joi Dec 20, 2012 8:35 am

cel mai probabil interogarea ta nu scoate nici un rand din tabel. Cel mai bine intrii in phpmyadmin si iti corectezi interogarea de acolo.

[offtopic]
nu inteleg de ce ai scoate 50 de coloane in interogare daca in rezultat nu ai nevoie decat de una.
[/offtopic]


Daca aveam nevoie decat de un rezultat crezi ca mai foloseam un array? Eu vreau sa scot rezultatele din ziua curenta, daca am 100 le scot pe toate nu unul singur.:)

Avatar utilizator
mandix
Average Member
Mesaje: 142
Membru din: Dum Apr 01, 2012 2:04 am
Localitate: Santana, Arad
Contact:

Re: Returnare rezultat ca array din functie.

Mesajde mandix » Joi Dec 20, 2012 11:03 am

1. Dupa functie, pune functia intr-o variabila.

Cod: Selectaţi tot

$showData = newProducts();
print_r($showData);

Daca nu afiseaza nimic interogarea nu este buna.

2. Fa interogarea dupa `id`si vezi daca iti returneaza ceva.

Avatar utilizator
inginerul
Average Member
Mesaje: 111
Membru din: Sâm Dec 01, 2012 11:34 pm
Contact:

Re: Returnare rezultat ca array din functie.

Mesajde inginerul » Joi Dec 20, 2012 11:57 am

inlocuieste acel while cu asta

Cod: Selectaţi tot

$x = 0;
while($row = mysql_fetch_array($queryn)){
   $newProducts[$x] = $row['name'];
   $x++;
}

dupa aceea pune

Cod: Selectaţi tot

print_r($newProducts);

ar trebui sa iti afiseze matricea.
am testat si functioneaza...

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Returnare rezultat ca array din functie.

Mesajde ViezuREX » Joi Dec 20, 2012 12:10 pm

Eu as merge pe varianta asta:

Cod: Selectaţi tot

       $data = date('Y-m-d');   
       $queryn = mysql_query("SELECT `primkey`, `name`, `introdescription`, `description`,`thumbnail`, `price`, `tags`, `category`, `weight`,`length`, `width`, `height`, `dataprodus` FROM `mgz_wpstorecart_products`WHERE DATE(`dataprodus`) = '$data'") or die(mysql_error());
       $newProducts = array();
       while($row = mysql_fetch_assoc($queryn)){
              foreach( $row as $field )
               $newProducts[$field] = $row[$field];
        }
        return $newProducts;
     }


Am inlocuit fetch_array cu fetch_assoc pentru a putea avea un Array mai "simpatic" dar merge si cu fetch_array


Înapoi la “PHP Incepători”

Cine este conectat

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