formularz i funkcja

Odpowiedz Nowy wątek
2008-11-18 20:42
0

Witam serdecznie!
Czy ktoś mógłby mnie naprowadzić jak zrobić żeby w wyświetlanej tabeli w polu ilość dni pojawiła się obliczona wartość po wpisaniu daty w pole od i do. Wpisuję np. w pole od 2008-11-12 i w pole do 2008-11-28 i powinna się pokazać w tabeli wartość obliczona przez funkcję workDays.

Z góry dziękuję za pomoc.

<HTML>
  <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
    <TITLE>baza</TITLE>
  </HEAD>
  <BODY>
    <? // Aplikacja daje nam możliwość odczytu, kasowania, dodawania
       // i poprway danych w bazie.

      mysql_connect ("localhost", "root", "") or
        die ("Nie można połączyć się z MySQL");
      mysql_select_db ("ksiazkatelefoniczna") or
        die ("Nie można połączyć się z bazą ksiazkatelefoniczna");

      if ($co == 'dodaj') {  // dodawanie rekordu
        if ($imie && $nazwisko && $telefon && $od && $do) {
          $query = "INSERT INTO ksiazkatelefoniczna (nr, imie, nazwisko, ";
          $query .= "telefon, od, do, iloscdni) VALUES ('', '$imie', '$nazwisko', '$telefon', '$od', '$do'$iloscdni');";
          $wynik = mysql_query ($query);
        }
      } elseif ($co == 'popraw') {  // poprawianie rekordu
        if ($imie && $nazwisko && $telefon && $od && $do) { 
          $query = "UPDATE ksiazkatelefoniczna SET imie='$imie', nazwisko=";
          $query .= "'$nazwisko', telefon='$telefon', od='$od', do='$do',iloscdni=$iloscdni, WHERE nr='$id';";
          $wynik = mysql_query ($query);
        }
      } elseif ($co == 'edytuj') {  // przygotowanie do poprawek
         $query = "SELECT * FROM ksiazkatelefoniczna where nr='$id';";
         $wynik = mysql_query ($query);
         $rekord = mysql_fetch_array ($wynik);
         $id = $rekord[0]; $imie = $rekord[1]; $nazwisko = $rekord[2];
         $telefon = $rekord[3]; $od = $rekord[4]; $do = $rekord[5]; $iloscdni=$rekord[6];
         print '<FORM METHOD="POST">Poprawa rekordu:';
         print '<INPUT TYPE="hidden" NAME="co" VALUE="popraw">';
         print '<INPUT TYPE="hidden" NAME="id" VALUE="'.$id.'"><TABLE>';
         print '<TR><TD>Imię:</TD><TD><INPUT TYPE="text" ';
         print 'NAME="imie" VALUE="'.$imie.'"></TD></TR><TR><TD>Nazwisko:';
         print '</TD><TD><INPUT TYPE="text" NAME="nazwisko"';
         print 'VALUE="'.$nazwisko;
         print '"></TD></TR><TR><TD>Telefon:</TD><TD><INPUT TYPE="text"';
         print 'NAME="telefon" VALUE="'.$telefon.'"></TD></TR>';
                 print '"></TD></TR><TR><TD>Od:</TD><TD><INPUT TYPE="text"';
         print 'NAME="data1" VALUE="'.$data1.'"></TD></TR>';
                 print '"></TD></TR><TR><TD>Do:</TD><TD><INPUT TYPE="text"';
         print 'NAME="telefon" VALUE="'.$data2.'"></TD></TR>';
         print '</TABLE><INPUT TYPE="submit" VALUE="Popraw"></FORM>';
      } elseif ($co == 'skasuj') {  // kasowanie
        $wynik = mysql_query 
             ("DELETE FROM ksiazkatelefoniczna WHERE nr = '$id';");
      }

      $wynik = mysql_query ("SELECT * FROM ksiazkatelefoniczna;");

      print "<TABLE CELLPADDING=8 BORDER=1>";
      print "<TR><TD><B>Imię</B></TD><TD><B>Nazwisko</B></TD>";
      print "<TD><B>Telefon</B></TD><TD><B>Od</B></TD><TD><B>do</B></td>";
            print "<td><b>ilość dni</b></td>";
            echo workDays($_POST['data1'], $_POST['data2']);

      while ($rekord = mysql_fetch_array ($wynik)) {
        $id = $rekord[0];
        $imie = $rekord[1];
        $nazwisko = $rekord[2];
        $telefon = $rekord[3];
                $data1 = $rekord[4];
                $data2 = $rekord[5];
                $iloscdni = $rekord[6];

        print "<TR><TD>$imie</TD><TD>$nazwisko</TD><TD>$telefon</TD><TD>$od</TD><TD>$do</TD><td>$iloscdni</td>";
        print "<TD><A HREF=\"4-29.php?co=skasuj&id=$id\">skasuj</A></TD><TD>";
        print "<A HREF=\"4-29.php?co=edytuj&id=$id\">edytuj</A></TD></TR>\n";
      }
      print "</TABLE>";
      print '<FORM METHOD="POST">Nowy rekord:';
      print '<INPUT TYPE="hidden" NAME="co" VALUE="dodaj"><TABLE>';
      print '<TR><TD>Imię:</TD><TD><INPUT TYPE="text" ';
      print 'NAME="imie"></TD></TR><TR><TD>Nazwisko:</TD><TD><INPUT ';
      print 'TYPE="text" NAME="nazwisko"></TD></TR><TR><TD>Telefon:</TD>';
      print '<TD><INPUT TYPE="text" NAME="telefon"></TD></TR>';
            print '<TR><TD>od:</TD><TD><INPUT TYPE="text" ';
      print 'NAME="data1"></TD></TR><TR><TD>do:</TD><TD><INPUT ';
      print 'TYPE="text" NAME="data2"></TD></TR>';
      print '</TABLE><INPUT TYPE="submit" VALUE="Dodaj"></FORM>';

