Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dodawanie danych do bazy z txt
Forum PHP.pl > Forum > Przedszkole
marioxp
Witam

nie wiem jak rozwiazac ponizszy problem:

mamy plik przyklad.txt jego zawartosc to :
211222222
34444444
45435344423
4234234242
24442424234242

potrzebuje to zasac z poziomu strony do bazy

chodzi o wskazanie pliku przyklad.txt
ale sadze ze taki maly formularz wystarczy :

<input type="hidden" name="MAX_FILE_SIZE" value="9999999999" />
Plik do wysłania: <input name="userfile" type="file" />
<input type="submit" value="Wyślij" />

teraz mam problem z wrzuceniem ego pliku do bazy tylko potrzeba jeszcze dodac jeszcze jedno pole
w tabeli mamy takie pola
id,nr_kat,data

nr_katalogowany ma byc pobrany z pliku .txt a data to aktualna data tj dzien w ktorym dodawane sa dane do bazy

czy jest mi ktos w stanie pomoc

z gory dzieki
erix
A o fgets" title="Zobacz w manualu PHP" target="_manual słyszałeś?

PS. Proszę o tag tematu.
Pilsener
  1. LOAD DATA INFILE
- poczytaj o takim zapytaniu, doda do bazy od razu cały plik. Pole typu ID zrób auto_increment a w pole data po prostu wstaw UPDATE'm aktualną datę lub ustaw we właściwościach pola tak, żeby domyślnie wpadała bieżąca data, gdy pojawi się nowy rekord.
marioxp
wlasnie probuje zrobic przez fgets

tylko spotkalem sie z takim problemem ze jesli plik nie znajdzie sie na serwerze to nie chce go zaczytac

gdzie moze byc blad

<?php

require ('xxx.php');

$plik=$_POST['plik'];

$uchwyt = @fopen ($plik, "r");

if ($uchwyt) {

while (!feof($uchwyt)) {

$buffer = fgets($uchwyt, 4096);

$z_dodaj = "INSERT INTO bo_baza_karty SET id='' , nr_karty='$buffer', data='$data_akt'";

$r_dodaj = mysql_query($z_dodaj) or die ("gdzies jest bug ". mysql_error());

}

fclose ($uchwyt);

}

?>
MWL
LOAD DATA INFILE to najlepsza i najszybsza metoda. Będize lepiej szybciej i najbardziej optymalnie.
pgrzelka
  1. <?php
  2. $tablica = file('plik.txt');
  3.  
  4. foreach ($tablica as $v) {
  5.  $v = trim ($v);
  6.  mysql_query ("insert into tabela (`nr_kat`, `data`) VALUES ('$v', '$data');
  7. }
  8. ?>


po co bawić się fgets skoro każdy nr kategorii w pliku jest w nowej linii, funkcja file wczytuje nam od razu cały plik do tablicy,
slawny
Cytat(pgrzelka @ 3.06.2009, 11:50:25 ) *
po co bawić się fgets skoro każdy nr kategorii w pliku jest w nowej linii, funkcja file wczytuje nam od razu cały plik do tablicy,


to ja ci odpowiem, bo sam kiedyś tak myślałem ale mnie forumowicze wyprowadzili z błędu:
wyobraź sobie plik ważący ~50mb i tą samą operacje, którą wykonuje 50 użytkowników....
marioxp
Cytat(pgrzelka @ 3.06.2009, 11:50:25 ) *
  1. <?php
  2. $tablica = file('plik.txt');
  3.  
  4. foreach ($tablica as $v) {
  5.  $v = trim ($v);
  6.  mysql_query ("insert into tabela (`nr_kat`, `data`) VALUES ('$v', '$data');
  7. }
  8. ?>


po co bawić się fgets skoro każdy nr kategorii w pliku jest w nowej linii, funkcja file wczytuje nam od razu cały plik do tablicy,


powiem ze tego nigdy nie robilem przez to szukalem najlepszej metody
wydaje mi sie ze to bedzie okey ale mam nastepny problem z przekazaniem tego pliku do z formularza
do tablicy
$tablica = file($_POST['plik']);
i znow problem ehhh
MWL
No ej panowie, ale wygląda na to ze to nie operacja wykonywana przez kilku userów. Mimo to sądzę że najlepsiajszą metodą jest uzywanie PHPMyAdmin, linki MySql czy czegoś w ten deseń. Jak to się ma wykonywać non stop no to raczej trzeba zrobic oś innego bo to idiotyzm, tak tongue.gif
marioxp
Cytat(slawny @ 3.06.2009, 12:03:04 ) *
to ja ci odpowiem, bo sam kiedyś tak myślałem ale mnie forumowicze wyprowadzili z błędu:
wyobraź sobie plik ważący ~50mb i tą samą operacje, którą wykonuje 50 użytkowników....

plik moze miec max 8tys rekordow i max 1 osoba to bedzie robic

Cytat(MWL @ 3.06.2009, 12:06:43 ) *
No ej panowie, ale wygląda na to ze to nie operacja wykonywana przez kilku userów. Mimo to sądzę że najlepsiajszą metodą jest uzywanie PHPMyAdmin, linki MySql czy czegoś w ten deseń. Jak to się ma wykonywać non stop no to raczej trzeba zrobic oś innego bo to idiotyzm, tak tongue.gif



przez pma to bez problemu ale to ma byc dla osoby ktora ma nie miec dostepu
pgrzelka
Cytat
$tablica = file($_POST['plik']);

nie tak,
najpierw musisz wgrać plik na serwer do jakiegoś folderu
a dopiero potem zrobić file('wgranyplik.txt');
poszukaj o move_uploaded_file

Cytat
plik moze miec max 8tys rekordow i max 1 osoba to bedzie robic

spokojnie możesz zastosować moje rozwiązanie, mojemu skromnemu vps'owi wgranie 17k bardziej rozbudowanych rekordów zajmowało ok 20 sekund
erix
Ostatni raz proszę o tag tematu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.