[php+mysql+js]duda como hacer esto?

cracking

a ver, lo q quiero hacer es muy "simple", pero me toy liando con el javascript de los cojones...

a ver digamos q tengo dos cajas de texto, en una escribo un nombre en español, y cuando pierda el foco, quiero q en la otra caja de texto salga ese nombre en ingles, en verdad os da igual lo q escriba en las cajas de texto, porq ese nombre en ingles lo tengo q coger de la base de datos con un select del nombre en ingles donde el nombre en español sea el q yo he escrito, el nombre en ingles sé conseguirlo, lo q no sé es como cojones asignarle a la caja de texto esa q yo quiero el valor del nombre en ingles, ya q ese nombre lo he conseguido mediante php, y lo tengo en una variable php.

he intentado desde el archivo php q ejecuta la consulta sql y consigue el nombre en ingles y tal, hacer una llamada a una funcion javascript pasandole como parametro el nombre en ingles, y ya sí desde la funcion javascript ya sabria hacer el .value=nombreeningles de la caja de texto q quiero, pero no sé como llamar a la funcion javascript desde el php, he intentado abriendo codigo javascript y hacer un simple alert y no me sale

if(isset($_SESSION["usuario"]))
{
	$sentencia = $_POST["sentencia"];
	
if (mysql_query($sentencia))
{
	$resres=mysql_query($sentencia);
	while($filfil=mysql_fetch_row($resres))
	{
		foreach($filfil as $cam)
		{
			$nombrecarta=$cam;
		}
	}
	echo $nombrecarta."<br>";	
	echo "OK";
	//aqui ya tengo el nombre de la carta e intento hacer una llamada js y no sé como
	?>
	<script>
		alert("hola");
	</script>
	<?
}
else
{
	echo "NO";
}
}
else
	echo "No estás autorizado a ver esta página."; 
elkaoD

value="<? echo $nombre; ?>"

Como popiedad, en el HTML.

pio-

php trabaja desde servidor, javascript usuario

ejemplo de como llamar a la funcion, x lo menos ami me funciona en mi proyeto xd

echo "<script language='JavaScript' type='text/JavaScript'>";
echo "MM_showHideLayers('usuarios','','show','biblioteca','','hide','inicio','','hide','librobuscar','','hide')";
echo "</script>";

hay toy haciendo la llamada a la funcion MM_showHideLayers de javascript

elkaoD

#3, yo entiendo que no es dinámico, sino que se introduce el nombre en el textbox, se submittea y ahí ya se muestra.

Pero vamos que puede ser que no xD

cracking

alomejor me explique mal, no, no se submitea, si fuese asi es muy facil XD, si q es dinamico, yo escribo HOLA en la caja de texto nº1, y al darle al tabulador(vamos, cuando pierda el foco)que en la caja de texto nº2 se rellene con ILLONAS! q lo he recogido de una base de datos q tiene una tabla donde sabiendo HOLA, cojo el ILLONAS!

si alguien me dice otra forma mas facil q me lo diga, pero yo lo tengo hecho asi, en el onBlur (cuando pierde el foco) de la caja de texto llamo a una funcion javascript (HASTA AQUI BIEN), desde la funcion javascript cojo el cotnenido de la caja de texto y me monton una cadena de texto en base a ese contenido q sera la sentencia SQL a ejecutar en la base de datos, asi q me quede algo tal que asi:

var sentencia = "SELECT nombreEng FROM nombres WHERE nombreEsp='"+nombreesp+"';"

nombreesp tendra el contenido de la caja de texto.
ahora esta sentencia (como cadena de texto) se la envio a una pagina .php atraves de ajax, asi consigo ejecutar la sentencia sql con mysql_query() desde el php, y consigo el nombre deseado, digamos q ya tengo el nombre deseado en $nombreingles, el problema q no sé ahora como poner ese valor en la puta cajita de texto XD, porq he probado cerrando php, abriendo javascript, y poniendo:

<script>
        document.miformulario.micajadetextoeningles.value="<?echo $nombreingles?>";
</script>

