βοηθεια με script ημερομηνιας sossss!

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
stavroula_apo
Δημοσιεύσεις: 121
Εγγραφή: 18 Σεπ 2010 03:12

βοηθεια με script ημερομηνιας sossss!

Δημοσίευση από stavroula_apo » 31 Οκτ 2011 10:45

Έχω φτιάξει την εξής φόρμα καταχωρήσης. Υπάρχει πεδίο όπου γίνεται καταχώρηση ημερομηνίας. Το προβλημα μου είναι ότι οταν δεν καταχωρησω άλλο πεδίο εκτός της ημερομηνίας μου εμφανίζει το script που λέει δεν καταχωρησατε το ταδε πεδίο και μόλις πατησω οκ, μου εμφανίζεται αμέσως το script που έχω βάλει για την ημερομηνία. Οτι δλδ η ημερομηνια πρέπει να ειναι της μορφης ταδε. Αυτό ομως θέλω να εμφανίζεται όταν δεν πληκτρολογώ έγκυρη ημερομηνια.
Ο κωδικας ειναι:

Κώδικας: Επιλογή όλων

<?php require&#40;"db.php"&#41;;
if&#40;$_SESSION&#91;'access'&#93;!=3&#41;&#123;
	header&#40;'location&#58;index.php'&#41;;
	exit;
&#125;
function isValidDateTime&#40;$dateTime&#41;
&#123;
    $dateTime.=" 00&#58;00&#58;00";

    if &#40;preg_match&#40;"/^&#40;\d&#123;4&#125;&#41;-&#40;\d&#123;2&#125;&#41;-&#40;\d&#123;2&#125;&#41; &#40;&#91;01&#93;&#91;0-9&#93;|2&#91;0-3&#93;&#41;&#58;&#40;&#91;0-5&#93;&#91;0-9&#93;&#41;&#58;&#40;&#91;0-5&#93;&#91;0-9&#93;&#41;$/", $dateTime, $matches&#41;&#41; &#123;

        if &#40;checkdate&#40;$matches&#91;2&#93;, $matches&#91;3&#93;, $matches&#91;1&#93;&#41;&#41; &#123;
            return true;
        &#125;
    &#125;

    return false;
&#125;

echo '<?xml version="1.0" enconding="UTF-8" ?>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Τ.Ε.Ι Καλαμάτας -Παράρτημα Σπάρτης &#58;&#58; Καταχώρηση Νέου Εξαμήνου</title>
<link rel="stylesheet" href="menu/menu_style.css" type="text/css" />
<script language="javascript" type="text/javascript" src="script.js"></script>
</head>

<body>
<div id="container">
<?php require&#40;"menu.php"&#41;; ?>
<?php
if&#40;!$_POST&#91;"submit"&#93;&#41;&#123;
?>

<h3>Καταχώρηση Νέου Εξαμήνου</h3>

<form name="add_period" id="add_period" method="post" onsubmit="return validateadd_period&#40;&#41;;" onreset="return confirm&#40;'Είστε σίγουρος ότι θέλετε να καθαρίσετε όλη τη φόρμα;'&#41;">
<fieldset>
<legend>Στοιχεία Εξαμήνου</legend>
<div id="float">

	<label for="title">Όνομα</label>
	<input type="text" class="textfield" name="title" id="title" size="30" tabindex="1"/><br/><br/>
  <label for="startdate">Ημερομηνία Έναρξης </label>
	<input type="text" class="textfield" name="startdate" id="startdate" size="30" tabindex="2"/><div id="hmeromhnia">Μορφή ημερομηνίας&#58; ΕΕΕΕ-MM-ΗΗ</div><br/><br/>
   <label for="enddate">Ημερομηνία Λήξης </label>
	<input type="text" class="textfield" name="enddate" id="enddate" size="30" tabindex="3"/><div id="hmeromhnia">Μορφή ημερομηνίας&#58; ΕΕΕΕ-MM-ΗΗ</div><br/><br/>
