Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przetwarzanie danych z formularza, podział statystyk, żeby wrzucić do bazy
Gumiak
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 29.04.2003
Skąd: Stargard Szczeciński

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


Mam do przetworzenia, celem wrzucenia do bazy danych statystyki z meczów koszykówki.

Wrzucać je będę formularzem. Dane będą miały następujący wygląd:

4 Tomasz Wilczewski 00:00 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0
5 Rafał Partyka 32:02 1/3 33% 4/8 50% 2/5 40% 0 1 1 1 3 2 2 0 16
6 Stanisław Prus 33:23 9/12 75% 0/1 0% 3/3 100% 1 3 4 5 2 2 1 1 21
8 Dariusz Puncewicz 19:43 2/8 25% 2/4 50% 2/4 50% 1 1 2 2 2 4 2 0 12
9 Paweł Mazurek 00:00 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0
10 Robert Klocek 00:00 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0
11 Piotr Dąbrowski 00:44 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0
12 Adam Lisewski 30:49 1/3 33% 0/0 - 3/4 75% 1 3 4 2 5 3 0 2 5
13 Tomasz Wojdyła 22:31 3/9 33% 0/1 0% 0/0 - 2 4 6 1 3 0 1 0 6
14 Marcin Malczyk 35:22 1/3 33% 1/3 33% 1/2 50% 4 2 6 2 5 0 2 0 6
15 Tomasz Andrzejewski 25:23 2/7 28% 0/1 0% 2/2 100% 1 2 3 1 2 1 0 0 6
20 Marcin Kowalewski 00:00 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0

i teraz problem, że nie wiem jak to porozdzielać, to po pierwsze, a po drugie są jeszcze różne warunki, że np. jeśli zawodnik nie wykonał rzutu to zamiast 0% jest -.

Jak to porozdzielać prawidłowo, żeby później można bez problemu dodać do bazy danych?


--------------------
gg 1142714
Go to the top of the page
+Quote Post
php programmer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


można to wrzucić do pliku,
a potem ten plik otworzyć jako csv rodzielany spacjami

[MANUAL]
http://pl2.php.net/manual/pl/function.fgetcsv.php

Ten post edytował php programmer 2.09.2005, 10:24:21
Go to the top of the page
+Quote Post
Gumiak
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 29.04.2003
Skąd: Stargard Szczeciński

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


tak tylko, że tych statystyk do wklejenia będzie dużo więcej, więc najlepsze, żeby php to sam rozdzialał i wstawiał później do bazy, w przeciwnym wypadku będzie babranie się z plikami jeszcze.

Ten post edytował Gumiak 2.09.2005, 10:57:31


--------------------
gg 1142714
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dobrze by by było gdybys poszczególne elementy oddzielał np. średnikiem ;
Spacje masz np. w nazwiskach, ale w sumie i to nie problem jesli zawsze będzie nazwisko i imie.

1)wczytaj plik funkcją file(). Zwróci ci ona tablicę, której elementy to kolejne linijki z piku
2)Mając już tabele na każdeym jej elemencie (wierszu) użyj explode(';', $tabela[$i]), gdzie $i t kolejne indexy tabeli
3) w wyniku każdego explode otrzymasz tablicę której kazdy element to kolejne Twoje wartości
4) przetwarza se te wartosci z uwzglednieniem swoich warunków 0% = -
5) mając te dane budujesz i wykonujesz inserta do mysql

To taki pseudo kod. Na forum bylo wiele juz takich przykladów. MOżesz poszukać jesli to ci nie wystarcza


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Gumiak
post
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 29.04.2003
Skąd: Stargard Szczeciński

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


oodzielanie średnikiem nie jest za bardzo możliwe, bo chodzi, żeby danych nie trzeba było modyfikować, bo jesli będzie do wklejenia np. 15 meczów na raz czyli 30 druzyn, to będzie to zbyt czasochłonne.

Na razie mam coś takiego, ale nie za bardzo to mi działa. Z formularza wysyła wszystko ale $zawodnik drukuje, a nie rozdziela prawidłowo na poszczególne elementy.

  1. <?php
  2. $linia = explode("n", $_POST['dane']);
  3.  
  4. $ile=count($linia);
  5. $linia[$ile-1].='n';
  6. $i=0;
  7.  
  8.  
  9. foreach ($linia as $zawodnik) {
  10. echo "$zawodnik<br>";
  11. if (preg_match ("/(d).-.(.+) (.+) (.+):(.+) (d+)/(d+) (.+) (d+)/(d+) (.+) (d+)/(d+) (.+) (d+) (d+) (d+) (d+) (d+) (d+) (d+) (d+) (.+).+/i", $zawodnik, $out)) {
  12.     //print_r($out);
  13.     echo "Imie:".$out[2]."<br>";
  14.     echo "Nazwisko:".$out[3]."<br>";
  15.     echo "imie:".$out[2]."<br>";
  16.     if ( $out[5]!="00" && $out[4]=="00")
  17.         $out[4]="01";
  18.     echo "czas:".$out[4]."<br>";
  19.  
  20.     echo "c1:".$out[6]."<br>";
  21.         echo "o2:".$out[7]."<br>";
  22.         echo "c2:".$out[9]."<br>";
  23.         echo "o2:".$out[10]."<br>";
  24.         echo "c3:".$out[12]."<br>";
  25.         echo "o3:".$out[13]."<br>";
  26.         echo "za:".$out[15]."<br>";
  27.         echo "zo:".$out[16]."<br>";
  28.         echo "zs:".$out[17]."<br>";
  29.         echo "as:".$out[18]."<br>";
  30.         echo "f:".$out[19]."<br>";
  31.         echo "st:".$out[20]."<br>";
  32.         echo "pr:".$out[21]."<br>";
  33.         echo "bl".$out[22]."<br>";
  34.         echo "punkty:".$out[23]."<br>";
  35.  
  36.  }
  37. echo "<hr>";
  38. }
  39. ?>


Ten post edytował Gumiak 2.09.2005, 11:12:54


--------------------
gg 1142714
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


A te statystyki nie moga byc w inny sposob przytgotowywane do wklejenia?
Skad je pobierasz? Arkusz kalkulacyjny? PLik textowy?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Gumiak
post
Post #7





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 29.04.2003
Skąd: Stargard Szczeciński

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


nie bardzo bo jest ich dużo i to byłoby najwygodniejsze rozwiązanie. wiem, ze niektore portale działają w ten sposob.

a są pobierane wprost ze strony www.


--------------------
gg 1142714
Go to the top of the page
+Quote Post
Pigula
post
Post #8





Grupa: Zarejestrowani
Postów: 446
Pomógł: 0
Dołączył: 5.03.2005
Skąd: Lublin

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


a ja mam takie pytanie te wyniki sa jakos wysylane ze strony do ciebie czy masz je odczytac z kodu zrodlowego. jezeli to drugie wyjscuie to musisz poprosty wyrazeniami regularnymi powycinac w kodzie co cie interesuje troche bedziesz miec przy tym zabawy winksmiley.jpg kiedys byla o tym dyskujsa (a raczej podobny problem byl ale wtedy chodzilo tylko o jedna dana)
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Te dane sa ze strony www?
A sa chociaz jakos strukturalnie poukladane tak zeby mozna ten fragment htmla potraktowac parserem XMLa i wyciagnac potrzebne dane?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
krz2006
post
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.09.2005

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


A ja mysle ze najlatwiej bedzie to zrobic przez uzycie funkcji explode.
Np cos takiego:
  1. <?php
  2.  
  3. $a = explode("n", $dane_do_podzialu);
  4. for($x=0;$x<count($a);$x++)
  5. {
  6. //Tu bedzie nastepny explode i reszta funkcji ktore tu chcesz miec
  7. $b = explode(" ", $a[$x]);
  8. $numer_zawodnika = $b[0];
  9. $imie_zawodnika = $b[1];
  10. //itd... pozniej to sobie albo wrzucasz do bazy danych.. albo gdzie chcesz..
  11. }
  12.  
  13. /* Pokazuje dane, zebys latwiej mogl zobaczyc o co mi chodzi tongue.gif 
  14. 4 Tomasz Wilczewski 00:00 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0 
  15. 5 Rafał Partyka 32:02 1/3 33% 4/8 50% 2/5 40% 0 1 1 1 3 2 2 0 16 
  16. 6 Stanisław Prus 33:23 9/12 75% 0/1 0% 3/3 100% 1 3 4 5 2 2 1 1 21 
  17. 8 Dariusz Puncewicz 19:43 2/8 25% 2/4 50% 2/4 50% 1 1 2 2 2 4 2 0 12 
  18. 9 Paweł Mazurek 00:00 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0 
  19. 10 Robert Klocek 00:00 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0 
  20. 11 Piotr Dąbrowski 00:44 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0 
  21. 12 Adam Lisewski 30:49 1/3 33% 0/0 - 3/4 75% 1 3 4 2 5 3 0 2 5 
  22. 13 Tomasz Wojdyła 22:31 3/9 33% 0/1 0% 0/0 - 2 4 6 1 3 0 1 0 6 
  23. 14 Marcin Malczyk 35:22 1/3 33% 1/3 33% 1/2 50% 4 2 6 2 5 0 2 0 6 
  24. 15 Tomasz Andrzejewski 25:23 2/7 28% 0/1 0% 2/2 100% 1 2 3 1 2 1 0 0 6
  25. 20 Marcin Kowalewski 00:00 0/0 - 0/0 - 0/0 - 0 0 0 0 0 0 0 0 0
  26. */
  27.  
  28. ?>


poprawiam
---
nospor


Powiedz dokladnie(ze szczegolami) jak to ma dzialac... co i skad ma pobierac.. to moze napisze ten skrypt dla Ciebie...

