[AJAX] Contrôle de saisie en ajax - recuperer la valeur d'une requete sql de type SELECT
Salut a tous,
J'ai un formulaire sur n page php qui est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| echo PHP_EOL . '<form action="' . $_SERVER['PHP_SELF'] . '" method="post" name="frm" id="frm" enctype="application/x-www-form-urlencoded">';
echo PHP_EOL . '<input name="mode" type="hidden" value="add_relation" />';
echo PHP_EOL . '<input name="node" type="hidden" value="' . $node . '" />';
echo PHP_EOL . '<input name="b3" type="hidden" value="'. $b3 . '" />';
echo PHP_EOL . '<input name="b1" type="hidden" value="'. $docs->id_int . '" />';
// Selection du type de reference
echo '<select id="ID_type_ref" name="ID_type_ref" dir="ltr" onblur="modifTypeRefPourRelationB1B3('.$b3.', \'b3\')">';
$i=0;
foreach ($liste_type_ref as $k_type_ref => $tab_type_ref) {
echo '<option value="'.$tab_type_ref['ID'].'" '.(($i==0)?'selected':'').'>'.$tab_type_ref['type_ref'].'</option>';
$i++;
}
echo '</select>';
echo PHP_EOL . ' <input class="button_add" name="btn" value="Ajouter" type="submit" />';
echo PHP_EOL . '</form>'; |
Or, je voudrais tester que dans la table ou va se faire l'ajout je n'aurais pas dejà une valeur identique. Et si c'est le cas selectionner la valeur par defaut du select.
Dans cet objectif, j'ai fait une methode jajax:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| /**
* Méthode qui sera appelée pour chaque select modifiant le type de ref de la relation B1-B3
*/
function modifTypeRefPourRelationB1B3(id_ref_bib, type_biblio) {
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if (xhr.status==200 || xhr.status==0){
alert('La ref bib est deja un fragment4.');
alert(xhr.responseText);
}else{
alert ("statut: "+xhr.status+" Texte: "+xhr.statusText);
}
}
}
xhr.open("POST","action_ajax.php",false);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("action=modifTypeRefPourRelationB1B3&id_ref_bib="+id_ref_bib+"&type_biblio="+type_biblio);
} |
J'utilise la méthode getXhr() définit par SIddh dans son tuto, "aller plus loin avec ajax".
Sur la page, action_ajax.php:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| /**
* MODIFIER LE TYPE DE REFERENCE D'UNE RELATION B1-B3
* SSI LA REF BIB A L'ORIGINE DE L'ACTION N'EST PAS DEJA DU TYPE FRAGMENT
* ----------------------------------------------------------------------------------
*/
if ((isset($_POST['action'])) && ($_POST['action']=='modifTypeRefPourRelationB1B3')) {
if ($_POST['type_biblio']==1) {
$sql='SELECT ID FROM Table1 WHERE ID_b1 = :id AND ID_type_ref = :id_type';
}
else {
// retourner 0
$sql='SELECT ID FROM Table1 WHERE ...';
}
$req = $db->res->prepare($sql);
$temp=$req->execute( array('id' => $_POST['id_ref_bib'], 'id_type' => ID_TYPE) );
} |
:roll: Vous l'aurez compris, je n'arrive pas à récupérer le résultat de mon select sql pour gérer si oui ou non, je dois selectionner un autre item du select html.