Avatar billede fiil123 Nybegynder
19. januar 2007 - 12:11 Der er 6 kommentarer og
1 løsning

Anvendelse af et php array/data i en javascript funktion

Hej eksperter...
På forhånd hvis dette burde være i JS kategorien undskylder jeg på forhånd!

Problemet er at man ikke bare direkte kan sende et php array til et javascript på den måde jeg har gjort men alle de løsninger jeg har fundet på nettet forudsætter at koden ligger i sammen php fil
og det vil jeg helst undgå. Nogen der har en god løsning?

Jeg har et array af brugernavne lavet udfra databasen sådan her:

$ArrayOfUsersSize = 0;
while ( $row = mysql_fetch_assoc( $result ) )
{       
    $ArrayOfUsers[$ArrayOfUsersSize] = $row[username];
    $ArrayOfUsersSize++;
}

Det vil jeg så gerne have sendt med til en javascript funktion til at validere data'ene fra en form.

<form name=\"DynamicForm\" form action=\"CreateMembers.php\"  method=\"post\" enctype=\"multipart/form-data\"
onsubmit=\"return validation( $usernameMinChars,
                  $passwordMinChars,
                  $nameMinChars,
                  $responsibilityMinChars,
                  this.email.value,
                  $ArrayOfUsers,
                  $ArrayOfUsersSize );\">

funktionen validation() ligger i filen MembersValidation.js og den vigtige del i denne sammenhæng er:

function validation( usernameMinChars, passwordMinChars, nameMinChars, responsibilityMinChars, emailStr, ArrayOfUsers, ArrayOfUsersSize )
{   
    var usernameValue = document.DynamicForm.username.value;


    for( var i = 0 ; i < ArrayOfUsers.length ;  i++ )
    {
        if( ArrayOfUsers[i] == usernameValue )
        {
            alert("Brugernavnet eksistere allerede i forvejen.");
            DynamicForm.username.focus();
            document.DynamicForm.username.value = "";
            return false;
        }       
    }
}
Avatar billede showsource Seniormester
19. januar 2007 - 12:29 #1
<?php

echo"<script language=\"JavaScript\">\r\n";
echo"<!--\r\n";
echo"ArrayOfUsers = new Array(";

$i = 0;

    while($row = mysql_fetch_assoc($result)) {
    $i++;
    echo"\"". $row["username"] ."\"";

        if($i != mysql_num_rows($row)) {
        echo",\r\n";
        }

    }


echo");\r\n";

echo"// -->\r\n";

echo"</script>\r\n";

?>
Avatar billede fiil123 Nybegynder
19. januar 2007 - 12:30 #2
Er du muligt du lige kan sætte det i en sammenhæng?
Avatar billede showsource Seniormester
19. januar 2007 - 12:40 #3
Du laver det på den side hvor du har din formular.

Og bruger jo så

<script type="text/javascript" src="MembersValidation.js"></script>

Bare et gæt!
Avatar billede fiil123 Nybegynder
19. januar 2007 - 13:25 #4
God' dam'it nu virker det fandeme... Det var så lige en hel morgens arbejde lige der... 1000 tak for den hurtige hjælp til et desperat menneske:) Smid et svar
Avatar billede fiil123 Nybegynder
19. januar 2007 - 13:28 #5
Du havde dog en lille fejl:
<?php

echo"<script language=\"JavaScript\">\r\n";
echo"<!--\r\n";
echo"ArrayOfUsers = new Array(";

$i = 0;

    while($row = mysql_fetch_assoc($result)) {
    $i++;
    echo"\"". $row["username"] ."\"";

        if($i != mysql_num_rows($result)) {
        echo",\r\n";
        }

    }


echo");\r\n";

echo"// -->\r\n";

echo"</script>\r\n";

?>

if($i != mysql_num_rows($result)) {
ikke
if($i != mysql_num_rows($row)) {
Avatar billede showsource Seniormester
19. januar 2007 - 13:41 #6
jahh, det er ik' så'n når der ikke testes inden "kode-dump" :O)

Og lav nu et svar selv også! 200 point er for meget.
Avatar billede fiil123 Nybegynder
19. januar 2007 - 13:44 #7
Ja det er det nok men jeg havde brugt så mange timer på det og skulle bare have det på plads så jeg kunne komme videre!!
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