Pozdrawiam
Go to the top of the page
+Quote Post
Gumiak
post
Post #11





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 29.04.2003
Skąd: Stargard Szczeciński

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


Więc tak. Widziałem na jednym portalu, że robią to tak:


wchodzą na strone:
np. http://www.spojnia.com/spojnia_basket.htm

kopiują jedną drużynę (bez miesania w plikach smile.gif) wklejają to w pole formularza i php im wszystko robi i dzieli i dodaje do bazy danych.


Więc to po prostu dane będą z roznych stron kopiowane i wklejane do formularza.

Ten post edytował Gumiak 3.09.2005, 12:24:42


--------------------
gg 1142714
Go to the top of the page
+Quote Post
krz2006
post
Post #12





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.09.2005

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


Dobra... Dalej nie napisales szczegolow.... wiec napisalem Ci prosty skrypcik jako przyklad jak to mozna zastosowac...

Jak skrypt sie komus nie podoba to niech nie patrzy... doslownie 3 min go pisalem... Jest bardzo prosty.. latwo w nim wprowadzac zmiany...

Prawdopodobnie chcesz te dane wrzucic do bazy... albo do jakiegos pliku(np: tabela12.htm) to poprostu dopiszesz sobie kawalek kodu, ktory to robi. Ja Ci tylko pokazalem przyklad jak to mozna zrobic. Wstawilem razem z HTMLem zebys mogl latwo podmienic go swoim... Skopiuj najzwyczajniej caly ponizszy fragment kodu do jakiegos pliczku *.php i bedzie dzialac.

  1. <?
  2.  
  3. if(IsSet($tekst)) start2($tekst);
  4. start();
  5.  
  6.  
  7. function start()
  8. {
  9.     global $PHP_SELF;
  10. ?>
  11. <body text="#FFFFFF" bgcolor="#000000">
  12.  
  13. <p align="center">&nbsp;</p>
  14. <p align="center">&nbsp;</p>
  15. <p align="center">Wpisz tabele:</p>
  16. <form method="POST" action="<? print($PHP_SELF); ?>">
  17.   <p align="center">
  18.   <textarea rows="14" name="tekst" cols="65" style="color: #FF8000; background-color: #000000"></textarea></p>
  19.   <p align="center"><input type="submit" value="Prześlij" name="B1"></p>
  20. </form>
  21. <p align="center">&nbsp;</p>
  22.  
  23. </body>
  24.  
  25. <?
  26. }
  27.  
  28.  
  29. function start2($dane_do_podzialu)
  30. {
  31. ?>
  32. <html>
  33. <head>
  34. <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
  35. <meta name="ProgId" content="FrontPage.Editor.Document">
  36. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  37. <title>Stworzone przez Piotra Krzyżanowskiego e-mail: moderator@interia.pl</title>
  38. <style>
  39. <!--
  40. .tableborder { background-color: #fff; border: 1px solid #595959 }
  41. td { font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 11px; color: #3F3F3F }
  42. .row1 { color: #3F3F3F; background-color: #f3f2f0 }
  43. .postcolor { font-size: 12px; line-height: 160% }
  44. .programlisting { overflow: auto; overflow-y: hidden }
  45.  
  46. -->
  47. </style>
  48. </head>
  49.  
  50. <body text="#FFFFFF" bgcolor="#000000">
  51.  
  52. <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  53. <tr>
  54. <?
  55. $a = explode("n", $dane_do_podzialu);
  56.     for($x=0;$x<count($a);$x++)
  57.     {
  58.         $b = explode(" ", $a[$x]);
  59.         for($z=0;$z<19;$z++)
  60.         {
  61.         echo '<td width="5%" align="center"><span class="postcolor"><font color="#ff8000">'.$b[$z].'</font></span></td>';
  62.         }
  63.     echo "</tr>";
  64.     }  
  65. echo "</table>";
  66. echo "</body>";
  67. echo "</html>";
  68.  
  69. }
  70.  
  71. ?>


Pozdrawiam

Ten post edytował krz2006 3.09.2005, 13:30:29
Go to the top of the page
+Quote Post
Gumiak
post
Post #13





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 29.04.2003
Skąd: Stargard Szczeciński

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


o.k. działa, tyle, że ja potrzebowałbym troszkę innego rozwiązania.

tutaj rozdziela tylko na podstawie spacji drukuje jak jest, a ja potrzebowałbym rozdzielić wszystko na poszczególne elementy np.: 1/3 zeby było 1 3

powiedzmy ze po przetworzeniu tym formularzem otrzymuje wartości

4 - Piotr Nizioł 30:53 1/3 33% 1/2 50% 4/4 100% 0 1 1 5 3 3 1 0

i teraz jak odwołać się do poszczególnej wartości (np. procentu rzutów wolnych czyli tutaj 100%)



P.s. przepraszam za bełkot, ale ciężko mi to wytłumaczyć smile.gif Jakby coś jestem na gg smile.gif -> 1142714


--------------------
gg 1142714
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 23:22