Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

While inside while

[es] :: PHP :: While inside while

[ Pregleda: 2278 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

slavo.k

Član broj: 302312
Poruke: 46
*.static.sbb.rs.

Sajt: www.eho.in.rs


Profil

icon While inside while19.05.2012. u 11:44 - pre 145 meseci
Pozdrav.
Pokusavam da izvucem vrednosti iz dve tabele iz baze kroz jednu while petlju i da rezultate smestim kroz jedan red a dve kolone tabele. Prva kolona je naziv specifikacije, a druge dve su vrednosti. Uradio sam ovo, ali nikako ne uspeva. Tipa, product comparation kao ovo: http://www.mobilnisvet.com/compare.php?a=3196&b=&c=
Code:

$result = 'select nesto from tabela1'  //izvucem ono sto mi treba iz jedne tabele
$result2 = 'select nesto from tabela2' //izvucem ono sto mi treba iz druge tabele

while (($info = mysql_fetch_array($result, MYSQL_ASSOC)) || ($info = mysql_fetch_array($result2, MYSQL_ASSOC)) ) {

    echo '<tr>';
    echo '<td>'.$info['value'].'</td><td>'.$info['value'].'</td>';
    echo '</tr>';

}

Ovako necu dobiti ono sto treba, pokusavao sam while inside while ali ne ide. Ako nesto moze da pomogne, bilo bi super
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.adsl.verat.net.



+373 Profil

icon Re: While inside while19.05.2012. u 12:36 - pre 145 meseci
- Koristis OR operator koji cim u while-u naidje na true vrednost preseca izvrsavanje daljih provera. Znaci neces ni dohvatiti red iz drugog upita. Treba ti &&. Samo ako oba rezultata vrate po red radi...
- $info je promenljiva u kojoj se smesta jedan red iz rezultata, a ti je koristis 2x i samim tim prepisujes ono sto si zapamtio.
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1571 Profil

icon Re: While inside while19.05.2012. u 12:59 - pre 145 meseci
Ceo ovaj kod ti je besmislen. Ako već imać dva niza kojima su indeksi isti, onda u while tretiraj jedan od njih a iz drugog samo pokupi podatak preko indeksa.

Mada, ja bih to lepo sastavio JOIN-om u SQL upitu i jedan niz u kome je sve vec složeno kako treba.


 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.static.sbb.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while19.05.2012. u 13:22 - pre 145 meseci
Da Da! BAs glupa greska. Hvala puno.
 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.dynamic.isp.telekom.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while19.05.2012. u 17:14 - pre 145 meseci
Ne moze da ide JOIN jer se vrednosti specifikacija proizvoda, koje su u istoj tabeli. Gore sam pogresno naveo. Specifikacija je u jednoj, a njena vrednost u drugoj, tabele se spoje po uslovu spajanja i dobije se npr: Tezina: 5kg
Boja: Plava
, sada treba uporediti sa nekim drugim proizvodom čuje se vrednosti izvuku, ali samo mi je problem smestiti ih, kao na mobilnom svetu sto je odradjeno...
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
77.243.16.*



+303 Profil

icon Re: While inside while19.05.2012. u 17:33 - pre 145 meseci
Code (php):

while($rowT = mysql_fetch_assoc($queryT)){
   $first_array[] = $rowT;
}

while($rowT2 = mysql_fetch_assoc($queryT)){
   $second_array[] = $rowT2;
}

foreach($first_array as $key=>$value){
echo "prva vrednost je ".$value['neka_kolona'];
echo "druga prva vrednost je ".$second_array[$key]['neka_kolona'];
}
 

Mozes i da eliminises first_array, prvo uhvatis second_array, pa onda direktno u prvom while radis ispis. Al mislim da je ovaj moj nacin malo cistiji...
 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.dynamic.isp.telekom.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while19.05.2012. u 18:14 - pre 145 meseci
Da, to je ok, sad samo pravi problem kad se npr kod jednog proizvoda ne izvuce vrednost specifikacije, ne kreira se prazna kolona vec se ispomera, tipa ovo:

CPU: AMD | INTEL
RAM: 2 GB | 4GB
HDD:500 GB | Plava
Boja: Crna | Audio...

Hvala puno
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
77.243.16.*



+303 Profil

icon Re: While inside while19.05.2012. u 18:35 - pre 145 meseci
To je lakse resiti preko sql-a, daj create table za te dve tabele koje imas, da ne lupamo napamet...

A sad kad razmislim, nesto mi zesce nema logike, al ajde daj taj create table pa da vidimo...
 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.dynamic.isp.telekom.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while19.05.2012. u 18:39 - pre 145 meseci
Code:

CREATE TABLE IF NOT EXISTS `SetSpecification` (
  `anSpec` smallint(5) NOT NULL auto_increment,
  `acName` varchar(40) NOT NULL,
  `acActive` tinyint(1) default '1',
  `filter` tinyint(1) NOT NULL default '1',
  `nOrder` smallint(6) NOT NULL default '0',
  `anClassif` smallint(5) default NULL,
  `adTimeChg` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `sname` varchar(40) character set utf8 collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`anSpec`),
  UNIQUE KEY `acName` (`acName`,`anClassif`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2282 ;


CREATE TABLE IF NOT EXISTS `LinkItemSpec` (
  `id` int(11) NOT NULL auto_increment,
  `acIdent` varchar(20) NOT NULL,
  `anSpec` smallint(5) NOT NULL,
  `acValue` varchar(2000) NOT NULL,
  `acActive` char(1) NOT NULL default 'T',
  `adTimeChg` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `acIdent` (`acIdent`,`anSpec`),
  KEY `acValue` (`acValue`(255)),
  KEY `anSpec` (`anSpec`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=69860 ;

--
-- Dumping data for table `LinkItemSpec`
 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.static.sbb.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while21.05.2012. u 09:14 - pre 145 meseci
Ne znam da li si skopčao šta pokušavam srediti.Ako recimo na jednom artiklu imam 3 specifikacije, na drugom 4, kako da kreiram praznu kolonu, da ne dodje do pomeranja.

Boja: BEla | CRna
Suma: 5 | 6
Napomena: gfdgs | 2 meseca
Garancija: 2 |


da prikazem ovako


Boja: BEla | CRna
Suma: 5 | 6
Napomena: gfdgs |
Garancija: 2 | 2 meseca
 
Odgovor na temu

PHPovac

Član broj: 300013
Poruke: 168
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: While inside while21.05.2012. u 09:26 - pre 145 meseci
probaj neki if empty pa onda u zavisnosti da li je prazno ili ne štampaš sadržaj ili štampaš N/A
 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.static.sbb.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while21.05.2012. u 09:36 - pre 145 meseci
ma mislim da to ne može da prodje, jer konkretno artiklu nije pridružena vrednost specifikacije, a ovim izvlacim:
Code:

'SELECT a.acValue AS value, b.acName AS label FROM LinkItemSpec a JOIN SetSpecification b ON a.anSpec = b.anSpec WHERE b.acActive = 1 AND a.acIdent = \''.$id.'\' ORDER BY b.nOrder'


iznad je create table, ako te ne mrzi da bacis pogled
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1571 Profil

icon Re: While inside while21.05.2012. u 10:17 - pre 145 meseci
Sve to rešava lepo sročen left join.


 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.static.sbb.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while21.05.2012. u 11:56 - pre 145 meseci
Pa ja sam lud il ista je vec u pitanju, kombinovao sam i JOIN, ali ne uspeva. Ovo je konkretno primer jednog artikla i njegovih specifikacija i vrednosti specifikacija.
Prikačeni fajlovi
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
77.243.16.*



+303 Profil

icon Re: While inside while21.05.2012. u 21:02 - pre 145 meseci
Citat:
slavo.k: Ne znam da li si skopčao šta pokušavam srediti.Ako recimo na jednom artiklu imam 3 specifikacije, na drugom 4, kako da kreiram praznu kolonu, da ne dodje do pomeranja.

Ukapirao sam, al iskreno ne mogu da se snadjem sa ovim tabelama (ako te ne mrzi, daj malo podataka da unesem, pa da vidim).
Ovako peske, mozes da uradis sledece
Code:

while($rowT = mysql_fetch_assoc($queryT)){
   foreach($rowT as $key=>$value){    
   $tmpTA = array($key=>$value);//ovo nece raditi, ne mogu sad da se setim tacne sintakse. 
//Ako ovaj while hvata samo jedan proizvod, treba da spakujes sve u formatu gde ce ti key biti ime kategorije, a value vrednost koja pripada toj kategoriji
   }
   $first_array[] = $tmpTA;


}

//isto za drugu kolonu

foreach($first_array as $key=>$value){
   foreach($value as $key2=>$value2){
      echo "ime kategorije je".$key2;
      echo "prva vrednost je ".$value2['neka_kolona'];
      echo "druga prva vrednost je ".$second_array[$key]['key2']['neka_kolona'];
   }
}

Ovo ce raditi ako su podaci koje dobijas iz baze u formatu:
Code:

Proizvod jedan:
Boja: Bela
Suma: 5
Napomena: gfdgs 
Garancija: 2

Proizvod 2:
Boja: Bela
Suma: 5
Napomena: gfdgs 
Garancija: 2

Ono sto ce ti biti problem je ako drugi proizvod ima nesto sto prvi nema. To mozes resiti tako sto ces prebrojati koliko koji proizvod ima stavki, pa onda na osnovu onog veceg kreirati tabelu.

Al opet napominjem, ne mogu da se snadjem sa ovim tabelama, i verovatno postoji elegantnije resenje. Probacu opet sutra kad budem odmoran, pa javljam :)
 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.static.sbb.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while22.05.2012. u 07:15 - pre 145 meseci
Pa da to je problem, jer proizvod nema specifikaciju, ako mu se ne unese vrednost specifikacije. Evo sličica...
Fala gde čuo i gde ne čuo :)
Prikačeni fajlovi
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
77.243.20.*



+303 Profil

icon Re: While inside while22.05.2012. u 22:49 - pre 145 meseci
Code (php):

<?php

$product_queryA = array(
     "product_identification"=>"",
     "product_identification"=>"",
     "product_identification"=>"",
     "product_identification"=>""
     );
     
$biggest_table_count =  0;
$biggest_table_identification =  false;

foreach($product_queryA as $key=>$value){//foreach da uzmemo sve podatke
     $queryT = mysql_query($value);

     //glavni array, verovatno nece raditi, vidi dole za format
     $product_details[$key]= array(
          "count"=>mysql_affected_rows($queryT),//ovo nam izgleda ne treba, moze da se uradi donji count bez ove vrednosti definisane u array
          "data"=>false//ovo obavezno
          );
     
     if(mysql_affected_rows($queryT)>0){
          while($rowT = mysql_fetch_assoc($queryT)){
               //veoma je bitno da key bude ime kategorije, da bismo kasnije mogli da
               //pristupimo vrednosti uz pomoc glavnog kljuca
               $product_details[$key]["data"][] = array($rowT['ime_kategorije']=>$rowT['vrednost'];
               };
          }
     if($product_details[$key]['count'] >= $biggest_table_count){
          $biggest_table_count = $product_details[$key]["count"];
          $biggest_table_identification = $product_details[$key];//da znamo koju tabelu prvu da prikazemo
          };
     };
if(is_array($product_details[$biggest_table_identification]['data'])){
     foreach($product_details[$biggest_table_identification]['data'] as $key=>$value){//ovako znamo koliko redova treba da kreiramo
          echo "kategorija:".$key."<br/>";
          echo "vrednost:".$value."<br/>";
          foreach($product_queryA as $key2=>$value2){
               if($product_identification != $biggest_table_identification){//da ne ponovimo ispis najvece tabele
                    echo "$vrednost:".$product_details[$key2]['data'][$key];//key2 je trenutni product, key je ime kategorije
                    }
               }
          }
     }
     
//product details treba da izgleda ovako
$product_details = array(
     "product_identification"=>array(
                    "data"=>false //ako nema nadjenih vrednosti
                    ),
     "product_identification"=>array(
                    "data"=>array(
                         "ime kategorije"=>"vrednost",
                         "ime kategorije"=>"vrednost"
                         )
                    )
     );
?>


 

Srecno :)
 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.static.sbb.rs.

Sajt: www.eho.in.rs


Profil

icon Re: While inside while23.05.2012. u 11:38 - pre 145 meseci
Hvala druze puno!
 
Odgovor na temu

[es] :: PHP :: While inside while

[ Pregleda: 2278 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.