</div>
</fieldset>

	<input type="submit" name="submit" class="cbutton" value="Προσθήκη" tabindex="4"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	<input type="reset" class="cbutton" value="Καθαρισμός" tabindex="5"/>
</form>
</div>
<br/>

<?php
&#125;else &#123;
$title = mysql_real_escape_string&#40;$_POST&#91;'title'&#93;&#41;;

$startdate = mysql_real_escape_string&#40;$_POST&#91;'startdate'&#93;&#41;;
$enddate = mysql_real_escape_string&#40;$_POST&#91;'enddate'&#93;&#41;;
if &#40;!isValidDateTime&#40;$startdate&#41;&#41;&#123;
   ?>
   <script type="text/javascript">
   alert&#40;"Η ημερομηνια πρέπει να είναι της μορφής ΕΕΕΕ-ΜΜ-ΗΗ"&#41;;
   history.go&#40;-1&#41;;
</script>
   <?php
   die&#40;&#41;;
&#125;




if &#40;!isValidDateTime&#40;$enddate&#41;&#41;&#123;
   ?>
   <script type="text/javascript">alert&#40;"Η ημερομηνια πρέπει να είναι της μορφής ΕΕΕΕ-ΜΜ-ΗΗ"&#41;;history.go&#40;-1&#41;;</script>
   <?php
   die&#40;&#41;;
&#125;



if&#40;$title !=""  && $startdate != "" && $enddate != ""&#41;&#123;
$query="INSERT INTO period&#40;title,startdate,enddate&#41; VALUES &#40;'$title','$startdate','$enddate'&#41;";
$result=mysql_query&#40;$query, $con&#41;;
if &#40;!$result&#41;&#123;
                ?>
                <script type="text/javascript">
                    alert&#40;"Σφάλμα κατά την καταχώρηση. Ελέγξτε τις τιμές που εισάγετε!"&#41;;
                    history.go&#40;-1&#41;;
                </script>
                <?php
                die&#40;&#41;;
&#125;


$lastid = mysql_insert_id&#40;&#41;;
echo "Η εγγραφή καταχωρήθηκε επιτυχώς! <br/><br/>";

$query="select * from period where cinid=".$lastid." ;";
$result=mysql_query&#40;$query, $con&#41;;
$row=mysql_fetch_array&#40;$result&#41;;
?>

<table border="1">
<tr>
<th>Όνομα&#58; </th>
<td><?php echo $row&#91;'title'&#93;;?></td>
</tr>
<th>Ημερομηνία Έναρξης&#58; </th>
<td><?php echo $row&#91;'startdate'&#93;;?></td>
</tr>
<tr>
<th>Ημερομηνία Λήξης&#58; </th>
<td><?php echo $row&#91;'enddate'&#93;;?></td>
</tr>
</table>
<input type="button" value="<Επιστροφή" class="button" onclick="document.location='addPeriod.php';"/>
<?php
&#125;
else&#123;
?>
<script type="text/javascript"> alert&#40;"Δεν συμπληρώσατε όλα τα στοιχεία της φόρμας"&#41;;history.go&#40;-1&#41;;</script>
<?php
&#125;
&#125;
mysql_close&#40;$con&#41;;
?>
<br />
<br />
</div>
</body>
</html>
και το αρχείο μου script.js :

Κώδικας: Επιλογή όλων

function check_date&#40;v&#41;
&#123;
   
   // Regular expression used to check if date is in correct format
   var pattern = new RegExp&#40;&#40;19|20&#41;&#91;0-9&#93;&#91;0-9&#93;-&#91;0-3&#93;&#91;0-9&#93;-&#40;0|1&#41;&#91;0-9&#93;&#41;;
   re = /^\d&#123;4&#125;\-\d&#123;2&#125;\-\d&#123;2&#125;$/;
   if &#40;&#40;v.match&#40;re&#41;&#41;&#41;
   &#123;
       alert&#40;';ola ok!!'&#41;;
      var date_array = v.split&#40;'-'&#41;;
      var day = date_array&#91;0&#93;;

      // Attention! Javascript consider months in the range 0 - 11
      var month = date_array&#91;1&#93; - 1;
      var year = date_array&#91;2&#93;;

      // This instruction will create a date object
      source_date = new Date&#40;year,month,day&#41;;

      if&#40;year != source_date.getFullYear&#40;&#41;&#41;
      &#123;
         alert&#40;'το έτος στο πεδίο της ημερομηνίας γεννήσεως δεν είναι έγκυρο!!'&#41;;
         return false;
      &#125;

      if&#40;month != source_date.getMonth&#40;&#41;&#41;
      &#123;
         alert&#40;'ο μήνας στο πεδίο της ημερομηνίας γεννήσεως δεν είναι έγκυρος!'&#41;;
         return false;
      &#125;

      if&#40;day != source_date.getDate&#40;&#41;&#41;
      &#123;
         alert&#40;'η ημέρα στο πεδίο της ημερομηνίας γεννήσεως δεν είναι έγκυρη!'&#41;;
         return false;
      &#125;
   &#125;
   else
   &#123;
      alert&#40;'η ημερομηνία πρέπει να είναι της μορφής ΕΕΕΕ-ΜΜ-ΗΗ!'&#41;;
      return false;
   &#125;

   return true;
&#125;
function validateadd_period&#40;&#41;
&#123;
	if &#40;document.add_period.title.value == null ||
			document.add_period.title.value == ""&#41;
	&#123;
		alert&#40;"Το πεδίο Όνομα Εξαμήνου δε μπορεί να είναι κενό!"&#41;;
		document.add_period.title.value&#40;&#41;;
		return false;
	&#125;

	if &#40;document.add_period.startdate.value == null ||
			document.add_period.startdate.value == ""&#41;
	&#123;
		alert&#40;"Το πεδίο Ημερομηνία Έναρξης δε μπορεί να είναι κενό!"&#41;;
		document.add_period.startdate.value&#40;&#41;;
		return false;
	&#125;
	

	if &#40;document.add_period.enddate.value == null ||
			document.add_period.enddate.value == ""&#41;
	&#123;
		alert&#40;"Το πεδίο Ημερομηνία Λήξης δε μπορεί να είναι κενό!"&#41;;
		document.add_period.enddate.value&#40;&#41;;
		return false;
	&#125;
    return true;
&#125;
αν μπορεί να με βοηθήσει κάποιος... ευχαριστω!

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

βοηθεια με script ημερομηνιας sossss!

Δημοσίευση από Kypros Lambrou » 31 Οκτ 2011 12:11

Για να μην προχωράει στην επόμενη σελίδα, διόρθωσε το validateadd_period() αφαιρώντας τις γραμμές
document.add_period.startdate.value();
και από τα τρία if statements για να προχωράει κανονικά και να επιστρέφει false όταν δεν έχεις εισάγει κάποιο απο τα απαιτούμενα στοιχεία στην φόρμα.

Τα if σου θα πρέπει να είναι κάπως έτσι:

Κώδικας: Επιλογή όλων

if &#40;document.add_period.title.value == null ||
         document.add_period.title.value == ""&#41;
   &#123;
      alert&#40;"Το πεδίο Όνομα Εξαμήνου δε μπορεί να είναι κενό!"&#41;;
      return false;
   &#125; 

stavroula_apo
Δημοσιεύσεις: 121
Εγγραφή: 18 Σεπ 2010 03:12

βοηθεια με script ημερομηνιας sossss!

Δημοσίευση από stavroula_apo » 31 Οκτ 2011 13:25

Kypros Lambrou έγραψε:Για να μην προχωράει στην επόμενη σελίδα, διόρθωσε το validateadd_period() αφαιρώντας τις γραμμές
document.add_period.startdate.value();
και από τα τρία if statements για να προχωράει κανονικά και να επιστρέφει false όταν δεν έχεις εισάγει κάποιο απο τα απαιτούμενα στοιχεία στην φόρμα.

Τα if σου θα πρέπει να είναι κάπως έτσι:

Κώδικας: Επιλογή όλων