pero naaaaaada asi no es o no me va, asi q digo weno voy a llamar a una funcion javascript enviandole como parametro el $nombreingles (que eso lo tengo hecho por ahi y sí se hacerlo) y ya desde la funcion pos ya si puedo poner lacajitadetexto.value=loqsea

pero no sé llamar a la puta funcion javascript XD, he probado lo q habeis dicho por ahi arriba y no, no me funciona porq?!?!

se supone q si hago esto:

echo "<script language='JavaScript' type='text/JavaScript'>";
         echo "alert('hola')";
echo "</script>";

debe salir un alert con hola no? pues nada, no. :S!

pio-

tiens algun addon que te bloquee los javascripts? xDD
sino npi

elkaoD

Si lo quieres que se submitée, no puedes usar PHP, es decir, lo que yo puse no vale de nada, porque PHP se interpreta en el servidor.

Si con JS ya sabes sacar el valor de la base de datos, es simplemente form.cajatexto.value = variable;

Si no sabes sacar el valor de la BD, yo tampoco, no uso mucho JS xD

EDIT: Vale, ya te he leido. Pega el código JS entero o algo, porque no entiendo muy bien exactamente hasta donde llega el fallo.

l31m

usa ajax coño, usa ajax

http://www.prototypejs.org/api/ajax/updater

cracking

eso hago, usar ajax, pero no tengo ni puta idea, simplemente he reutilizado un codigo q habia por ahi y es con lo q me estoy valiendo pa mezclar js con php, y no, en js no consigo el valor como para poder hacer el .value=taltal, ese es el problema XD

elkaoD

Entonces aprende AJAX xD http://www.librosweb.es/ajax/

Con un .php que devuelva el nombre en inglés sólo (Con un echo) y AJAX, es facil

cracking

jop :( XD, lo veo tan xungo...

elkaoD

Pues yo lo veo tiradísimo. No hace falta ni entenderlo, con copypastear cuatro cosas...

EDIT: Me aburría así que te he hecho el trabajo más fácil del mundo, copypastear cosas xD

Primero haz un getName.php que coja $_POST['name'] y printée el nombre resultante, símplemente. Asumo que la llamada a MySQL en el PHP sabes hacerla.

Luego un getName.js :

var READY_STATE_COMPLETE=4;
var peticion_http = null;
 
function inicializa_xhr() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest(); 
  } else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP"); 
  } 
}

function sacanombre() {
  peticion_http = inicializa_xhr();
  if(peticion_http) {
    peticion_http.onreadystatechange = procesaRespuesta;
    peticion_http.open("POST", "http://localhost/getName.php", true);
    peticion_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    peticion_http.send("name=" + document.getElementById("nombre_sp").value); // Asumiento que el textbox id del nombre a coger es nombre_sp
  }
}
 
function procesaRespuesta() {
  if(peticion_http.readyState == READY_STATE_COMPLETE) {
    if (peticion_http.status == 200) {
      document.getElementById("nombre_en").value = peticion_http.responseText; // Asumiendo que el textbox del nombre devuelto es nombre_en
    }
  }
}

Ahora simplemente, en el onBlur llamas a sacanombre()

De hecho yo mismo lo he implementado así en http://80.36.134.184/prueba_ajax/ y funciona perfectamente :D

cracking

lul! muchas gracias tio, intentare acoplarlo a lo mio, si supongo q sera una de las cosas mas facil del mundo, pero no se NADA de Ajax, y pa coypastear, hace falta el qué copypastear y como y entenderlo pa q funcione, por eso aun no he dado con la tecla, ahora voy a probar copypasteando esto e intentare traducirlo a lo mismo, y gracias a tus comentarios, sino lo mismo me pierdo y to, le cambiare los ids de mis cajas de texto y tal, y php no teno ni idea q teno q hacer con el, simplemente conseguir el nombre y hacer un echo de él? y eso ya hará q salga en el textbox? supongo que debido al "peticion_http.responseText;" nu?

