Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] przegladanie tablicy, problem z forech
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Mam tablicę $godziny, która zawiera przykładowe dane:

godziny[0] => 1:00
godziny[1] => 2:00
godziny[2] => 3:00
godziny[3] => 4:00
godziny[4] => 5:00
godziny[5] => 6:00
godziny[6] => 7:00


Gdy zastosuję następujący kod:
  1. <?php
  2. foreach ( $_POST['godziny'] as $key => $godziny )
  3. {
  4. zapiszDoBazy($_POST['godziny'][$key],$_POST['godziny']);
  5. }
  6. ?>


To w bazie mam wpisy:

1:00 1:00
2:00 2:00
3:00 3:00

A mają być:
1:00 2:00
3:00 4:00
itd.

Jak sobie z tym poradzić? Mógłbym zastosować dodatkową zmienną i jeśli byłaby parzysta to wtedy ładować dane do bazy ale może jest bardziej optymalny sposób (jakaś gotowa funkcja)? Kombinowałęm też z next() ale jej uzycie wyklucza foreach bo to byłoby bez sensu..

Ten post edytował J4r0d 13.11.2006, 11:49:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
bili.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 11.11.2006

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


Jakie parametry przyjmuje zapiszDoBazy() ?
Go to the top of the page
+Quote Post
nexis
post
Post #3





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


A możesz pokazać funkcję zapiszDoBazy()?

  1. <?php
  2. foreach ( $_POST['godziny'] as $key => $godziny ) {
  3. zapiszDoBazy($godziny);
  4. }
  5. ?>
Go to the top of the page
+Quote Post
Jarod
post
Post #4





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Możę inaczej:
  1. <?php
  2. foreach ( $_POST['godziny'] as $key => $godziny )
  3. {
  4. mysql_query("INSERT INTO godziny VALUES (" .$godziny. ", " .$godziny. " ) or die ('Zapytanie nieudane!'.mysql_error());
  5. }
  6. ?>


Chodzi o to, że do bazy mogę zapisać dopiero wtedy jak pobiorę 2 kolejne alementy tablicy. Rozwiązanie, które podałem zapisuje do bazy po każdym pobranie elementu..

PS. Napisałem bez '' bo kod się rozjeżdza.

Ten post edytował J4r0d 12.11.2006, 23:40:00
Go to the top of the page
+Quote Post
bili.pl
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 11.11.2006

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


Weź jeszcze dokładnie wyjaśnij co chcesz zrobić. Zapisać do każdego rekordu po 2 kolejne godziny z tablicy?
Go to the top of the page
+Quote Post
Jarod
post
Post #6





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(bili.pl @ 12.11.2006, 23:40:21 ) *
Weź jeszcze dokładnie wyjaśnij co chcesz zrobić. Zapisać do każdego rekordu po 2 kolejne godziny z tablicy?


Ok jeszcze raz napiszę. Mam tablicę $godziny, która zawiera przykładowe dane (na przemian godzina rozpoczęcia i godzina zakończenia):

godziny[0] => 1:00 - godzina rozpoczecia
godziny[1] => 2:00 - godzina zakonczenia

godziny[2] => 3:00 - godzina rozpoczecia
godziny[3] => 4:00 - godzina zakonczenia

godziny[4] => 5:00 - godzina rozpoczecia
godziny[5] => 6:00 - godzina zakonczenia

W bazie mam pola godzina_rozpoczecia i godzina_zakonczenia. Jak za pomocą foreach zapisać godziny do bazy, gdzie na pojedynczy rekord składa się dwie godziny.
Go to the top of the page
+Quote Post
bili.pl
post
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 11.11.2006

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


Podziel tak tą tablicę, żeby każdy jej element był tablicą dwuelementową zawierającą godzinę rozp. i zak. Skorzystaj z
  1. <?php
  2. array_chunk($tablica,2);
  3. ?>

Potem jak jedziesz foreach to korzystaj z $godziny[0] (g. rozp.) i $godziny[1] (g. zakończenia). Skoro nie korzystasz w pętli foreach z klucza to nie używaj
  1. <?php
  2. foreach ( $_POST['godziny'] as $key => $godziny )
  3. ?>

tylko
  1. <?php
  2. foreach ( $_POST['godziny'] as $godziny )
  3. ?>
Go to the top of the page
+Quote Post
Jarod
post
Post #8





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(bili.pl @ 12.11.2006, 23:50:20 ) *
Potem jak jedziesz foreach to korzystaj z $godziny[0] (g. rozp.) i $godziny[1] (g. zakończenia).


Wypisuje mi:
1 .
2 .
3 .
4 .
itd.
Go to the top of the page
+Quote Post
bili.pl
post
Post #9





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 11.11.2006

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


A co dokładnie zrobiłeś?

  1. <?php
  2. foreach ( array_chunk($_POST['godziny'],2) as $godziny )
  3. {
  4. mysql_query("INSERT INTO godziny VALUES ('" .$godziny[0]. "', '" .$godziny[1]. "' ) or die ('Zapytanie nieudane!'.mysql_error());
  5. }
  6. ?>


Ten post edytował bili.pl 13.11.2006, 07:40:01
Go to the top of the page
+Quote Post
UDAT
post
Post #10





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

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


  1. <?php
  2. $size = sizeof ( $_POST['godziny'] );
  3. for ( $i = 0; $i<$size; $i=$i+) 
  4. {
  5. mysql_query("INSERT INTO godziny VALUES ( '$_POST['godziny'][$i]'". ", " .$_POST['godziny'][$i+1].")" );
  6. }
  7. ?>


EDIT: Napisz mysql_query od nowa bo się rozjeżdża

Ten post edytował UDAT 13.11.2006, 08:29:21
Go to the top of the page
+Quote Post
mike
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


~J4r0d od dawna Cię obserwuję i dostrzegam, że formułujesz poprawne tematy wątków tylko wtedy jak się Cie o to poprosi, sam z siebie jakoś zapominasz.

Mam nadzieje, że ostrzeżenie Cie zmotywuje do tego by pamiętać zawsze.

P.S.
Proszę poprawić temat wątku.
Nie jest zgodny z zasadami pisania na forum Przedszkole.
Go to the top of the page
+Quote Post
Jarod
post
Post #12





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Problem rozwiązany.
  1. <?php
  2. $godziny = array_chunk ($_POST['godziny'], 2);
  3.  
  4.  
  5. mysql_query('START TRANSACTION') or die ('Zapytanie nieudane!');
  6.  
  7. foreach ( $godziny as $godzina )
  8. {
  9. $transakcja++;
  10. }
  11. (...)
  12. (...)
  13. (...)
  14. ?>
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: 25.08.2025 - 16:26