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

No elimina si el usuario tiene letras...

Estas en el tema de No elimina si el usuario tiene letras... en el foro de Frameworks JS en Foros del Web. De la web de ribosomatic descargué un ejemplo de eliminación de registros, funciona perfectamente, pero cuando un usuario tiene letras no logra eliminar el registro.... ...
  #1 (permalink)  
Antiguo 21/07/2009, 06:08
 
Fecha de Ingreso: julio-2009
Ubicación: En PHPlandia, AJAXia y JavaScriptín
Mensajes: 34
Antigüedad: 14 años, 9 meses
Puntos: 0
No elimina si el usuario tiene letras...

De la web de ribosomatic descargué un ejemplo de eliminación de registros, funciona perfectamente, pero cuando un usuario tiene letras no logra eliminar el registro....
Así que me supongo que el error se encuentra aquí, ¿hay que pasar de alguna forma especial el valor usuario en ajax.open("GET", "eliminacion.php?usuario="+usuario); ???

Código PHP:
function eliminarDato(usuario){
    
//donde se mostrará el resultado de la eliminacion
    
divResultado document.getElementById('resultado');
    
    
//usaremos un cuadro de confirmacion    
        //instanciamos el objetoAjax
        
ajax=objetoAjax();
        
//uso del medotod GET
        //indicamos el archivo que realizará el proceso de eliminación
        //junto con un valor que representa el id del empleado
        
ajax.open("GET""eliminacion.php?usuario="+usuario);
        
ajax.onreadystatechange=function() {
            if (
ajax.readyState==4) {
                
//mostrar resultados en esta capa
                
divResultado.innerHTML ajax.responseText
            
}
        }
        
//como hacemos uso del metodo GET
        //colocamos null
        
ajax.send(null)

Gracias!
  #2 (permalink)  
Antiguo 21/07/2009, 07:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: No elimina si el usuario tiene letras...

Depende de cómo tengas el código del lado del servidor, si la eliminación la realizas por medio del id de usuario lógicamente no va a eliminar si le pasas caracteres alfanuméricos. Por otro lado, siempre es conveniente que uses escape() con los valores a pasar por la URL:
Código javascript:
Ver original
  1. "eliminacion.php?usuario=" + escape(usuario)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 21/07/2009, 07:54
 
Fecha de Ingreso: julio-2009
Ubicación: En PHPlandia, AJAXia y JavaScriptín
Mensajes: 34
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No elimina si el usuario tiene letras...

No entiendo lo que dices de que si le paso caracteres alfanumericos como id no me eliminará el registro, porque DELETE FROM empleados WHERE usuario='SE5446' puedo hacerlo bien

Te pongo el código que me comentas

eliminacion.php
Código PHP:
<?php
require('conexion.php');
//variable GET
$id=$_GET['usuario'];
//elimina el registro de la tabla empleados
$sql="DELETE FROM empleados WHERE usuario=$id";
mysql_query($sql,$con);
include(
'consulta.php');
?>
consulta.php:
Código PHP:
<?php
require('conexion.php');
//consulta todos los empleados
$sql=mysql_query("SELECT * FROM empleados",$con);
//muestra los datos consultados
?>
<table>
<tr>
    <td>Borrar</td>
    <td>Usuario</td>
</tr>
<?php
while($row mysql_fetch_array($sql)){
    echo 
"<tr>";
    echo 
"<td>
<a style=\"cursor:pointer;\" onclick=\"eliminarDato('"
.$row['usuario']."')\"> 
<img type=\"image\" src=\"bin.png\" /> </a> </td>"
;
    echo 
" <td>".$row['usuario']."</td>";
    echo 
"</tr>";
}
?>
</table>
  #4 (permalink)  
Antiguo 21/07/2009, 07:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: No elimina si el usuario tiene letras...

Si el id puede contener caracteres alfanuméricos, la consulta debería ir entre comillas:
Código MySQL:
Ver original
  1. DELETE FROM empleados WHERE usuario='$id';
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 22/07/2009, 10:25
 
Fecha de Ingreso: julio-2009
Ubicación: En PHPlandia, AJAXia y JavaScriptín
Mensajes: 34
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No elimina si el usuario tiene letras...

Gracias! Era eso! :)

Una cosita más... tal y como está esto, hay un icono de borrar por cada fila de usuario y todo OK, pero si quisiera utilizar checkboxs y al final de la tabla un único icono de borrar, ¿tendria que hacer cambios en la función eliminarDato? Al evento onclick="eliminarDato(...)"?se le pasa la tabla, un array...?
  #6 (permalink)  
Antiguo 23/07/2009, 05:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: No elimina si el usuario tiene letras...

Hola

En realidad en consulta.php tendrías que montar un form con todos los ckeckbox, después en eliminarDato(), usando getElementsByTagName sacas todos los chekbox del form, un ciclo para así individualmente comprobar que ckeck están seleccionados, estos los guardas en un arreglo, o mejor en una var, cada elemento separados por ejem ";". Lo pasas por la query, como te dice David, escapados eliminacion.php?usuario="+escape(var). Recepcionas la var y haces un split, y de nuevo un ciclo para ir eliminando los registros uno por uno

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 06:12.