Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Generowanie tabeli z automatycznym zapisem
Maciek1705
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a czy mógłbyś pokazać jak wyglądają dane a jak Ty chcesz żeby to wyglądało?
Go to the top of the page
+Quote Post
blade-mrn
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Maciek1705
post
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował Maciek1705 21.10.2009, 11:51:03
Go to the top of the page
+Quote Post
blade-mrn
post
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
Maciek1705
post
Post #6





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
blade-mrn
post
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

Ostrzeżenie: (0%)
-----


Nazwa pliku musi być przekazana jako ciąg znaków. Zrób ja w apostrofach.
  1. $NazwaPliku= 'tab1.csv';

Go to the top of the page
+Quote Post
Maciek1705
post
Post #8





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

Ostrzeżenie: (0%)
-----


jezu jaka siara (IMG:style_emoticons/default/tongue.gif) dzięki wielkie wszystko śmiga jak trzeba. Pozdrawiam temat do zamknięcia
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 22:13