Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Generowanie tabeli z automatycznym zapisem
Forum PHP.pl > Forum > Przedszkole
Maciek1705
Witam serdecznie mam takie pytanko, otóż natrafiłem na poważny problem mam bazę danych w której jest relacja wiele do wielu to jest zrobione na zasadzie połączenia 2 tabel w innej jednej, i teraz tak w jednej tabeli jest około 3000rekordów w drugie około 4000rekordów problem próbowałem rozwiazać w excelu ale on nie podołał ma jedyne 64 tysiące komórek a ja potrzebuje znacznie więcej coś koło 4 milionów biggrin.gif ale tak postaram się to dobrze wyjaśnić chodzi o to żebym na stronie w polach imput podał np ilość produktów a w 2 pozostałych zakres seri od do. Tabela składa się z 2 kolumn z wierszy nie wiadomo ciężko powiedzieć. Teraz najważniejsze jak powiedzieć o co mi chodzi:D to tak wyobraźmy sobie że zakres od jest równy 1, zakres do jest równy np 4000, liczba produktów jest równa np 30 i teraz tak w 1 kolumnie będzie 1 przez 4000 wierszy w 4001 wierszu 1 zmieni się na 2 itp itd aż do 30 bo taki był zakres chce to zrobić żeby mi się generowało w php automatycznie nawet wynik nie musi być widoczny na stronie chcę tylko by po nie wiem przekroczeniu 30 czyli liczby produktów program przestał działać i zapisał mi wyniki do pliku np xxx.csv kolumny mają być rozdzielone średnikami. Ok zarzucę kodem bo narazie jestem na starcie nie wiem jak mam do takiego czegoś ułożyć pętlę czy to co napisałem w ogóle da się wykonać itp.
  1. <body>
  2. <form action="tabela.php" method="get">
  3. <p>Zakres od<input type="text" id="ZakresOd" name="ZakresOd" size="15" /></p>
  4. <p>Zakres do<input type="text" id="ZakresDo" name="ZakresDo" size="15" /></p>
  5. <p>Liczba produktow<input type="text" id="LiczbaProduktow" name="LiczbaProduktow" size="15" /></p>
  6. <input type="submit" name="subGeneruj" value="Generuj"/></p>
  7. <p>Nazwa pliku do zapisania: <input id="txtNazwaPliku" name="txtNazwaPliku" value="Tabelka.csv" /></p>
  8. </form>
  9. </body>
  10. <?
  11. $ZakresOd = $_GET['ZakresOd'];
  12. $ZakresDo = $_GET['ZakresDo'];
  13. $LiczbaProduktow = $_GET['LiczbaProduktow'];
  14. $LiczbaKolumn = 2;
  15.  
  16. for ($P1 = 1; $P1 <= $LiczbaWierszy; $P1++) {
  17.  
  18. }
  19. ?>
piotrooo89
a czy mógłbyś pokazać jak wyglądają dane a jak Ty chcesz żeby to wyglądało?
blade-mrn
Witam, Nie bardzo rozumiem czemu ma to służyć ale myślę, że da się to zrobić za pomocą pętli np. tak:
  1. <?php
  2. $LiczbaProduktow = 10;
  3. $ZakresDo = 10;
  4. $ZakresOd = 0;
  5. $produkt = 1;
  6. for ($i=1;$i<=$LiczbaProduktow*($ZakresDo-$ZakresOd);$i++)
  7. {
  8. echo 'produkt = '.$produkt.' cos tam = '.$i.'<br />';
  9. if ($i % ($ZakresDo-$ZakresOd) == 0) { $produkt += 1;}
  10. }
  11. ?>

Oczywiście obrazuje to tylko zasadę jak można taki efekt uzyskać. Bo jak pisał piotrooo89 nie wiem jak wyglądają dane i jak chcesz aby to wyglądało.
Maciek1705
Ok pokaże mniej więcej do 4 produktów jak by to wyglądało:

-------------------
produkt | seria |
-------------------
1 | 1
1 | 2
1 | 3
1 | 4
2 | 1
2 | 2
2 | 3
2 | 4
3 | 1
3 | 2
3 | 3
3 | 4

itd gdzie w tej kolumnie seria jest zakres od 1 do 4 a w kolumnie produkty jest liczba produktów 3 wybrana dla przykładu naturalnie

blade-mrn Twoja pętla jest prawie taka o jaką mi chodziło tyle że ona non stop dodaje tą drugą kolumnę czyli "coś tam" a to ma być coś jak dałem powyżej ja tu właśnie próbuje to przerobić ale coś jeszcze nie idzie tak jak powinno
blade-mrn
Na początku myślałem, że ma to tak wyglądać ale zmyliło mnie to twoje "będzie 1 przez 4000 wierszy w 4001 wierszu 1 zmieni się na 2" i pomyślałem, że produkt ma się zmienić a reszta lecieć dalej. W taki wypadku wystarczy dodać drugą pętlę.
  1. <html>
  2. <head>
  3. <?php
  4. $LiczbaProduktow = $_POST['LiczbaProduktow'];
  5. $ZakresDo = $_POST['ZakresDo'];
  6. $ZakresOd = $_POST['ZakresOd'];
  7. echo '-------------------<br />produkt | seria |<br />-------------------<br />';
  8. for ($i=1;$i<=$LiczbaProduktow;$i++)
  9. {
  10. for ($j=$ZakresOd;$j<=$ZakresDo;$j++)
  11. {
  12. echo $i.' | '.$j.'<br />';
  13. }
  14. }
  15. ?>

  1. </head>
  2. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  3. Liczba Produktow: <input type="text" name="LiczbaProduktow"><br />
  4. ZakresOd: <input type="text" name="ZakresOd"><br />
  5. ZakresDo: <input type="text" name="ZakresDo"><br />
  6. <input type="submit" value="generuj">
  7. </form>
  8. </body>
  9. </html>
Maciek1705
No dokładnie o to mi chodziło masz za to "Pomógł" ostatnie pytanie już nie będę smęcił jak teraz to zrobić żeby np nie pokazywał się wynik działania a żeby ten wynik zapisać do pliku "tab1.csv" mam tak ale ani błędu nie ma ani nie zapisuje:
  1. <?php
  2. $NazwaPliku= tab1.csv;
  3. $Plik = @fopen($NazwaPliku, "w");
  4.  
  5. if(!$Plik)
  6. {
  7. print("<p>Otwarcie pliku $NazwaPliku nie powiodła się</p>");
  8. }
  9. else
  10. {
  11. @fputs($Plik, $TekstDoPliku);
  12.  
  13. $LiczbaProduktow = $_POST['IloscProduktow'];
  14. $ZakresDo = $_POST['ZakresDo'];
  15. $ZakresOd = $_POST['ZakresOd'];
  16.  
  17. for ($i=1;$i<=$LiczbaProduktow;$i++)
  18. {
  19. for ($j=$ZakresOd;$j<=$ZakresDo;$j++)
  20. {
  21. @fputs($Plik, $i.';'.$j.'<br />');
  22. }
  23. }
  24. @fclose($Plik);
  25. }
  26. ?>
blade-mrn
Nazwa pliku musi być przekazana jako ciąg znaków. Zrób ja w apostrofach.
  1. $NazwaPliku= 'tab1.csv';

Maciek1705
jezu jaka siara tongue.gif dzięki wielkie wszystko śmiga jak trzeba. Pozdrawiam temat do zamknięcia
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.