Avatar billede sbay Nybegynder
04. juli 2007 - 23:57 Der er 19 kommentarer og
1 løsning

Sammenlign to variabler og spørg ved tryk på submit

Hejsa

Jeg vil gerne kunne sammenligne 2 variabler, og hvis de er ens, spørge brugeren om han nu også er sikker på at ville submitte formen. Hvis ikke skal den jo bare blive stående, så han kan rette den ene variabel. Hvordan går man det?
Avatar billede windcape Praktikant
05. juli 2007 - 05:59 #1
Du bruger en if-clause, læse mere på www.php.net/if
Avatar billede sbay Nybegynder
05. juli 2007 - 07:27 #2
Det havde jeg godt luret :-)

Det går mere på, hvordan jeg får en lille dialogboks frem med "er du sikker på at du vil submitte formen selvom varA = varB?"
Avatar billede coderdk Praktikant
05. juli 2007 - 14:27 #3
Med javascript, ikke PHP. Jeg antager at felterne hedder felt1 og felt2:

<script type="text/javascript">
function erOk(what)
{
  if (what.felt1.value == what.felt2.value)
  {
      return confirm("Er du sikker?");
  }
  return true;
}
</script>

dit form-tag skal så have en onsubmit:

<form method="post" onsubmit="return erOk(this)">
Avatar billede sbay Nybegynder
06. juli 2007 - 12:04 #4
Det virker fint i FireFox - men ikke i IE7.

Hvorfor ikke?
Avatar billede sbay Nybegynder
06. juli 2007 - 12:09 #5
Det lader til at den ikke får variblerne med og derfor gør den ikke noget!
Avatar billede coderdk Praktikant
06. juli 2007 - 12:57 #6
Hmm prøv:

<script type="text/javascript">
function erOk()
{
  f = document.getElementById("minform");
  if (f.felt1.value == f.felt2.value)
  {
      return confirm("Er du sikker?");
  }
  return true;
}
</script>
<form id="minform" method="post" onsubmit="return erOk()">
Avatar billede coderdk Praktikant
06. juli 2007 - 12:58 #7
Eller prøv at ændre den oprindelige form og mit første forsøg til:

<form method="post" onsubmit="return erOk(this.form)">
Avatar billede sbay Nybegynder
06. juli 2007 - 14:23 #8
Har prøvet med det andet forsøg uden held - virker stadig ikke. Hvad skal ændres i selve scriptet i forhold til at bruge this.form?
Avatar billede coderdk Praktikant
06. juli 2007 - 14:39 #9
Den her virker altså fint for mig i både IE7 og FF2:

<html><head><title>test</title>
<script type="text/javascript">
function erOk(what)
{
  if (what.felt1.value == what.felt2.value)
  {
    return confirm("Sikker?");
  }
  return true;
}
</script>
</head><body>
<form method="post" onsubmit="return erOk(this)">
<input type="text" name="felt1" id="felt1">
<input type="text" name="felt2" id="felt2">
<input type="submit" name="sbmit" value="Ok!">
</form>
</body></html>
Avatar billede sbay Nybegynder
09. juli 2007 - 11:29 #10
Det er vildt mærkeligt! Hos mig virker det kun i FF.

<script type="text/javascript">
function erOk()
{
  f = document.getElementById("mainform");
  if (f.IPROD.value == f.IPROD_ORIGINAL.value)

<form name="mainform" id="mainform" method="POST" action="insert.php" onSubmit="return erOk(this.form)" OnLoad="document.mainform.IPROD.focus();">

<input type="text" name="IPROD" id="IPROD" size="10" value="<?php echo strtoupper($IPROD) ?>" tabindex="1">

<input type="hidden" name="IPROD_ORIGINAL" id="IPROD_ORIGINAL" size="10" value="<?php echo $HTTP_GET_VARS[IPROD] ?>">

<input type="submit" value="Save" name="submit" tabindex="100">


  {
      return confirm("Er du sikker?");
  }
  return true;
}
</script>
Avatar billede sbay Nybegynder
09. juli 2007 - 11:30 #11
hov - her kommer det i rigtig rækkefølge!

<script type="text/javascript">
function erOk()
{
  f = document.getElementById("mainform");
  if (f.IPROD.value == f.IPROD_ORIGINAL.value)
{
      return confirm("Er du sikker?");
  }
  return true;
}
</script>

<form name="mainform" id="mainform" method="POST" action="insert.php" onSubmit="return erOk(this.form)" OnLoad="document.mainform.IPROD.focus();">

<input type="text" name="IPROD" id="IPROD" size="10" value="<?php echo strtoupper($IPROD) ?>" tabindex="1">

<input type="hidden" name="IPROD_ORIGINAL" id="IPROD_ORIGINAL" size="10" value="<?php echo $HTTP_GET_VARS[IPROD] ?>">

<input type="submit" value="Save" name="submit" tabindex="100">
Avatar billede pidgeot Nybegynder
09. juli 2007 - 11:33 #12
Tester du via en webserver eller ved at åbne en HTML-fil direkte? I sidste tilfælde kunne det nemlig være at aktivt indhold er slået fra - check i så fald dine Internetindstillinger.

*går igen*
Avatar billede sbay Nybegynder
09. juli 2007 - 15:16 #13
Det viste sig at FF selv trimmede en af variablerne - det gjorde IE ikke! Så nu virker det!

Men hvordan får jeg så følgende PHP-kode mast ind i IF-sætningen:

    <?php //// Check if selected design already exists!
    $sql = "SELECT DISTINCT IPROD FROM V6BDKFL1.IIM where iclas in ('BF', 'BS', 'BO', 'BU') AND ICOND in ('00','04','08')";
           
    $conn = odbc_connect("ASDK101","","");
    $res = odbc_exec($conn,$sql);
    $i=0;
    $EXISTS = 'FALSE';
    $DESIGN_ARRAY = array();
    while(odbc_fetch_array($res)){
        $DESIGN_ARRAY[$i] = odbc_result($res,1);
        $i++;
    }
    if (in_array($IPROD,$DESIGN_ARRAY)) {$EXISTS = 'TRUE';}
    Echo "<br>".$EXISTS."<br>";
    ?>
Avatar billede sbay Nybegynder
10. juli 2007 - 12:45 #14
coderdk - smid et svar - jeg har fået det hele til at virke!

function erOk()
{
    <?php //// Check if selected design already exists!
    $sql = "SELECT DISTINCT IPROD FROM V6BDKFL1.IIM where iclas in ('BF', 'BS', 'BO', 'BU') AND ICOND in ('00','04','08')";
    $conn = odbc_connect("ASDK101","","");
    $res = odbc_exec($conn,$sql);
    $i=0;
    $EXISTS = 'FALSE';
    $DESIGN_ARRAY = array();
    while(odbc_fetch_array($res)){
        $DESIGN_ARRAY[$i] = odbc_result($res,1);
        $i++;
    }
    if (in_array($_GET[IPROD],$DESIGN_ARRAY)) {$EXISTS = 'TRUE';}
        ?>
EXIST = "<?php echo $EXISTS ?>";
IPROD = "<?php echo rtrim($_GET[IPROD]) ?>";
  if (EXIST == 'TRUE')
  {
      return confirm("The design number already exists!");
  }
  return true;
}
</script>
Avatar billede coderdk Praktikant
10. juli 2007 - 12:53 #15
ok :)
Avatar billede sbay Nybegynder
10. juli 2007 - 14:09 #16
Troede jeg havde knækket nødden, men tror desværre jeg er løbet ind i et uoverstigeligt problem!

Værdien i feltet IPROD bliver sat når siden loades. Den kan derefter ændres, men det slår ikke igennem når jeg kalder functionen med onsubmit. Der tager den fat i den originale værdi... øvøvøvøvøv.....
Avatar billede coderdk Praktikant
10. juli 2007 - 14:42 #17
Lad os se noget kode! For det kan sagtens lade sig gøre!
Avatar billede sbay Nybegynder
10. juli 2007 - 15:20 #18
Okay - her først selve javascript funktionen:

<script type="text/javascript">
function erOk()
{
    <?php //// Check if selected design already exists!
    $sql = "SELECT DISTINCT IPROD FROM V6BDKFL1.IIM where iclas in ('BF', 'BS', 'BO', 'BU') AND ICOND in ('00','04','08')";
    $conn = odbc_connect("ASDK101","","");
    $res = odbc_exec($conn,$sql);
    $i=0;
    $EXISTS = 'FALSE';
    $DESIGN_ARRAY = array();
    while(odbc_fetch_array($res)){
        $DESIGN_ARRAY[$i] = odbc_result($res,1);
        $i++;
    }
    if (in_array($_GET[IPRODX],$DESIGN_ARRAY)) {$EXISTS = 'TRUE';}
        ?>
EXIST = "<?php echo $EXISTS ?>";
IPROD = "<?php echo rtrim($_GET[IPRODX]) ?>";
alert (IPROD)
  if (EXIST == 'TRUE')
  {
      return confirm("The design number already exists!");
  }
  return true;
}
</script>

Så formen:
<form name="mainform" id="mainform" method="POST" action="insert.php" onSubmit="return erOk(this.mainform)" OnLoad="document.mainform.IPROD.focus();">

<snip en masse kode>

feltet:
<input name="IPROD" type="text" id="IPROD" tabindex="1" value="" size="10" maxlength="9">

Problemet er, at når jeg trykker på submit, for jeg ikke IPROD med, med den nye værdi fra feltet - op i funktionen!
Avatar billede coderdk Praktikant
10. juli 2007 - 16:12 #19
Umiddelbart synes jeg ikke det giver vildt meget mening - Jeg har forsøgt at lave det jeg tror du gerne vil:

<script type="text/javascript">
function erOk(what)
{
    <?php //// Check if selected design already exists!
    $sql = "SELECT DISTINCT IPROD FROM V6BDKFL1.IIM where iclas in ('BF', 'BS', 'BO', 'BU') AND ICOND in ('00','04','08')";
    $conn = odbc_connect("ASDK101","","");
    $res = odbc_exec($conn,$sql);
    $rows = array();
    while($row = odbc_fetch_array($res)){
        $rows[] = $row['IPROD'];
    }
    $rows = implode(",", $rows);
    echo "\nexisting = new Array($rows);\n"
    if (existing.indexOf(what.IPOD) != -1)
    {
      return confirm("The design number already exists!");
    }
  }
  return true;
}
</script>

Så formen:
<form name="mainform" id="mainform" method="POST" action="insert.php" onSubmit="return erOk(this)" OnLoad="document.mainform.IPROD.focus();">
Avatar billede coderdk Praktikant
10. juli 2007 - 16:12 #20
Bah her:

<script type="text/javascript">
function erOk(what)
{
    <?php //// Check if selected design already exists!
    $sql = "SELECT DISTINCT IPROD FROM V6BDKFL1.IIM where iclas in ('BF', 'BS', 'BO', 'BU') AND ICOND in ('00','04','08')";
    $conn = odbc_connect("ASDK101","","");
    $res = odbc_exec($conn,$sql);
    $rows = array();
    while($row = odbc_fetch_array($res)){
        $rows[] = $row['IPROD'];
    }
    $rows = implode(",", $rows);
    echo "\nexisting = new Array($rows);\n"
?>
    if (existing.indexOf(what.IPOD) != -1)
    {
      return confirm("The design number already exists!");
    }
  }
  return true;
}
</script>

og så formen:

<form name="mainform" id="mainform" method="POST" action="insert.php" onSubmit="return erOk(this)" OnLoad="document.mainform.IPROD.focus();">
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