function workDays($date1, $date2, $withStartDay = true) { 
    $date1=strtotime($date1); 
    $date2=strtotime($date2); 
    if ($date2===$date1 && !$withStartDay) return 0; 
    $char=1; 
    if ($date1>$date2) 
        {$datePom=$date1;$date1=$date2;$date2=$datePom;$char=-1;} 
    $count=0; 
    if (!$withStartDay) 
        $date1=strtotime('+1 day',$date1); 
    $date2=strtotime('+1 day',$date2); 
    $lastYear = null; 
    $hol=array('01-01','05-01','05-03','08-15','11-01','11-11','12-25','12-26'); 
    while ($date1<$date2) { 
        $year = date('Y', $date1); 
        if ($year !== $lastYear){ 
            $lastYear = $year; 
            $easter = date('m-d', easter_date($year)); 
            $date = strtotime($year . '-' . $easter); 
            $easterSec = date('m-d', strtotime('+1 day', $date)); 
            $cc = date('m-d', strtotime('+60 days', $date)); 
            $hol[8] = $easter; 
            $hol[9] = $easterSec; 
            $hol[10] = $cc;
        } 
        $weekDay=date('w',$date1); 
        if (!($weekDay==0 || $weekDay==6 || in_array(date('m-d',$date1),$hol))) 
            $count++; 
        $date1=strtotime('+1 day',$date1); 
    } 
    $count*=$char; 
    return $count; 
} 
?>

  </BODY>
</HTML> 

Pozostało 580 znaków

2008-11-19 10:39
guest123
0

Wyłącz register_globals w php. Następnie przypisz do krótszych zmiennych ( $co, $od, ... ) wartości z tablicy globalnej $_POST (właśnie i zwykle w tej tablicy przechowywane są dane z formularzy ). Przykład:

$co = $_POST['co'];
$od = $_POST['od'];

// ... i tak dalej ...

Pozostało 580 znaków

2008-11-19 15:44
0

Mimo że niektóre książki to praktykują to ja uważam że używanie register_globals to wystawianie się hakerom. Sami autorzy uznali tą funkcję za niebezpieczną i zostanie ona usunięta w PHP 6. Dodaj też linki do połączeń MySQL w każdym zapytaniu.


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

2008-11-20 21:00
0

Wielkie dzięki!
Myślę, że już sobie poradzę.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0