21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Matess
Profil *
Mám v .txt souboru všechna česká jména (pod sebou) a potřeboval bych je uložit do DB.

Ve jmeno.txt mám:
Adam
Eva

...

a do DB potřebuji uložit:
INSERT INTO `jmena` ( `id` , `jmeno` , `datum` ) VALUES (NULL , 'Adam', '0000-00-00');
INSERT INTO `jmena` ( `id` , `jmeno` , `datum` ) VALUES (NULL , 'Eva', '0000-00-00');
atd.

prostě chci aby mi ten script vytáhl jméno z prvního řádku v .txt a uložil do DB, potom z druhého, atd.
Je mi jedno jesli mi to vypíše všechna INSERT INTO ... na obrazovku nebo mi ty příkazy rovnou provede.

Poud to shrnu, tak mi jde o to abych uložil ty jména z .txt do DB a nemusel je přepisovat ručně.

Prosím poraďte mi jak na to.
Děkuji
Joker
Profil
Teoreticky by to šlo i bez skriptu...
Jestli to je co řádek to jméno, tak stačí v editoru na začátek každého řádku nechat přidat:
(NULL,'
a na konec každého řádku:
', '0000-00-00'),
...pak z posledního řádku smazat tu čárku na konci, na začátek dopsat
INSERT INTO `jmena` ( `id` , `jmeno` , `datum` ) VALUES
celé to vzít a pustit jako SQL dotaz.

Případně to samé skriptem- na začátku prázdný řetězec, otevřít soubor a dokud není konec, připojit k řetězci: pokud není prázdný, tak čárku, a potom: "(NULL , '", fgets ze souboru a "', '0000-00-00')".
No a až to dojde na konec souboru, tak pokud není řetězec prázdný, přidat na začátek ten začátek INSERT příkazu a poslat do databáze.
keeehi
Profil *
připojit se k darabázi předpokládám umíš.

$inc = FOpen ("a.txt", "r"); // otevřeme soubor
$txt =  fread($inc, filesize("a.txt")); // uložíme do txt
FClose($inc); // zavřeme soubor

$txt = explode("\n", $txt);// rozdělíme soubor do ple po řádcích
for($i=0;$i<count($txt);$i++){
$dotaz = "INSERT INTO jmena (id,jmeno,datum) VALUES (NULL , '$txt[$i]', '0000-00-00');";
mysql_query($dotaz, $link) or die ("SQL dotaz nešlo provést");
}
nightfish
Profil
anebo třeba
<?php $data = file("a.txt");
foreach ($data as $v) mysql_query("insert into jmena(id,jmeno,datum) values (NULL, '$v', '0000-00-00')");

(+ připojení k databázi)
Sicario
Profil *
A trochu elegantneji:
<?php 
$data = file("a.txt");
$query = "insert into jmena (id,jmeno,datum) values (NULL, '".join("', '0000-00-00'), (NULL, '", array_map('trim', $data))."', '0000-00-00')";
mysql_quer($query);


Pri vetsim poctu dat se vyplati uvazovat o importu z .csv souboru (ref:load data). To ale nelze provest na kazdem webhostingu.
Matess
Profil *
keeehi
nightfish
Sicario

Perfektní!
Děkuji mnohokrát.

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