Autor Zpráva
Radek XT
Profil *
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
'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 *
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]
získám i požadované křestní jméno.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: