Foros del Web » Programando para Internet » Javascript »

Duda ajax - php - mysql

Estas en el tema de Duda ajax - php - mysql en el foro de Javascript en Foros del Web. Hola... un placer saludarles. Tengo una duda con ajax, resulta ser que estoy creando una pagina web, la cual simula la moderación de un administrador, ...
  #1 (permalink)  
Antiguo 06/04/2012, 17:49
 
Fecha de Ingreso: abril-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Exclamación Duda ajax - php - mysql

Hola... un placer saludarles. Tengo una duda con ajax, resulta ser que estoy creando una pagina web, la cual simula la moderación de un administrador, el cual acepta/rechaza la petición de los usuarios que seleccionan un producto, el cual quieren adquirir (una empresa de tv por cable).

Al grano XD, tengo una pagina que muestra el modulo de administración, en el cual hay un botón donde mediante ajax, llamo a una pagina que consulta una base de datos, la cual al ser leída da paso a la creación de una tabla con diversos campos (solicitante - plan actual - plan a adquirir - estado(aprobado/rechazado las cuales están en una lista desplegable)), luego de crear la tabla, creo un botón el cual al ser presionado, dependiendo de la opción de estado que el administrador seleccione consulta el cliente en la base de datos para actualizar su plan de tv.

Al ejecutar la pagina directamente sin ajax, la actualización de la base de datos se realiza exitosamente, y todo va de lujo.

http://imageshack.us/photo/my-images/843/87155398.jpg

Pero cuando uso ajax para llamarla en la pagina principal, me muestra la tabla y el botón, lo que está muy bien, pero cuando doy clic al botón, no me actualiza la base de datos.

http://www.subirimagenes.net/show-image.php?id=270bea196d934d9b4a7fde77ed263973

Pero al hacer click en el botón todo desaparece y nada se actualiza en la base de datos.

http://www.subirimagenes.net/show-image.php?id=86374f245c4c20d2e21a3256676ca67d

Me preguntaba si alguien podría ayudarme un poco.


Este es el código de la pagina principal donde hago uso de ajax
Código HTML:
<script>
var ajax;

function funcionCallback()
{
	// Comprobamos si la peticion se ha completado (estado 4)
	if( ajax.readyState == 4 )
	{
		// Comprobamos si la respuesta ha sido correcta (resultado HTTP 200)
		if( ajax.status == 200 )
		{
			// Escribimos el resultado en la pagina HTML mediante DHTML
			document.all.salida.innerHTML = ajax.responseText+"</b>";	
		}
	}
}

function recuperaResidencia()
{
	// Creamos el control XMLHttpRequest segun el navegador en el que estemos 
	
    if( window.XMLHttpRequest )
		ajax = new XMLHttpRequest(); // No Internet Explorer
	else
		ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer

	// Almacenamos en el control al funcion que se invocara cuando la peticion
	// cambie de estado	
	ajax.onreadystatechange = funcionCallback;

	// Enviamos la peticion
	ajax.open( "GET", "pagina2.php", true );       
	ajax.send( "" );
}
</script>
    <br/>
<span id="salida"></span> 
Este es el código de la pagina, que llamo dentro de la función de ajax

Código PHP:
<?php 
  
for($j=0;$j<500;$j++){
  
$datos[j]="";
  }
  
  include(
"conectar.php");
  
$clase = new Mysql();
  if(!
$clase->Conectar())
        echo 
"No se logró conectar con la Base de Datos";
        
  
$sql "select * from solicitud where sol_anterior like '%".$_GET["consulta"]."%'";
  
$res $clase->Query($sql);
  
$band=0;
  
$cont=0;
  while(
$fila mysql_fetch_array($res))
  {
  if(
$band==0){
  
?>
  Resultados:<br />
  <form id="form1" name="form1" method="post" action="">
    <label>
    <table width="90%" border="1" align="center">
      <tr>
        <td bgcolor="#99CCFF"><div align="center" class="style3">Solicitante</div></td>
        <td bgcolor="#99CCFF"><div align="center" class="style3">Plan Actual</div></td>
        <td bgcolor="#99CCFF"><div align="center" class="style3">Plan Solicitado</div></td>
        <td bgcolor="#99CCFF"><div align="center" class="style3">Estado</div></td>
      </tr>
      <?php
  
  
  $band
=1;
  }
  if(
$fila[3]==|| $fila[3]==1){
  
$datos[$cont]=$fila[0];
  
$sql2 "select * from informacion where login like '%".$fila[0]."%'";
  
$res2 $clase->Query($sql2);

  
$fila2 mysql_fetch_array($res2);
  
?>
      
      <tr>
        <td><div align="center"><?php echo $fila2[1]." ".$fila2[2]; ?></div></td>       
        
        <td><div align="center"><?php     
        
if(!empty($fila[1])) echo $fila[1]; //-----------> plan anterior
        
else echo "No Disponible";
        
?></div></td>
        
        <td><div align="center"><?php
        
if(!empty($fila[2])) echo $fila[2]; //-----------> plan solicitado
        
else echo "No Disponible";
        
?></div></td>
        
        <td><div align="center">
          <select name="select<?php echo $cont?>" id="select" >
                   <?php echo '<option>En Proceso</option>'?>
                   <?php echo '<option>Aprobada</option>'?>
                   <?php echo '<option>Rechazada</option>'?>
            </select>
        </div></td>
      </tr>
      <?php 
            
  $cont
++;
  }
  }
  
  
?>
    </table>
    <div align="center">
      <input type="submit" name="aprobar" id="aprobar" value="Guardar" />
    </div>
    </label>
      </form>  
  <br />
  <div align="center"></div>
  <p>&nbsp;</p>
  
  <?php 
  
if(isset($_POST["aprobar"])){
      for(
$i=0;$i<$cont;$i++){

        if(
$_POST["select".$i]=="Aprobada"){
        
            
$sql3="select * from solicitud where login='".$datos[$i]."'";
            
$res3=$clase->Query($sql3);
            if(
$fila=mysql_fetch_array($res3)){
                
//actualizar o modificar
                
$sql4="update solicitud set login='".$datos[$i]."',sol_anterior='".$fila[2]."', sol_nueva='', estado='1' where login='".$datos[$i]."'";
                if(
$res4=$clase->Query($sql4)){
                    echo 
"Registro Actualizado...";
                    
?>
                    <script type="text/javascript">
                    document.location = 'pagina2.php';
                    </script>

                    
                    <?php
                    
}
                else
                    echo 
"Ha ocurrido un error de Actualizacion...";
            }
        }
//aprobada
                
        
if($_POST["select".$i]=="En Proceso"){
        
//aqui hace algo
        
}//en proceso
                
        
if($_POST["select".$i]=="Rechazada"){
        
//aqui hace algo
        
}//rechazada
        
        
    
}

  }
  
?>

Última edición por joelxheredia; 06/04/2012 a las 17:58
  #2 (permalink)  
Antiguo 07/04/2012, 06:57
 
Fecha de Ingreso: octubre-2011
Mensajes: 153
Antigüedad: 12 años, 6 meses
Puntos: 7
Respuesta: Duda ajax - php - mysql

tienes la bd de datos para poder reproducirlo y revisarlo con detalle.
__________________
Mi mail: [email protected]
  #3 (permalink)  
Antiguo 07/04/2012, 20:04
 
Fecha de Ingreso: abril-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Duda ajax - php - mysql

creo que es la manera en como uso el formulario en la pagina que llamo desde el ajax, optaré por mostrar solo información, de igual manera trataré de encontrarle solución, lo consultaré con mi profesor, luego de eso colocaré la respuesta aquí de igual manera muchas gracias fcosun, espero contar con tu ayuda más adelante! :)
  #4 (permalink)  
Antiguo 21/04/2012, 15:47
 
Fecha de Ingreso: abril-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Duda ajax - php - mysql

Ya se la solución de mi problema, resulta, ser que el problema estaba en el tipo de botón que usaba (de tipo submit), al usar esa pagina para ser llamada desde una función de ajax, no sirve ese tipo de botón, puesto que ese botón te recarga toda la pagina, la solución para evitar la perdida de los datos una vez llamada la función de ajax, es utilizar un botón de tipo button y en el evento onclick enviarle los datos por parámetro, luego de ello hacer la respectiva consulta a mysql, de esa manera si funciona.

Etiquetas: ajax, mysql, php
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




La zona horaria es GMT -6. Ahora son las 19:31.