Autor Zpráva
krutak
Profil *
Zdravím všechny ochotné,
nedaří se mi vymyslet podmínka na porování tabulky z DB a řetězce z načteného CSV souboru.
CSV nyní načítám do PHP takto, což funguje v pořádku (přidávám k importu sloupec NAHLED a do nej chci hodnoty "ano/ne" dle toho, zda je podmínka splněna):
while (($data = fgetcsv($NactiSoubor, 1000, ";")) !== FALSE) {
                        if ($row == 0) {
                            $num = count($data);
                            echo "\n<thead>\n<tr>";
                            $row++;
                            for ($c=0; $c < $num; $c++) {
                                echo "<th>" . $data[$c] . "</th>";
                                }
                            echo "<th>NÁHLED</th>";
                            echo "</tr>\n</thead>\n\n<tbody>";
                        } else {
                            $num = count($data);
                            echo "<tr>";
                            $row++;
                            for ($c=0; $c < $num; $c++) {
                                echo "<td>" . $data[$c] . "</td>";
                                }
                            echo "<td>";
                            if ($TADYNEVIM == "$data[0]") {
                                echo "ano";
                            }
                            else {
                                echo "ne";
                            }
                            echo "</td>";
                            echo "</tr>\n";
                        }
                    }
Konkretne jde o cast:
if ("$TADYNEVIM" == "$data[0]") {
                                echo "je v DB";
                            }
                            else {
                                echo "neni";
                            }
kde místo "$TADYNEVIM" bych chtěl mít obsah sloupce z DB "databaze" z tabulky "moje_tabulka" k porovnání, zda řetězec z CSV je někde v dane tabulce v DB ve sloupci "muj_sloupec".
Jelikož nejsem moc přes php, tak to tak nějak bastlím sám (a doteď jsem to vždy vymyslel). Obsah dané části DB umím vypsat například pomocí:
$queryDB = "SELECT muj_sloupec FROM moje_tabulka";
$resultDB = mysql_query($queryDB);
                    while ($row = mysql_fetch_array($resultDB)) {
                        echo $row["muj_sloupec"];
                        }
což opět vypíše v pořádku.
Když místo $TADYNEVIM dosadím nějakou konkrétní hodnotu z DB, tak to také funguje => problém je jen vymyslet, jak místo $TADYNEVIM načíst pole (asi) a to porovnat s danou hodnotou.

Děkuji všem
Tori
Profil
krutak:
Jak asi velký (= řádově počet řádků) je ten CSV soubor?
krutak
Profil *
cca 4000 řádků


ale ten CSV má jen 4 sloupce a celkově je to cca 100kB soubor
Tori
Profil
krutak:
cca 4000 řádků
Potom by asi bylo efektivnější to csv nahrát do (dočasné) DB tabulky a vypsat odtamtud, i se zjišťováním náhled=ano/ne.
krutak
Profil *
nad tim jsem take premyslel, ale nechce se mi jen kvuli tomu zakladat dalsi tabulka, kdyz ji na vse ostatni, co delam, nepotrebuji
Tori
Profil
tak potom $sql = "SELECT COUNT(*) FROM tabulka WHERE sloupec = '".mysql_real_escape_query($data[0])."'"; // nebo přetypovat na číslo, místo mysql_fetch_array můžete použít mysql_result. Ale pro řádově tisíce opakování to nebude moc rychlé. Pokud ta DB tabulka nemá moc řádků (= řádově pár set), šlo by i načíst si z ní všechny unikátní hodnoty z muj_sloupec do pole (jako klíče) a porovnávat pomocí isset, to by bylo rychlejší než 4k dotazů.

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: