No ejecuto, interpreto, sigo o aplico lo que el texto demanda.
Aucune_solution
-
jordane45 Mensajes publicados 30426 Fecha de registro Estado Moderador Última intervención -
jordane45 Mensajes publicados 30426 Fecha de registro Estado Moderador Última intervención -
Bonjour,
Quiero recuperar el valor de un país que es una lista, para asociarle el código de teléfono en mi campo de teléfono. Y esto antes de validar mi formulario, no encuentro ninguna solución, ¿cómo puedo hacerlo por favor?
Gracias
Quiero recuperar el valor de un país que es una lista, para asociarle el código de teléfono en mi campo de teléfono. Y esto antes de validar mi formulario, no encuentro ninguna solución, ¿cómo puedo hacerlo por favor?
Gracias
6 respuestas
-
Tu veux :
Seleccionas un PAÍS de tu lista desplegable
En ese momento.. el indicativo (teléfono) del país correspondiente aparece en tu campo de entrada TEL...
Sabiendo que:
- La lista de indicativos de países está presente en una tabla de tu BDD....
ENTONCES:
- Detectas el cambio de país en tu select gracias al método ONCHANGE<select id="countrySelect" name="country" onchange="check();getIndicateurPays();">
- Recuperas, a través de AJAX, el indicativo del PAÍS correspondiente
por lo que debes hacer una página PHP especialmente dedicada para recuperar el indicativo del país a través de una consulta sql y usarlo con la llamada AJAX.
- Pones en tu INPUT TEL... el indicativo recuperado a través de AJAX (en javascript)
Nivel Javascript (AJAX):
function getIndicateurPays(){ var urlAjx = 'cheminverstonfichier/indicatifPays.ajx.php'; var pays = $("#countrySelect").val(); var data = {pays:pays}; $.ajax({ url: urlAjx, dataType: "json", type: "POST", data: data, async: false, success: function(reponse){ $("#tel_struct").val(reponse); }, error: function(jqXHR, textStatus){ var error = formatErrorMessage(jqXHR, textStatus); alert('error :' + error); } }); } function formatErrorMessage(jqXHR, exception) { if (jqXHR.status === 0) { return ('No conectado.\nPor favor verifica tu conexión a la red.'); } else if (jqXHR.status == 404) { return ('La página solicitada no encontrada. [404]'); } else if (jqXHR.status == 500) { return ('Error interno del servidor [500].'); } else if (exception === 'parsererror') { return ('Error de análisis de JSON solicitado fallido.'); } else if (exception === 'timeout') { return ('Error de tiempo de espera.'); } else if (exception === 'abort') { return ('Solicitud Ajax abortada.'); } else { return ('Error no controlado.\n' + jqXHR.responseText); } }
Y del lado de PHP// aquí incluyes tu archivo de conexión a tu BDD // luego: // recuperación de las variables POST $pays = isset($_POST['pays'])?$_POST['pays']:NULL; if($pays){ // aquí tu consulta: $sql = "SELECT * FROM tatable WHERE pays='$pays'"; // ejecución de tu consulta : $result = ------ } // Luego devuelve los datos hacia el ajax : echo json_encode($result);
Eso es todo ...
Te dejo completar!-
-
Tendría una última pregunta sobre el valor del país.
Inicialmente, el país tiene un cierto valor, y en este caso no tengo el indicativo, tendría que seleccionar el país primero.
¿Cómo puedo obtener el indicativo en este caso?- No he entendido nada...
Tu lista desplegable... ¿te devuelve bien el "valor" del país (en este caso, su ID)?
Así que, en el where de tu consulta... ¿lo utilizas...?
Por supuesto... el código que te doy es puramente a título de ejemplo... no conociendo la estructura de tu BBDD... pero puedo deducir que debería parecerse a algo así:$sql = "SELECT champIndicatif FROM tatable WHERE id_pays='$pays'";
-
-
Hola,
Para esto necesitas usar JAVASCRIPT con AJAX
Lo ideal sería pasar por JQUERY (la sintaxis y el uso del ajax son simplificados, creo)
https://openclassrooms.com/fr/courses/1567926-un-site-web-dynamique-avec-jquery/1569648-le-fonctionnement-de-ajax
--
Atentamente,
Jordane -
He puesto el archivo Ajax aparte, el archivo que contiene los inputs aparte, con como URL del ajax: fichier_des_inputs.php, ¿es correcto eso?
No lo creo...
¿El archivo ajax... qué significa? ¿El archivo que contiene el código PHP de la parte AJAX o el código Javascript?
Si te refieres al código PHP... es el que debe ir en la URL.
Lo ideal sería que nos publiques el código de cada uno de tus archivos (indicando bien su nombre para que nos podamos organizar).
En orden:
El código que contiene tus campos (tu lista desplegable, tus inputs (Tel ....)
Este archivo también puede contener el Javascript del ajax (a menos que lo hayas puesto en un archivo aparte).
El código del archivo PHP llamado por el AJAX.
PD: Cuando haces desarrollo Javascript (y/o AJAX) es MUY recomendable utilizar las herramientas de depuración de tu navegador de internet para ver si hay errores y observar un poco lo que está pasando. Para ello, te aconsejo encarecidamente que utilices el plugin FIREBUG para Firefox....
Y aquí hay un tutorial para aprender a utilizarlo: https://eric-pommereau.developpez.com/tutoriels/outil-web/firebug/
--
Atentamente,
Jordane -
Quiero conocer el valor del país antes de enviar el formulario, lo necesito para especificar el indicativo del teléfono
¿Lo necesitas O ¿Dónde?
¿Para qué?
¿Por qué ANTES del ENVÍO?
Tu pregunta no es lo suficientemente clara y precisa ... ¡es casi imposible que podamos responderte!
No sabemos nada de tu código .... ni de lo que quieres hacer exactamente .....
--
Atentamente,
Jordane -
J'ai besoin de connaître la valeur du pays afin de remplir le champ numéro de téléphone avec l'indicatif correspondant, par exemple si je sélectionne la France, je dois avoir automatiquement dans le champ téléphone (33) .....
Voici mon code :<form action="traitement_formulaire.php" method="post" id="sky-form" class="sky-form"> <!-- Pays ------> <select id="countrySelect" name="country" onchange="check()"> <?php $reponse = $bdd->query('SELECT * FROM pays'); echo '<OPTION VALUE="">Pays</OPTION>'; while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC)) { echo '<OPTION VALUE="'.$donnees["id_pays"].'" >' . $donnees["pays"].'</OPTION>'; } ?> <!--Tél générique--> <input type="tel" name="tel_struct" id="tel_struct" placeholder="Téléphone générique"> </form> -
Voici mes archivos:
archivo 1: test2_pays.php<select id="countrySelect" name="country" onchange="check();getIndicateurPays();">?php $reponse = $bdd->query('SELECT * FROM pays'); echo '<OPTION VALUE="">Pays</OPTION>'; while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC)) { echo '<OPTION VALUE="'.$donnees["id_pays"].'">'.$donnees["pays"].'</OPTION>'; } ?> </select> <input type="tel" name="tel_struct" id="tel_struct" placeholder="Téléphone générique">
archivo 2: test_pays.php<?php // aquí incluyes tu archivo de conexión a tu BDD include("connexion.php"); // luego: // recuperación de las variables POST $pays = isset($_POST['country']); if($pays){ // aquí tu consulta: $sql = "SELECT * FROM pays WHERE id_pays='$pays'"; // ejecución de tu consulta: $bdd->exec($sql); } // Luego envía los datos hacia el ajax: echo json_encode($result); ?> <script> function getIndicateurPays(){ var urlAjx = 'test2_pays.php'; var pays = $("#countrySelect").val(); var data = {pays:pays}; $.ajax({ url: urlAjx, dataType: "json", type: "POST", data: data, async: false, success: function(reponse){ $("#tel_struct").val(reponse); }, error: function(jqXHR, textStatus){ var error = formatErrorMessage(jqXHR, textStatus); alert('error :' + error); } }); } function formatErrorMessage(jqXHR, exception) { if (jqXHR.status === 0) { return ('No conectado.\nPor favor verifica tu conexión de red.'); } else if (jqXHR.status == 404) { return ('La página solicitada no fue encontrada. [404]'); } else if (jqXHR.status == 500) { return ('Error interno del servidor [500].'); } else if (exception === 'parsererror') { return ('El análisis del JSON solicitado falló.'); } else if (exception === 'timeout') { return ('Error de tiempo de espera.'); } else if (exception === 'abort') { return ('Solicitud Ajax abortada.'); } else { return ('Error no controlado.\n' + jqXHR.responseText); } } </script>-
Oula ... non ... !
Tienes un documento que contiene :
- Tus campos HTML (incluida tu lista de países) + el javascript asociado
- Un archivo PHP que contiene únicamente el código necesario para tu AJAX
En resumen :<select id="countrySelect" name="country" onchange="check();getIndicateurPays();"> ?php $reponse = $bdd->query('SELECT * FROM pays'); echo '<OPTION VALUE="">País</OPTION>'; while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC)) { echo '<OPTION VALUE="'.$donnees["id_pays"].'">'.$donnees["pays"].'</OPTION>'; } ?> </select> <input type="tel" name="tel_struct" id="tel_struct" placeholder="Teléfono genérico"> <script type="text/javascript"> function getIndicateurPays(){ var urlAjx = 'test2_pays.php'; var pays = $("#countrySelect").val(); var data = {pays:pays}; $.ajax({ url: urlAjx, dataType: "json", type: "POST", data: data, async: false, success: function(reponse){ $("#tel_struct").val(reponse); }, error: function(jqXHR, textStatus){ var error = formatErrorMessage(jqXHR, textStatus); alert('error :' + error); } }); } function formatErrorMessage(jqXHR, exception) { if (jqXHR.status === 0) { return ('No conectado.\nPor favor, verifica tu conexión a la red.'); } else if (jqXHR.status == 404) { return ('La página solicitada no fue encontrada. [404]'); } else if (jqXHR.status == 500) { return ('Error interno del servidor [500].'); } else if (exception === 'parsererror') { return ('Error al analizar JSON solicitado.'); } else if (exception === 'timeout') { return ('Error de tiempo de espera.'); } else if (exception === 'abort') { return ('Solicitud Ajax abortada.'); } else { return ('Error inesperado.\n' + jqXHR.responseText); } } </script>
Código del archivo AJAX PHP :<?php // aquí incluyes tu archivo de conexión a tu BDD include("connexion.php"); // luego : // recuperación de las variables POST $pays = isset($_POST['country']) ? $_POST['country'] : NULL; if($pays){ // aquí tu consulta: $sql = "SELECT * FROM pays WHERE id_pays='$pays'"; // ejecución de tu consulta : $bdd->exec($sql); } // Luego devuelve los datos hacia el ajax : echo json_encode($result); ?>
Además, has sido capaz de modificar código ... cuando solo era necesario hacer un simple copiar/pegar...
Para recuperar una variable correctamente, debes usar :// recuperación de las variables POST $pays = isset($_POST['country']) ? $_POST['country'] : NULL;
Mientras que tú.. al recuperar lo que te había dado.. lo modificaste a :$pays = isset($_POST['country']);
==>>> ¡Lo que no funcionará!
Luego ...
Cuando haces consultas de tipo SELECT ... no olvides que debes hacer un FETCH del resultado para poder leer el contenido... Te propongo usar directamente un fetchall()
Sin olvidar que es preferible usar consultas preparadas en lugar de un EXEC.
Así que tu código se convierte en :
if($pays){ // aquí tu consulta: $sql = "SELECT indicatif FROM pays WHERE id_pays=':pays'"; $params = array(':pays'=>$pays); // ejecución de tu consulta : $sth = $bdd->prepare($sql); $sth->execute($params); $result = $sth->fetchAll(); } // Luego devuelve los datos hacia el ajax : echo json_encode($result[0]['indicatif']); -
-
-
-
-