Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con php ajax y mysql

Estas en el tema de Problemas con php ajax y mysql en el foro de Frameworks JS en Foros del Web. La idea es ke al seleccionar un departamento me escriba el nombre y el email del encargado, lo intente con ajax, pero soy nueva en ...
  #1 (permalink)  
Antiguo 31/10/2006, 17:25
Avatar de dalyla  
Fecha de Ingreso: septiembre-2005
Mensajes: 135
Antigüedad: 19 años, 3 meses
Puntos: 1
Problemas con php ajax y mysql

La idea es ke al seleccionar un departamento me escriba el nombre y el email del encargado, lo intente con ajax, pero soy nueva en esto. Y pues si alguien tiene una sugerencia.

Código PHP:
<?
echo "
<script language=\"javascript\">

function HayDatos() 
    {
    if (document.solicitudes.descripcion.value == \"\")
       {               
       alert(\"Favor de Proporcionar sus Comentarios o Sugerencias\");        
       return false;           
       }       
    else
       { 
       if (document.solicitudes.descripcion.value == \" \")             
               {            
            alert(\"Favor de Proporcionar sus Comentarios o Sugerencias\");                
            return false;             
            }
        else
            {     return true;     }
        }      
       }

    
    </SCRIPT>
    "
;
         
 echo 
"
  <p align=\"left\" class=\"style2\">Escriba a continuacion la solicitud que desee, ya sea para solicitar un Servicio, para modificar algun dato referente a su informacion personal. Seleccione el Departamento al que va dirigido y el Asunto del que se trate. </p>
</blockquote>
<p>&nbsp;</p>
<form name=\"solicitudes\" action=\"enviar.php\" onSubmit=\"return HayDatos()\">
<table width=\"996\" height=\"335\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">
  <tr>
    <td width=\"43\" height=\"42\">&nbsp;</td>

    <td width=\"165\"><div align=\"right\"><span class=\"style1\">Departamento a quien va dirigido: </span></div></td> "
;
    
     
$rs=mysql_query("Select email1, concat(usuarios.nombre,' ', usuarios.apaterno, ' ', usuarios.amaterno) as nombre,  usuarios.idarea from usuarios left join puestos on (puestos.idpuesto = usuarios.idpuesto) where puestos.nombre = 'GERENTE'"$link); 
     
    
$i=0;
    while(
$row mysql_fetch_array($rs))
        {
        
$nm[$i] = $row["nombre"];
        
$ml[$i] = $row["email1"];
        
$ar[$i] = $row["idarea"];
        
$i++;
        }    
    
/*
    printf(count($nm));    
    
    for($a=0;$a<count($nm);$a++)
       {
       printf($nm[$a]);
       }*/
   
    
echo"
    <td width=\"252\"><blockquote>
      <p> 
      <script languaje=\"javascript\">
      function AreaEmail()
          {"
;
        for (
$a=0$a<count($ar);$a++)
            {
            echo 
"if (document.solicitudes.aquien.value == "$ar[$a].")                    
                    {                    
                    document.solicitudes.nombre.value = "
$nm[$a] ." ;                                        
                    document.solicitudes.email.value ="
$ml[$a] . "; 
                    }" 
;
            }
        echo 
"
        }
      </script>
     "

    
     
?>
     
     <select name="aquien" size="1" onChange="AreaEmail();">        
       <option value="0" selected>Selecci&oacute;n</option>          
       <option value="0">Direcci&oacute;n</option>
       <option value="14">Gerente Operativo</option>
       <option value="13">Gerente Administrativo</option>
       <option value="1">Ventas</option>
       <option value="9">Cobranza</option>
       <option value="6">Administracion</option>
       <option value="3">Servicios</option>
       <option value="2">Inst. de alarmas</option>
       <option value="4">Central y Patrullas</option>
     </select>
     <?
echo "
      </p>
    </blockquote></td>
    <td width=\"249\"><p> "
;

   
    
   
echo 
"
      <span class=\"style1\">Nombre:</span>
      <input name=\"nombre\" type=\"text\" size=\"50\">
    </p></td>
    <td width=\"271\" class=\"style1\">Email:
      <input type=\"text\" name=\"email\"></td>
  </tr>
  <tr>
    <td height=\"39\">&nbsp;</td>
    <td><div align=\"right\"><span class=\"style1\">Asunto:</span></div></td>
    <td colspan=\"3\"><blockquote>
      <p>
        <select name=\"asunto\" id=\"asunto\">
          <option value=\"Solicitud General\" selected>Seleccion</option>
          <option value=\"Solicitud de Servicio\">Solicitud de Servicio</option>
          <option value=\"Solicitud de Cambio de Datos\">Solicitud de Cambio de Datos</option>
          <option value=\"Sugerencias\">Sugerencias</option>
          <option value=\"Queja\">Queja</option>
          <option value=\"Solicitud General\">Otro</option>
        </select>
      </p>
    </blockquote></td>
    </tr>
  <tr>
    <td height=\"209\">&nbsp;</td>
    <td valign=\"top\"><div align=\"right\"><span class=\"style1\">Descripcion</span></div></td>
    <td colspan=\"3\"><blockquote>
      <p id=\"descripcion\" name=\"descripcion\" cols=\"80\" rows=\"10\">
        <textarea name=\"descripcion\" cols=\"80\" rows=\"10\" id=\"descripcion\"></textarea>
      </p>

    </blockquote></td>
  </tr>
  <tr>
    <td height=\"40\">&nbsp;</td>
    <td valign=\"top\">&nbsp;</td>
    <td colspan=\"3\" valign=\"baseline\"><blockquote>
      <blockquote>
        <p align=\"right\" name=\"textarea\" cols=\"80\" rows=\"10\">
          <input type=\"submit\" name=\"Submit\" value=\"  Enviar  \">
            <input type=\"reset\" name=\"Submit2\" value=\"  Limpiar  \">
        </p>
      </blockquote>
    </blockquote></td>
    </tr>
</table>
</form>


<p>&nbsp;</p>
"
;


?>
  #2 (permalink)  
Antiguo 01/11/2006, 05:28
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Busqueda AJAX carga datos del servidor

Hola dalyla:

En este script no estás utilizando AJAX. Con AJAX cargas datos del servidor y normalmente se utiliza para actualizar parte de la página (un bloque div normalmente, pero no tiene porqué ser un div)

Antes de nada, veo que en tu script sólo haces algo cuando envías el formulario (onsubmit).

Te voy a poner un ejemplo de como cambiar el valor de un campo de texto cuando cambia el valor de un select (puedes crearte un php o html pegando el código que viene, para probarlo):

<script language="javascript1.2" type="text/javascript">

/*
Definimos la función alCambiarLaLista que será llamada cuando cambie el valor visible de la lista
En este caso la propia lista se recibe como parámetro y la recogemos en la variable laLista
*/

var alCambiarLaLista = function(laLista) {

// Asignamos a la variable elResultado el campo "resultado"
var elResultado = document.getElementById("resultado");

// Asignamos al campo resultado el valor del select "lista"
elResultado.value = laLista.value;
}
</script>

<form>

<!--//
Definimos un campo select y capturamos el evento ochange
Este evento se produce cuando el valor del select cambia
Cuando se produzca llamamos a la función alCambiarLaLista
y le pasamos la propia lista
//-->

<select id="lista" onchange="alCambiarLaLista(this)">
<option value="uno">uno</option>
<option value="dos">dos</option>
</select>

<!--
Este campo es para recibir el resultado
Accedemos a él con document.getElementById("resultado")
//-->

<input type="text" id="resultado">

</form>
  #3 (permalink)  
Antiguo 01/11/2006, 05:35
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Entendí mal

Lo siento, sí veo que llamas a una función cuando cambia el select, es que pegué tu código en un txt para verlo mejor pero no lo debí de pegar todo

Acabo de ver en otro POST tuyo en el que ya te apuntaron como funciona AJAX (en concreto sergi_climent).

A ver, se trata de que entiendas como funciona para poder utilizarlo a tu gusto.
Te diría que crees los 3 ficheros descritos en el siguiente POST.
Luego llama a test.php, verás que el campo de texto se actualiza sin recargar la página.

Y luego si tienes alguna pregunta concreta, será más fácil ayudarte.

Última edición por vengava; 01/11/2006 a las 07:50
  #4 (permalink)  
Antiguo 01/11/2006, 06:20
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Te pongo un ejemplo y luego tú lo adaptas a tu código:

Vamos a llamar desde test.php a través de AJAX a ajax.php pasándole un elemento de un select.
ajax.php nos lo devuelve en mayúsculas y actualizamos un campo de texto con lo que nos devolvió, OK?

Necesitarás 3 ficheros:

// Contenido de ajax.php
Código PHP:
<?
    
echo strtoupper($_GET['palabra']);
?>
// Contenido de ajax.js

Código:
<!--
// devuelve un objeto XMLHttpRequest para varios navegadores
function AJAX() {
	try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
		try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (ee) {xmlhttp = false;}
	}
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {xmlhttp = new XMLHttpRequest();} catch (e) {xmlhttp = false;}
	}
	if (!xmlhttp && window.createRequest) {
		try {xmlhttp = window.createRequest();} catch (e) {xmlhttp = false;}
	}
	if (!xmlhttp) {
		alert("Tu navegador no soporta el objecto XMLHttpRequest.");
	}
	return xmlhttp;
}

var alCambiarLaLista = function(laLista) {
   // obtenemos un objeto XMLHttpRequest en la variable ajax	
   var ajax = new AJAX();
   // Construimos la petición a ajax.php con el valor seleccionado del select como parámetro
   ajax.open("GET","ajax.php?palabra=" + laLista.value,true);
   // Cambió el estado de la petición
   ajax.onreadystatechange = function() {
      // Si completada la petición
      if (ajax.readyState == 4) {
         // Si la respuesta es 200 OK
         if (ajax.status == 200) {
            document.getElementById("enMayusculas").value = ajax.responseText;
         }
      }
   }
   // Ejecutamos la petición
   ajax.send(null);
}
//-->
// Contenido de test.php

Código HTML:
<script type="text/javascript" src="ajax.js"></script>
<form>
<select id="lista" onchange="alCambiarLaLista(this)">
   <option value="uno">uno</option>
   <option value="dos">dos</option>
</select>
<input type="text" id="enMayusculas">
</form> 

Última edición por vengava; 01/11/2006 a las 07:53 Razón: formatear como código
  #5 (permalink)  
Antiguo 01/11/2006, 10:36
Avatar de dalyla  
Fecha de Ingreso: septiembre-2005
Mensajes: 135
Antigüedad: 19 años, 3 meses
Puntos: 1
Pregunta Como le hago

Ok estoy de acuerdo que no use ajax, lo intente, pero, mi logica no me funciono Asi que mi pregunta es como puedo usar un array de php en java, porque ocupo de ese array que llene con un query.

select * from areas

y digamos que me da

departamento nombre areas
compras lola 1
admon. jaime 2
.....

_______________________________

y eso lo lleno en un array para comparlo con el select o combo box
el combo es

text value
compras 1
admon 2

entonces si selecciono compras , quiero comparar el valor con mi array
recordando que el array es php y el valor del select es js

cuando coincida quiero que en un textfield me escriba el nombre (y el email) y que se ejecute en el onChange.

Me dijeron que usara ajax para combinar los dos lenguajes. pero trato de hacerlo, y pues no hayo el modo.

En resumen si selecciono un departamento me escriba el nombre y el email en un y textfield

Si alguien lo ha hecho antes por favor ayudeme, de antemano gracias. y gracias a los que ya me han ayudado.
  #6 (permalink)  
Antiguo 01/11/2006, 18:59
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
No me he parado mucho pero si no me equivoco estas líneas de tu código php:

Cita:
Iniciado por dalyla Ver Mensaje
Código PHP:
for ($a=0$a<count($ar);$a++) 
   {
    echo 
"if (document.solicitudes.aquien.value == "$ar[$a].")                    
            {                    
                    document.solicitudes.nombre.value = "
$nm[$a] ." ;                                        
                    document.solicitudes.email.value ="
$ml[$a] . "; 
             }" 
;

Escribirían este javascript:
Código:
document.solicitudes.nombre.value = dalyla;
Cuando según creo, quieres que escriban:
Código:
document.solicitudes.nombre.value = "dalyla";
Si es así prueba a ponerle comillas a los valores:
Código PHP:
document.solicitudes.email.value '". $ml[$a] . "'
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 23:10.