Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] przegladanie tablicy
Forum PHP.pl > Forum > Przedszkole
Jarod
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..
bili.pl
Jakie parametry przyjmuje zapiszDoBazy() ?
nexis
A możesz pokazać funkcję zapiszDoBazy()?

  1. <?php
  2. foreach ( $_POST['godziny'] as $key => $godziny ) {
  3. zapiszDoBazy($godziny);
  4. }
  5. ?>
Jarod
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.
bili.pl
Weź jeszcze dokładnie wyjaśnij co chcesz zrobić. Zapisać do każdego rekordu po 2 kolejne godziny z tablicy?
Jarod
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.
bili.pl
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. ?>
Jarod
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.
bili.pl
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. ?>
UDAT
  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
mike
~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.
Jarod
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. ?>
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.