2013-07-09 7 views
0

J'ai plusieurs formulaires sur ma seule page PHP. Tous se présentent comme suit:Passer une variable PHP à JavaScript getElementById

<form id="test_form_1" action="test_submit.php" method="post" name="test_form"> 
    <label>This is Question #1:</label> 
    <p> 
     <label> 
     <input type="radio" name="Question1" value="ans1" id="Question1_0"> 
     Answer1</label> 
     <br> 
     <label> 
     <input type="radio" name="Question1" value="ans2" id="Question1_1"> 
     Answer2</label> 
     <br> 
<button type="submit" name="btnSubmit" id="btnSubmit">Submit</button> 
    </form> 

Mais ID de chaque forme est différente, comme test_form_1, test_form_2, test_form_3, et ainsi de suite. J'appelle ces formes via HEREDOCS une fois que PHP décide quel ID appartient à l'utilisateur. Puis j'utilise un JavaScript pour soumettre automatiquement le formulaire après 5 secondes.

Voici les Heredoc:

$test1= <<<HTML 
<table>Month 1 Test.</table> 
HTML; 
$test2= <<<HTML 
<table>Month 2 Test.</table> 
HTML; 
//and so on... 

Et voici la partie PHP:

<?php 
if($user_category == test1){ 
echo"test1"; 
} 
if($user_category == test2){ 
echo"test2"; 
} 

Ma question: Est-il possible de passer ID-getElementById de cette forme uniquement à laquelle l'utilisateur appartient réellement? De sorte qu'il soumet uniquement ce formulaire à la base de données à laquelle l'utilisateur appartient réellement. Ou y a-t-il une meilleure alternative pour y parvenir?

Répondre

1

Essayez ceci:

<script> 
    var userID = "<?php echo $userID ?>"; // For example 

    window.setTimeout(function() { 
    document.getElementById('test_form_'+ userID).submit(); 
    }, 5000); 
</script> 
+0

si dans le cas où je veux changer l'ensemble Nom de variable? Puis-je le faire comme ceci: 'document.getElementById (userID) .submit();' ??? – user2561597

+0

Oui, ça va marcher. Mais je ne vois pas la partie PHP de votre question dans cette réponse? – trizz

+0

J'ai ajouté HEREDOCS et PHP au code ... – user2561597

1

Je ne connais pas votre code PHP, mais vous pouvez faire quelque chose comme ceci (en supposant que l'id habite ID $)

<script> 
window.setTimeout(function() { 
    document.getElementById('test_form_<?=$ID;?>').submit(); 
}, 5000); 
</script> 
+0

Cela devrait être une évidence, mais pour certains, il ne l'est pas. Notez que si vous mettez ceci dans un fichier javascript externe, il n'analysera PAS le fichier en PHP, et vous obtiendrez un "id" littéral de "test_form_ ". Si vous souhaitez l'utiliser dans un fichier JS externe, faites plutôt référence à une variable et définissez-la avec un script avant de charger votre fichier JS externe. – h2ooooooo

+0

gardez les balises PHP hors des guillemets sinon ça deviendrait une chaîne! –

+1

@MohammadAreebSiddiqui Nope - PHP analyserait le document avant même que le navigateur ne s'en approche, et PHP se fout de tout ce qui n'est pas dans les balises PHP. Le navigateur obtiendrait ceci servi 'document.getElementById ('test_form_2'). Submit()'. – h2ooooooo

1

Si votre user_id est stocké en session, vous pouvez le faire comme ceci:

<script> 
    <?php session_start(); ?> 
    var id= <?php echo $_SESSION['user_id']; ?> 

    window.setTimeout(function() { 
    document.getElementById('test_form_'+ id).submit(); 
    }, 5000); 
</script> 
+0

Cela ne marcherait pas - vous oubliez vos balises PHP. :) – h2ooooooo

+0

@ h2ooooooo THanks, édité :) –

+0

Vous avez oublié le 'echo';) – trizz

0

est-ce le userID connecté au formID? Ne serait-il pas plus facile de garder la trace de quel utilisateur il est, par un session variable, dans le script PHP? De cette façon, vous ne pouvez pas tricher dans le script et voter pour quelqu'un d'autre.

Parce que si vous conservez l'ID utilisateur dans une variable dans le script, vous pouvez facilement modifier cela pour qu'il/elle veut. Et à son tour, votez pour tout utilisateur qu'il/elle veut.

Ainsi, lorsqu'un utilisateur se connecte, faire quelque chose comme ceci:

<?php 
session_start(); 
$_SESSION['sess_userID'] = $userID_of_the_loggedin_user; 
?> 

Ensuite, dans votre script fichier distant, test_submit.php:

<?php 
session_start(); 
// Grab $_POST data and such 
// Then perform something with $_SESSION['sess_userID']; 
// Like SQL; "UPDATE votes SET answer=10 WHERE userID=$_SESSION['sess_userID']" 
// But have in mind the SQL-injection. 
?>