es mas, creo q todo eso lo tenia hecho pero sin saber q lo tengo hecho ya q no lo entiendo, si el responseText ese hace lo q yo creo, creo q yasta, solo tengo q asignar lo q devuelve el responseText ese a la cajadetexto.value y gl

gracias mil gracias!

elkaoD

#13, exacto, con conseguir el nombre y hacer el echo ya hace todo, y el javascript y tal puedes verlo en la web de ejemplo que he puesto mía para ir intentando entenderlo.

Es bastante fácil si te pones. Yo de hecho he aprendido a usar esta mierda esta tarde xD

cracking

gracias, crei q ya no lo conseguiria, no me podia poner a aprender ajax ahora, saldre del paso demomento supongo y ademas me servira tb para sacar el precio en base al nombre automaticamente, way, thx!

edit: lol? esta tarde? jaja pos alguna tarde de estas me pondre, en la pagina q me diste antes le eche un vistazo por encima y habia un tocho grandisimo q no entendia para que era nada, como la mitad de tu codigo, pero supongo q esq eso hay q ponerlo para q funcione y punto pelota, y tu ya luego te las apañas con los open, los sends y esas polladas, nuse, ya veremoz, gracias otra vez

elkaoD

En el tutorial ese hay una sección que te explica a hacer esto mismo pero mandando y recibiendo XML, que es mucho más simple para cuando envías y recibes varios campos de la BD.

También puedes usar JSON (Mejor para mi gusto :D)

cracking

gracias, al final lo he conseguido, solo tenia q cambiar un contenedor.innerHTML = ajax.responseText; que tenia por ahi y asignar el ajax.responseText a lo q yo queria

una pequeña dudilla al hacer eso, me ha salido efectivamente lo q yo he hecho con echo, pero tb todo esto

<html><head><title>DARAMAGIC</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="Content-Style-Type" content="text/css" /><link href="estilo.css" rel="stylesheet" type="text/css" /></head><body> MI ECHO </body></html>

lo he solucionado quitando todo ese codigo html q tenia en el php q hacia la consulta ya q no me hacia falta para nada, pero, porq?
otra duda, puedo coger mas de 1 eco por separado XD?
se me ha ocurrido pasar todo lo q quiero en un echo separado por guiones y luego en el js hago un split por guiones y yasta, pero es demasiado cutre, como se haria mas profesional jaja?

elkaoD

Te lo he dicho antes, XML o JSON, mira en la web.

Y la pregunta del por qué no la entiendo xD

cracking

jaja vale gracias, al final lo he hecho haciendo
echo "$valor1-$valor2"; jaja y en el js hago un .split del responseText y listo XD

y muchas gracias, entender un poquito mas esto me ha servido para otra cosa q postee para un autocompletado en el q tenia q crear un array en el js a partir de una consulta en sql, y no sabia como pasar la variable en php q tenia mi consulta al js, ahora lo he solucionado facilmente, gracias una vez mas XD

edit: por cierto, hay alguna manera pa devolverle desde el php al ajax algo atraves de otra forma q no sea haciendo un echo "hola"; y recogiendolo con el responseText ?

elkaoD

¿Y cómo quieres que reciba los datos? Quiero decir, ¿Cuál es el problema?

cracking

no es q haya problema nose, pero veo un poco raro tener q recogerlos a partir de un echo, osea, no puedo pasar por ejemplo un array en si, tengo q hacer un echo y apañarmelas pa montar un array en el otro lao

elkaoD

Claro, ¿Cómo vas a pasar un array si no? Quiero decir, cuando tu haces un array en PHP, básicamente PHP se está "apañando" para llamar a trozos de memoria de esa forma, pero no es si no memoria lineal.

Pues esto es lo mismo. Con JSON o enviándolo con XML puede que te suene un poco más normal, pero básicamente es lo mismo, es simplemente un echo con más cosas aparte de los datos en sí.

cracking

ajum oki no lo habia pensado asi jaja, thx, hasta mi proximo problema! jaja de momento va to viento en popa saludos

Usuarios habituales

  • cracking
  • elkaoD
  • l31m
  • pio-