if &#40;document.add_period.title.value == null ||
         document.add_period.title.value == ""&#41;
   &#123;
      alert&#40;"Το πεδίο Όνομα Εξαμήνου δε μπορεί να είναι κενό!"&#41;;
      return false;
   &#125; 
Απ' ότι βλέπω, έτσι λειτουργεί. Σ' ευχαριστώ! αλλά για ποιο λόγο έπρεπε να το κάνω αυτό?

stavroula_apo
Δημοσιεύσεις: 121
Εγγραφή: 18 Σεπ 2010 03:12

βοηθεια με script ημερομηνιας sossss!

Δημοσίευση από stavroula_apo » 31 Οκτ 2011 13:28

επίσης τι θα έπρεπε να κάνω ώστε τα υπόλοιπα δεδομένα να μη σβήνονται από τα υπόλοιπα πεδία, σε περίπτωση που μόνο η ημερομηνια δεν ειχε τη σωστη μορφή και να γράφω μόνο την ημερομήνια?

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

βοηθεια με script ημερομηνιας sossss!

Δημοσίευση από Kypros Lambrou » 31 Οκτ 2011 14:04

stavroula_apo έγραψε:επίσης τι θα έπρεπε να κάνω ώστε τα υπόλοιπα δεδομένα να μη σβήνονται από τα υπόλοιπα πεδία, σε περίπτωση που μόνο η ημερομηνια δεν ειχε τη σωστη μορφή και να γράφω μόνο την ημερομήνια?
Αυτό που θέλεις μπορείς να το πετύχεις αλλάζωντας τα if και πάλι για να φαίνονται κάπως έτσι:

Κώδικας: Επιλογή όλων

if &#40;document.add_period.startdate.value == null ||
         document.add_period.startdate.value == ""&#41;
   &#123;
      alert&#40;"Το πεδίο Ημερομηνία Έναρξης δε μπορεί να είναι κενό!"&#41;;
      return false;
   &#125; else &#123;
		return check_date&#40;document.add_period.startdate.value&#41;;
   &#125;
αλλάζοντας εννοείται το document.add_period.startdate.value στο ανάλογο της κάθε περίπτωσης.

Γενικά όμως αν και φαντάζομαι ο κώδικας δεν είναι καθαρά γραμμένος απο εσένα, έχει αρκετά λάθη και παραλείψεις.

stavroula_apo
Δημοσιεύσεις: 121
Εγγραφή: 18 Σεπ 2010 03:12

βοηθεια με script ημερομηνιας sossss!

Δημοσίευση από stavroula_apo » 31 Οκτ 2011 18:14

Kypros Lambrou έγραψε:
stavroula_apo έγραψε:επίσης τι θα έπρεπε να κάνω ώστε τα υπόλοιπα δεδομένα να μη σβήνονται από τα υπόλοιπα πεδία, σε περίπτωση που μόνο η ημερομηνια δεν ειχε τη σωστη μορφή και να γράφω μόνο την ημερομήνια?
Αυτό που θέλεις μπορείς να το πετύχεις αλλάζωντας τα if και πάλι για να φαίνονται κάπως έτσι:

Κώδικας: Επιλογή όλων

if &#40;document.add_period.startdate.value == null ||
         document.add_period.startdate.value == ""&#41;
   &#123;
      alert&#40;"Το πεδίο Ημερομηνία Έναρξης δε μπορεί να είναι κενό!"&#41;;
      return false;
   &#125; else &#123;
		return check_date&#40;document.add_period.startdate.value&#41;;
   &#125;
αλλάζοντας εννοείται το document.add_period.startdate.value στο ανάλογο της κάθε περίπτωσης.

Γενικά όμως αν και φαντάζομαι ο κώδικας δεν είναι καθαρά γραμμένος απο εσένα, έχει αρκετά λάθη και παραλείψεις.
μάλιστα... θα το δοκιμάσω... ναι όντως έτσι είναι, δεν τον έχω γράψει όλο μόνη μου. Δλδ τι λάθη και παραλείψεις εννοείς?

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες