Avatar billede heglund Nybegynder
14. februar 2007 - 17:40 Der er 6 kommentarer og
1 løsning

kontrol inden SQL kommando

hejsa

jeg er ved at lave en side som skal bruges til et booking system.

I den forbindelse har jeg prøvet at skulle kontrollere to datoer for at se om de er i den rigtige rækkefølge.

<?php
$fra_dato = $_POST['fra_dato'];
$til_dato = $_POST['til_dato'];

if ($fra_dato){
echo"$fra_dato";
echo"$til_dato";}

if ($fra_dato>$til_dato) {echo"datoen er ikke korrekt sat";}?>


<form action="<?php echo $editFormAction; ?>" method="POST" name="form1" id="form1">



  <table width="600" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td width="62">ref</td>
      <td width="530"><label>
        <select name="ref" id="ref">
          <?php
do { 
?>
          <option value="<?php echo $row_rsBoligref['ref']?>"<?php if (!(strcmp($row_rsBoligref['ref'], $row_rsBoligref['ref']))) {echo "selected=\"selected\"";} ?>><?php echo $row_rsBoligref['ref']?></option>
          <?php
} while ($row_rsBoligref = mysql_fetch_assoc($rsBoligref));
  $rows = mysql_num_rows($rsBoligref);
  if($rows > 0) {
      mysql_data_seek($rsBoligref, 0);
      $row_rsBoligref = mysql_fetch_assoc($rsBoligref);
  }
?>
        </select>
      </label></td>
    </tr>
    <tr>
      <td>fra dato </td>
      <td><label>
        <input onclick="ds_sh(this);" style="cursor: text" name="fra_dato" type="text" id="fra_dato" size="25" />
      </label></td>
    </tr>
    <tr>
      <td>til dato</td>
      <td><input onclick="ds_sh(this);" style="cursor: text" name="til_dato" type="text" id="til_dato" size="25" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><label>
        <input type="submit" name="Submit" value="S&oslash;g/book" />
      </label></td>
    </tr>
  </table>
  <p>&nbsp;</p>
    <?php if ($fra_dato<$til_dato){;?><input type="hidden" name="MM_insert" value="form1"><?php } ;?>
 
</form>

Det er 3. nederste linje som gerne skulle kontrollere dette men det virker kun efter at form er kørt igennem en gang....hvor skal den evt. placeres for at virke første gang???

På forhånd tak

-lars
Avatar billede intenz Novice
14. februar 2007 - 20:32 #1
Jeg syntes det er lidt uklart hvad det er du vil.
Du sætter de to datoer du tjekker øverst som:
$fra_dato = $_POST['fra_dato'];
$til_dato = $_POST['til_dato'];

Og indhold i en $_POST skal jo komme fra en formular, så første gang siden hentes vil de to bare være tomme, da der ikke er posted noget.
Avatar billede heglund Nybegynder
14. februar 2007 - 20:45 #2
Jeg vil forsøge at undgå at der bliver skrevet noget i databasen før at betingelsen er opfyldt "fra_dato > til_dato"
Avatar billede heglund Nybegynder
14. februar 2007 - 22:20 #3
nogen forslag til hvordan jeg kan teste disse data uden af det skal kører igennem enn gang. Er det ikke muligt at teste data inden i formularen inden det hele skal postes
Avatar billede intenz Novice
15. februar 2007 - 15:38 #4
Nåå, nu forstår jeg hvad du vil.
Jo det er muligt at teste data inden du submitter det. Men så skal du over i javascript kategorien, det kan php ikke gøre.

Eller prøv det her:
Ændre:
<form action="<?php echo $editFormAction; ?>" method="POST" name="form1" id="form1">

til:
<form action="<?php echo $editFormAction; ?>" method="POST" name="form1" id="form1" onsubmit="return validate(this)">

Tilføj over <form>:
<script type="text/JavaScript">
var d=document;
function gE(id){return d.getElementById(id)}
function gA(o,tag){return d.getElementsByTagName(tag)}
function pI(s){return parseInt(s)}

function validate(f) {
    if ( parseInt(f.fra_dato.value) > parseInt(f.til_dato.value) ) {
        alert("Datoen er ikke korrekt sat\t");
        f.fra_dato.focus();
        return false;
    }
}

</script>
Avatar billede heglund Nybegynder
15. februar 2007 - 17:26 #5
hm det kan jeg ikke helt få til at virke...... jeg har sat det ind her:

<script type="text/JavaScript">
var d=document;
function gE(id){return d.getElementById(id)}
function gA(o,tag){return d.getElementsByTagName(tag)}
function pI(s){return parseInt(s)}

function validate(f) {
    if ( parseInt(f.fra_dato.value) > parseInt(f.til_dato.value) ) {
        alert("Datoen er ikke korrekt sat\t");
        f.fra_dato.focus();
        return false;
    }
}

</script>

</head>

<body>
<p>TEST</p>
<p>&nbsp;</p>
<p>indf&oslash;rer en dato i en tabel </p>

<form action="<?php echo $editFormAction; ?>" method="POST" name="form1" id="form1" onsubmit="return validate(this)">

  <table width="600" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td width="62">ref</td>
      <td width="530"><label>
        <select name="ref" id="ref">
          <?php
do { 
?>
  <option value="<?php echo $row_rsBoligref['ref']?>"<?php if (!(strcmp($row_rsBoligref['ref'], $row_rsBoligref['ref']))) {echo "selected=\"selected\"";} ?>>
  <?php echo $row_rsBoligref['ref']?>
  </option>
  <?php
} while ($row_rsBoligref = mysql_fetch_assoc($rsBoligref));
  $rows = mysql_num_rows($rsBoligref);
  if($rows > 0) {
      mysql_data_seek($rsBoligref, 0);
      $row_rsBoligref = mysql_fetch_assoc($rsBoligref);
  }
?>
  </select>
  </label>
  </td>
  </tr>
  <tr>
    <td>fra dato </td>
    <td><label>
      <input onclick="ds_sh(this);" style="cursor: text" name="fra_dato" type="text" id="fra_dato" size="25" />
    </label></td>
  </tr>
  <tr>
    <td>til dato</td>
    <td><input onclick="ds_sh(this);" style="cursor: text" name="til_dato" type="text" id="til_dato" size="25" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <input name="Submit" type="submit" value="S&oslash;g/book" />
    </label></td>
  </tr>
  </table>
<p>&nbsp;</p>
 
<input type="hidden" name="MM_insert" value="form1">
</form>


 
<?php do { ?>
    <p>Ref: <?php echo $row_rsBooking['ref']; ?></p>
    <p>Er booket fra <?php echo $row_rsBooking['fra_dato']; ?> til og med: <?php echo $row_rsBooking['til_dato']; ?></p>
    <?php } while ($row_rsBooking = mysql_fetch_assoc($rsBooking)); ?></body>
</html>
<?php
mysql_free_result($rsBoligref);

mysql_free_result($rsBooking);


?>

Har også prøvet lige efter <body> men samme resultat....
Avatar billede intenz Novice
16. februar 2007 - 18:05 #6
Nå ja, den kode jeg lavede tjekker kun om det ene tal er større end det andet.
Men du skriver vel dato som noget ligende 24/5-07 eller noget i den stil.
Så er det lidt mere kompliceret, det skal du nok over i javascript kategorien for at have hjælp til. Det ligger i hvert fald lidt udover mine javascript kompetencer.
Avatar billede heglund Nybegynder
16. februar 2007 - 18:58 #7
okay, jeg skriver datoen ind via en kalender i formatet: 2007-02-16

Jeg takker for forsøget! Det kunne godt være man skulle give det der Java pjat en chance :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester