Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] Problem z zapisem z pętli for
Forum PHP.pl > Forum > Przedszkole
darth_wilq
Witam,
Mam problem, otóż próbuję wczytać datę podaną przez użytkownika, w tym przypadku poprzez pole wybory select, ale mam problem z zapisaniem tej zmiennej dnia/miesiaca/roku do bazy. Mam trzy takie pola wczytujące poszczególne składowe daty. Próbowałem, kombinowałem ale nie wiem dlaczego nic mi nie działa. Połączenie z bazą jest ok. Byłbym wdzięczny za pomoc.

  1. <select name="miesiac" onchange="sprawdz(this.form)">
  2. <?php
  3. for ($i=1;$i<=12;$i++) {
  4. echo '<option value="'.$i.'"';
  5. if ($i==date('i')) echo ' selected="selected"';
  6. echo '>'.$i.'</option>';
  7. }
  8. ?>



Próbowałem np. czegoś takiego, ale też nie działa.
  1. <select name="miesiac[<?php echo $row2['miesiac']; ?>]" onchange="sprawdz(this.form)">
  2. <?php
  3. for ($m=1;$m<=12;$m++) {
  4. echo '<option value="'.$m.'"';
  5. if ($m==date('m')) echo ' selected="selected"';
  6. echo '>'.$m.'</option>';
  7. }
  8. ?>
konole
Kod
<select name="miesiac[<?php echo $row2['miesiac']; ?>]" onchange="sprawdz(this.form)">
<?php
for ($m=1;$m<=12;$m++) {
echo '<option value="'.$m.'"';
if ($m==date('m')) echo ' selected="selected"';
echo '>'.$m.'</option>';
}
?>


Zamień date('m') na date('n').
parametr m zwraca datę z 0 na początku (01, 02, ..., 12), a n zwraca samą liczbę (1, 2, ... 12).

Ogólnie polecam ci poczytać więcej tutaj: http://pl2.php.net/manual/en/function.date.php
darth_wilq
Aha dzięki, zmienię sobie to zaraz. A chodzi mi bardziej o sposób zapisania tej zmiennej, czy jest on odpowiedni? Bo jakoś nigdy jeszcze nie pobierałem danych z pętli.
konole
Jest ok, chociaż na twoim miejscu zamieniłbym to na

Kod
for ($i=1;$i<=12;$i++) {
printf("<option value=\"%s\", $i");
if ($i==date('n'))
{
echo ' selected="selected"';
}
printf(">%s</option>', $i);
}

Dlaczego printf? Bo jest czytelniej.
darth_wilq
Próbuję, próbuję ale dalej nie zapisuje mi tych zmiennych do bazy. Połączenie jest dobre i deklarowanie chyba też. A nie wiem czemu nie gra.

  1.  
  2. $rok = $_POST['rok'];
  3. $miesiac = $_POST['miesiac'];
  4. $dzien = $_POST['dzien'];
  5.  
  6.  
  7.  
  8. $zapytanie1 = "UPDATE data SET rok='$rok', miesiac='$miesiac', dzien='$dzien' where username ='$login'";
  9. $wynik1 = mysql_query($zapytanie1);
  10. $row2 = mysql_fetch_array ($wynik1, MYSQL_ASSOC);
  11.  
  12.  
erix
Zapytanie UPDATE niczego nie zwraca, kod zachowuje się prawidłowo.
darth_wilq
Ale w innych przypadkach polecenie Update mi działało bezproblemowo. A tu zamieniłem na Insert to, ale cały czas nic nie dodaje do bazy. Wiem że to pewnie jest drobnostka, ale utknąłem przy tym i nie wiem jak poprawnie zapisać kod.
erix
mysql_error prawdę Ci powie.
darth_wilq
Przed chwilą wstawiłem mysql_error i zaszedłem trochę dalej, aczkolwiek zmieniłem pole select na normalny input text. Przy logowaniu się na konto trzeba poprawnie wpisać datę, żeby przeprowadzić proces logowania, lecz gdy sprawdzam zawartość tabeli w phpmyadmin, to dalej jest pusto :/ tak jakby to zapytanie w Insert into wogóle się nie wykonywało

Edit:

Wyjaśniło mi się wreszcie dlaczego nie dopisywało mi rekordów do tabeli. Otóż ustawiłem bardzo wysoki auto_increment (chciałem żeby id było bardzo wysokie) i dotarłem do granicy int, więc nie chciało dodawać nowych rekordów, mimo że kod był w miarę poprawny. Także problem rozwiązany, dzięki za podpowiedzi!

pozdrawiam
erix
Cytat
Przed chwilą wstawiłem mysql_error i zaszedłem trochę dalej

I czego się dowiedziałeś?
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.