Autor Zpráva
web2000
Profil *
Ahoj,

Sestavil jsem si skript, který má ze souboru .csv přečíst všechny řádky a uložit data do databáze.
Zatím, ale umím uložit jen vždy první hodnotu z každého řádku, uvažuji o vícerozměrném poli, ale nevím jak zprávně jej zapsat.

Data v soubor .csv
-----------------------
1413;1250;DR20
1412;650;DR19

Skript
-------
<?
if ($_REQUEST["odeslano"] == 1)
{
if (move_uploaded_file($_FILES['data']['tmp_name'], "./soupis.csv"))
{
$soubor=$_SERVER["DOCUMENT_ROOT"]."/soupis.csv";

$row = 1;
$fp = fopen ("$soubor","r");
while ($data = fgetcsv ($fp, 1000, ","))
{
$num = count ($data);
$row++;

for ($c=0; $c<$num; $c++) // uloží po řádku do tabulky
{
$sql = "INSERT INTO soupis VALUES (0, '$data[$c]')";
$vystup = mysql_query ($sql);
} // konec for
} // konec while
}
}
ShiraNai7
Profil
if (isset($_REQUEST['odeslano']) && $_REQUEST['odeslano'] && !empty($_FILES['data']['tmp_name'])) {
    if (move_uploaded_file($_FILES['data']['tmp_name'], "./soupis.csv")) {
        $soubor = $_SERVER['DOCUMENT_ROOT'] . "/soupis.csv";

        $fp = fopen($soubor, 'r');
        while ($data = fgetcsv($fp, 0, ',')) {
            $sql = 'INSERT INTO soupis VALUES (0';
            for ($i = 0; isset($data[$i]); ++$i) {
                $sql .= ',"' . mysql_real_escape_string($data[$i]) . '"';
            }
            $sql .= ')';
            mysql_query($sql);
        }
    }
}

Pár poznámek:

1) definuješ proměnnou $row ale nevyužíváš ji
2) je potřeba nahraný soubor přesouvat? číst ho můžeš tam, kde je
3) chybělo escapování hodnot pro SQL dotaz
4) používej odsazování, pak nejsou potřeba komentáře typu //konec while
5) skript nijak nekontroluje správnost dat, ale to nemusíš potřebovat

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:

0