Autor | Zpráva | ||
---|---|---|---|
Radek XT Profil * |
#1 · Zasláno: 4. 2. 2011, 15:29:07
Zdravím.
Řeším problém a potřeboval bych nakopnout. Mám pole v PHP, které vypadá takto. Array ( [0] => Array ( [jmeno] => Petra [prijmeni] => Nováková ) [1] => Array ( [jmeno] => Ctibor [prijmeni] => Krška ) [2] => Array ( [jmeno] => Kateřina [prijmeni] => Veselá ) [3] => Array ( [jmeno] => Jan [prijmeni] => Pohoda ) ) Dále mám tabulku v MySQL, která obsahuje sloupec "prijmeni". Pole má kolem 400 záznámu, tabulka v MySQL má statisíce řádků. Chci vybrat z tabulky jen ty řádky, které mají shodu příjmení se záznamy v poli. Jde to udělat snadněji, než že bych vždy musel projet každý údaj pole se všemi řádky tabulky? |
||
ninja Profil |
#2 · Zasláno: 4. 2. 2011, 15:46:52
'SELECT * FROM tabulka WHERE prijmeni IN ("'.implode('","', $pole).'");' Vy máte pole vícerozměnrné a chcete jen prijmeni, tak misto implode budete muset použít cyklus, ale princip je stejný. Pozor na maximální délku query. |
||
Radek XT Profil * |
#3 · Zasláno: 4. 2. 2011, 21:43:36
Nepochopil jsem ten váš cyklus, ale vnuknul jste mi myšlenku si nejprve pole zjednoduššit... Ještě jedna informace, kterou jsem v úvodním příspěvku zapomněl zmínit. Podle příjmení zjistím shodu a následně ještě musím z pole vypreparovat jmeno pro vybraná příjmení. Ve výsledků je nutné zobrazit celé jméno.
Je to takhle správně, nebo na to jdu zbytečně složitě? -------------------------------------------------------------------- Pole jsem si rozdělil na 2 - podle jména a příjmení foreach ($pole as $rozdelime) { $fceP[]="$rozdelime[prijmeni]"; $fceJ[]="$rozdelime[jmeno]"; } Pole $fceP vypadá následně takto - je možné jej porovnat s tabulkou přes implode. Array ( [0] => Nováková [1] => Krška [2] => Veselá [3] => Pohoda ) Tabulka mi nalezne shodu, vím příjmení, ale potřebuji ještě zjistit jméno. $dohromady=array_combine($fceP, $fceJ); A nakonec přes $dohromady[$prijmeni_z_databaze] |
||
Časová prodleva: 13 let
|
0