Avatar billede sbay Nybegynder
08. juli 2009 - 12:01 Der er 26 kommentarer og
1 løsning

Validere php variabler i return confirm

Hejsa

Jeg prøver at få nedenstående til at virke - desværre uden held. En der kan hjælpe?

<script type="text/javascript">
function ClicheCheck(what)
{
    <?php //// Check if selected cliches already exists!
    $q=0;
    $sql = "SELECT DISTINCT IPROD FROM V6BDKFT3.IIM where iclas in ('11') AND IPROD = '".$cliche[$q]."'";
    $connx = odbc_connect("ASDK101","","");
    $res = odbc_exec($connx,$sql);
    while (odbc_fetch_row($res))
    {
   
        $CLICHENO = trim(odbc_result($res,1));
        $k = 0;
        if ( what.cliche1.value == '$CLICHENO' )
        {
        $LIST[$k] = $CLICHENO
        $k++;
        }
    }
    $q++;
?>
    if ( count($LIST) > 1 )
    {
      return confirm("The following cliche number(s) already exists:<br>$LIST[$k]<br>");
    } 
  return true;
}
</script>
Avatar billede mrgumble Nybegynder
08. juli 2009 - 12:08 #1
Du blander php og JavaScript på en rigtig dårlig måde.
php afvikles på serveren inden det sendes til klienten.
JavaScript afviklens hos klienten, dvs. i browseren.

Det browseren får er sandsynligvis:
<script type="text/javascript">
function ClicheCheck(what)
{
    if ( count($LIST) > 1 )
    {
      return confirm("The following cliche number(s) already exists:<br>$LIST[$k]<br>");
    }
  return true;
}
</script>

Og den vil ikke kunne finde ud af det, fordi du forsøger at anvende php-variabler i JavaScriptet ($LIST).
Avatar billede majbom Novice
08. juli 2009 - 12:18 #2
lav det hele i php som så echo'er de linjer der rent faktisk er javascript, f.eks.

<?php

$streng = "Her er min streng: ";

echo "<script type=\"text/javascript\">\n";
echo "minFunktion(mitParam)\n";
echo "{\n";
echo "alert('".$streng."'+mitParam);\n";
echo "}\n";
echo "</script>";

?>
Avatar billede sbay Nybegynder
08. juli 2009 - 13:22 #3
det der \n der står rundt omkring - hvad gør det?


Nu ser min kode ud som nedenfor, og hardcoder jeg nogle værdier ind virker det, så nu er det SQL'en og  if ( $cliche[q] == $CLICHENO )  der tilsyneladende er udfordringen. Men kan jeg overhovedet få fat i array'et $cliche[] her?

<?php //// Check if selected cliches already exists!
echo "<script type=\"text/javascript\">";
echo "function ClicheCheck(what)";
echo "{";
    $q=0;
    $sql = "SELECT DISTINCT IPROD FROM V6BDKFT3.IIM where iclas in ('11') AND IPROD = '".$cliche[$q]."'";
    $connx = odbc_connect("ASDK101","","");
    $res = odbc_exec($connx,$sql);
    while (odbc_fetch_row($res))
    {
   
        $CLICHENO = trim(odbc_result($res,1));
        $k = 0;
        if ( $cliche[q] == $CLICHENO )
        {
        $LIST[$k] = $CLICHENO;
        $k++;
        }
        //$LIST[0]='123456';
        //$LIST[1]='233455';
    }
    $q++;

if ( count($LIST) > 0 )
    {
    $k=0;
echo "return confirm(\"The following cliche number already exists:<br>$LIST[$k]\");";
    } 
echo "return true;";
echo "}";
echo "</script>";
?>
Avatar billede majbom Novice
08. juli 2009 - 13:31 #4
det kommer jo an på hvor dit array cliche kommer fra?
Avatar billede sbay Nybegynder
08. juli 2009 - 13:52 #5
array'et bliver genereret på siden - inden submit.

<input type="text" id="cliche<?php echo $i+1 ?>" name="cliche<?php echo $i+1 ?>" value="<?php echo $BCHLDK[$i] ?>" onblur="ajax_showOptions(this,'UpdateClicheStatus',event)"  onkeyup="ajax_showOptions(this,'getNewClicheByLetter<?php echo $i ?>',event)"  size="10" tabindex="<?php echo $TABINDEX ?>" class="text_1"  autocomplete="off" <?php echo $DisableEdit ?>>

og kan være alt fra 5 til 30 records.
Avatar billede majbom Novice
08. juli 2009 - 14:00 #6
det forstår jeg ikke...

som du skriver koden, er cliche et array i php?
Avatar billede sbay Nybegynder
08. juli 2009 - 14:10 #7
Jeg vrøvler... - array'et er ikke lavet endnu på dette tidspunkt - det laver jeg først efter submit, på næste side...

Men jeg vil så gerne lave et lille midlertidigt array her i funktionen. Men hvordan er det så lige jeg får refereret til felterne:

noget a'la

if (trim(cliche1) <> '' )
{
$CLICHE_VALUE [$i] = array(trim(strtoupper(cliche1)));
}
if (trim(cliche1) <> '' )
$i++;
{
$CLICHE_VALUE [$i] = array(trim(strtoupper(cliche2)));
}
Avatar billede majbom Novice
08. juli 2009 - 14:25 #8
jeg er overhovedet ikke med... :S

hvad er det du gerne vil?
Avatar billede sbay Nybegynder
08. juli 2009 - 14:31 #9
:-)

Når jeg submitter min form, vil jeg gerne tjekke nogle varenumre.

Hvis et af de varenumre (råvarer) man har indtastet til at indgå i den færdige vare, allerede også bruges på andre varer, så skal man promptes og have vist hvilke numre det drejer sig om - så kan man sige OK eller annuller.

Derfor skal jeg først fange de numre der er indtastet, dem skal jeg så sammenligne med et sql-opslag for at se om de allerede eksisterer.

PT. virker min kode hvis jeg hardcoder et varenummer ind i både feltværdi og opslagsværdi, men det skal som sagt fungerer dynamisk :-)
Avatar billede majbom Novice
08. juli 2009 - 14:40 #10
så når siden bliver generet har du et php-array med værdier, og når formen submittes, skal værdien i et input-felt sammenlignes med tallene i arrayet?
Avatar billede sbay Nybegynder
08. juli 2009 - 14:45 #11
Ja, næsten :-) jeg har ikke noget array - men et opslag til en SQL server, som skal sammenlignes med input-felterne (og dem kan der være vilkårligt antal af) :-)
Avatar billede majbom Novice
08. juli 2009 - 15:01 #12
så er det vel bare at få konverteret det php-array til at javascript-array så du kan se om felternes værdier findes deri?

jeg leger lidt med det...
Avatar billede majbom Novice
08. juli 2009 - 15:26 #13
Avatar billede sbay Nybegynder
09. juli 2009 - 09:19 #14
jeps - sådan noget :-) men igen i stedet for et array skal jeg kunne bruge et sql-opslag.
Avatar billede majbom Novice
09. juli 2009 - 09:48 #15
ja så er det vel bare:

efter dit sql-opslag:

$first = true;
$arrStr = ""; 
while (odbc_fetch_row($res))
{
    if(!$first){
        $arrStr .= ",";
    }else{
        $first = false;
    }
    $value = //skal være den værdi der kommer fri din odbc-query
    $arrStr .= "'".$value."'";
}
Avatar billede sbay Nybegynder
10. juli 2009 - 10:23 #16
Så langt så godt :-)

Det eneste der driller er at få feltets værdi med i SQL-strengen. Jeg ved ikke lige hvordan jeg skal fange den...

echo "alert(what.cliche1.value);";  --- udskriver værdien af felt cliche1 korrekt


følgende virker ikke:

$sql = "SELECT DISTINCT IPROD FROM V6BDKFT3.IIM where iclas in ('09','11') AND IPROD = '".$HTTP_GET_VARS[cliche1]."'";

$sql = "SELECT DISTINCT IPROD FROM V6BDKFT3.IIM where iclas in ('09','11') AND IPROD = '".$cliche1."'";
Avatar billede majbom Novice
10. juli 2009 - 10:30 #17
jamen bliver din sql-query ikke kørt INDEN javascriptet genereres?
Avatar billede sbay Nybegynder
10. juli 2009 - 10:35 #18
Den skal vel køres inde i funktionen, men som det første - jo.

Mit problem ar at fange værdierne fra felterne og bruge dem i sql-strengen!

Nuværende funktion:

<?php //// Check if selected cliches already exists!
echo "<script type=\"text/javascript\">";
echo "function ClicheCheck(what)";
echo "{";

//echo "alert(what.cliche1.value);";

    $q=0;
    $sql = "SELECT DISTINCT IPROD FROM V6BDKFT3.IIM where iclas in ('09','11') AND IPROD = '".$HTTP_GET_VARS[cliche1]."'";
    $connx = odbc_connect("ASDK101","","");
    $res = odbc_exec($connx,$sql);
   
    $first = true;
    $arrStr = ""; 
    while (odbc_fetch_row($res))
    {
    $IPROD = trim(odbc_result($res,1));
echo "alert('".$IPROD."');";

    if(!$first){
        $arrStr .= ",";
    }
    else{
        $first = false;
    }
    $value = $IPROD;
    $arrStr .= "'".$value."'";
    }
   
    $q++;

if ( count($arrStr) > 0 )
    {
    $k=0;
echo "return confirm(\"The following cliche number already exists: $arrStr\");";
    } 
echo "return true;";
echo "}";
echo "</script>";
?>
Avatar billede majbom Novice
10. juli 2009 - 10:46 #19
skal du køre en ny sql-query, når felterne er udfyldt?

jeg er ved at stå af her... :s
Avatar billede sbay Nybegynder
10. juli 2009 - 11:12 #20
Ja, jeg skal køre en sql query inde i funktionen, for at validere de indtastede varenumre, op mod eksisterende numre i db'en. Så jeg skal altså have værdien med fra feltet og ind i funktionen, så den kan bruges som PHP variabel!

en alert(what.cliche1.value) virker, men det kan jeg ikke bruge. variablen skal omkodes til en php-variabel
Avatar billede majbom Novice
10. juli 2009 - 11:37 #21
jamen når dit javascript bliver udført er din php-kode jo for længst kørt.

så skal du lave det med noget ajax, hvis det skal gøres uden at reloade siden...
Avatar billede sbay Nybegynder
10. juli 2009 - 11:47 #22
hmmm - er den phpkode der køres i funktionen også afviklet?
Avatar billede majbom Novice
10. juli 2009 - 11:58 #23
ja...

din php-kode genererer din javascript-kode til brug i browseren.
det er osse derfor - som du fik at vide i starten - at du ikke kan blande php og javascript på den måde du gjorde, og jeg ændrede det, så din php-kode genererede det javascript du havde brug for...

den eneste måde at køre php-kode på (som skal returnere noget du skal bruge) er vha ajax, medmindre du vil reloade siden...
Avatar billede majbom Novice
14. august 2009 - 10:55 #24
kom du videre her?
Avatar billede sbay Nybegynder
14. august 2009 - 13:53 #25
næææ - sidder netop og kigger på det :-)
Avatar billede sbay Nybegynder
18. august 2009 - 09:56 #26
Smid et svar - så lukker jeg :-)
Avatar billede majbom Novice
19. august 2009 - 10:43 #27
svar :)
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