Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z datami pobranymi z formularza (1 zamiast 01)
Forum PHP.pl > Forum > Przedszkole
japek
Kto powie mi o co chodzi? smile.gif wybierając datę z formularza z jakiegoś przedziału tworzę tabblice z datami. Oczywiście chcę aby 1 był zapisany jako 01 2 to 02 itp. Zrobilem warunek dla dnia i dla miesiąca ale mimo to pojawiają sie "gołe" liczby od 1 do 9. A te warunki działają dalej gdy wybieram dane z bazy za pomocą Between. Dlaczego tu nie działa poprawnie podczas gdy dalej działa?

  1. <?php
  2. for($d1=1; $d1<=9; $d1++) {
  3. if(substr($_POST['day1'],0,2)=="$d1") {
  4. $_POST['day1']="0$d1";
  5. }
  6. }
  7.  
  8. for($d2=1; $d2<=9; $d2++) {
  9. if(substr($_POST['day2'],0,2)=="$d2") {
  10. $_POST['day2']="0$d2";
  11. }
  12. }
  13.  
  14. for($m1=1; $m1<=9; $m1++) {
  15. if(substr($_POST['month1'],0,2)=="$m1") {
  16. $_POST['month1']="0$m1";
  17. }
  18. }
  19.  
  20. for($m2=1; $m2<=9; $m2++) {
  21. if(substr($_POST['month2'],0,2)=="$m2") {
  22. $_POST['month2']="0$m2";
  23. }
  24. }
  25.  
  26. $tab_data=array();
  27. for ($y=$_POST['year1']; $y<=$_POST['year2']; $y++) {
  28. for ($m=$_POST['month1']; $m<=$_POST['month2']; $m++) {
  29. for ($d=$_POST['day1']; $d<=$_POST['day2']; $d++) {
  30. $data_form=$y.'.'.$m.'.'.$d;
  31. $tab_data[]=$data_form;
  32. }
  33. }
  34. }
  35. ?>
siemakuba
A czy nie prościej użyć funkcji str_pad" title="Zobacz w manualu php" target="_manual?
  1. <?php
  2. $a = 1;
  3. $b = 12;
  4. $c = 3;
  5.  
  6. str_pad($a,2,0,STR_PAD_LEFT); // 01
  7. str_pad($b,2,0,STR_PAD_LEFT); // 12
  8. str_pad($c,2,0,STR_PAD_LEFT); // 03
  9. ?>


pozdr.
japek
Coś działanie takie samo widzę - wrzuciłem po prostu zamiast Twoich przykładowych zmiennych $_POST['x'] dla każdej pobieranej wartości.

Może formularz nie taki?

  1. <?php
  2. function lista() {
  3.  
  4. echo '<select name="day">';
  5. echo"<option value="$day">-</option>n";
  6. for ($day=1; $day<=31; $day++) {
  7. echo"<option value="$day">$day</option>n";
  8. }
  9. echo'</select>
  10.  
  11. <select name="month">';
  12. echo"<option value="$month">-</option>n";
  13. for ($month=1; $month<=12; $month++) {
  14. echo"<option value="$month">$month</option>n";
  15. }
  16. echo'</select>
  17.  
  18. <select name="year">';
  19. echo"<option value="$year">-</option>n";
  20. for ($year=2003; $year<=2006; $year++) {
  21. echo"<option value="$year">$year</option>n";
  22. }
  23.  
  24. echo'</select>';
  25. }
  26. ?>
siemakuba
A daeczego nie ustawić tych zmiennych od razu w formularzu?

  1. <?php
  2. echo '<select name="day">';
  3. echo"<option value="-">-</option>n";
  4.  
  5. for ($day=1; $day<=31; $day++) {
  6. echo '<option value="'.str_pad($day, 2, 0, STR_PAD_LEFT).'">'.$day.'</option>';
  7. }
  8.  
  9. echo'</select>';
  10. ?>


pozdr,
japek
Grrrrr....dalej to samo, zrobiłem wszystko jak napisałeś :] i ciągle tylko pierwszy miesiąc jest dobrze i pierwszy dzień a od 2 do 9-tki jest źle.
siemakuba
Pokaż cały ten kod, bo naprawdę już nie rozumiem czemu nie jest tak jak być powinno.

pozdr.
japek
  1. <?php
  2. function lista1() {
  3.  
  4. echo '<select name="day1">';
  5. echo"<option value="$day1">-</option>n";
  6. for ($day1=1; $day1<=31; $day1++) {
  7. echo'<option value="'.str_pad($day1, 2, 0, STR_PAD_LEFT).'">'.$day1.'</option>n';
  8. }
  9. echo'</select>
  10.  
  11. <select name="month1">';
  12. echo"<option value="$month1">-</option>n";
  13. for ($month1=1; $month1<=12; $month1++) {
  14. echo'<option value="'.str_pad($month1, 2, 0, STR_PAD_LEFT).'">'.$month1.'</option>n';
  15. }
  16. echo'</select>
  17.  
  18. <select name="year1">';
  19. echo"<option value="$year1">-</option>n";
  20. for ($year1=2003; $year1<=2006; $year1++) {
  21. echo'<option value="'.str_pad($year1, 2, 0, STR_PAD_LEFT).'">'.$year1.'</option>n';
  22. }
  23.  
  24. echo'</select>';
  25. }
  26.  
  27. function lista2() {
  28.  
  29. echo '<select name="day2">';
  30. echo"<option value="$day2">-</option>n";
  31. for ($day2=1; $day2<=31; $day2++) {
  32. echo'<option value="'.str_pad($day2, 2, 0, STR_PAD_LEFT).'">'.$day2.'</option>n';
  33. }
  34. echo'</select>
  35.  
  36. <select name="month2">';
  37. echo"<option value="$month2">-</option>n";
  38. for ($month2=1; $month2<=12; $month2++) {
  39. echo'<option value="'.str_pad($month2, 2, 0, STR_PAD_LEFT).'">'.$month2.'</option>n';
  40. }
  41. echo'</select>
  42.  
  43. <select name="year2">';
  44. echo"<option value="$year2">-</option>n";
  45. for ($year2=2003; $year2<=2006; $year2++) {
  46. echo'<option value="'.str_pad($year2, 2, 0, STR_PAD_LEFT).'">'.$year2.'</option>n';
  47. }
  48.  
  49. echo'</select>';
  50. }
  51. ?>


  1. <?php
  2. $tab_data1=array();
  3. for ($y=$_POST['year1']; $y<=$_POST['year2']; $y++) {
  4. for ($m=$_POST['month1']; $m<=$_POST['month2']; $m++) {
  5. for ($d=$_POST['day1']; $d<=$_POST['day2']; $d++) {
  6. $data_form=$y.'.'.$m.'.'.$d;
  7. $tab_data1[]=$data_form;
  8. $lt=count($tab_data1);
  9. }
  10. }
  11. }
  12. ?>
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.