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

Editar contenido usando Mootools, php y mysql

Estas en el tema de Editar contenido usando Mootools, php y mysql en el foro de Frameworks JS en Foros del Web. Hola amigos foreros ! , en esta ocasión me acerco a ustedes porque realmente necesito orientación con respecto a una aplicación que estoy desarrollando. Estoy ...
  #1 (permalink)  
Antiguo 12/11/2009, 08:14
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Exclamación Editar contenido usando Mootools, php y mysql

Hola amigos foreros ! , en esta ocasión me acerco a ustedes porque realmente necesito orientación con respecto a una aplicación que estoy desarrollando. Estoy trabajando con formularios y quiero modificar el contenido usando ajax, todo funciona bien hasta el momento de hacer el request al archivo guardar.php, que como dice su nombre, es quien recibe los datos por POST, hace la consulta SQL y actualiza el registro. Esto es en teoria, pero en la practica no funciona esto ultimo.

Sin mas rodeos, aqui esta el codigo (para que funcione necesitan la libreria mootools, si nembargo no es necesario que la tenga porque mi problema es con el request...eso creo):


Archivo editable.html:

Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>

<script type="text/javascript">
window.onload = function() {
var paras = document.getElementById('content').getElementsByTa gName('p');
if(paras.length) {
paras[0].className = paras[0].className + ' intro';
}
};
</script> <style type="text/css">
.editable:hover { background:#eee; }
.textarea textarea{ height:200px; padding:3px; }
.editable-empty { background:#fffea1; padding:20px; border:1px dashed #fc0; }
.box { border:1px solid #ccc; padding:5px; display:block; width:95%; }
</style>
<script type="text/javascript" src="moo1.2.js"></script>
<script type="text/javascript">
//once the dom is ready
window.addEvent('domready', function() {
//find the editable areas
$$('.editable').each(function(el) {
//add double-click and blur events
el.addEvent('dblclick',function() {
//store "before" message
var before = el.get('html').trim();
//erase current
el.set('html','');
//replace current text/content with input or textarea element
if(el.hasClass('textarea'))
{
var input = new Element('textarea', { 'class':'box', 'text':before });
}
else
{
var input = new Element('input', { 'class':'box', 'value':before });
//blur input when they press "Enter"
input.addEvent('keydown', function(e) { if(e.key == 'enter') { this.fireEvent('blur'); } });
}
input.inject(el).select();
//add blur event to input
input.addEvent('blur', function() {
//get value, place it in original element
val = input.get('value').trim();
el.set('text',val).addClass(val != '' ? '' : 'editable-empty');

//save respective record
var url = 'guardame.php?id=' + el.get('rel') + '&content=' + el.get('text');
var request = new Request({
url:url,
method:'post',
onRequest: function() {
alert('making ajax call :: ' + url);
}
}).send();
});
});
});
});
</script>

</head>
<body>






<p>Dale doble-click en H1 verde (Editable Title) para editar y guardar el titulo. El H1 tiene un atributo rel de "32" -- que corresponde al registro que va ser actualizado en la BD. Clickea fuera del input o text tarea para guardar tu modificacion.</p>



<h1 class="editable" rel="32" style="color:darkgreen;" title="Article Title">Editable Title</h1>
<p class="editable textarea" title="Content Paragraph" rel="33">
This is an editable paragraph. This is an editable paragraph. This is an editable paragraph. This is an editable paragraph.
This is an editable paragraph. This is an editable paragraph. This is an editable paragraph. This is an editable paragraph.
This is an editable paragraph. This is an editable paragraph. This is an editable paragraph. This is an editable paragraph.
This is an editable paragraph. This is an editable paragraph. This is an editable paragraph. This is an editable paragraph.
This is an editable paragraph. This is an editable paragraph. This is an editable paragraph. This is an editable paragraph.
This is an editable paragraph. This is an editable paragraph. This is an editable paragraph. This is an editable paragraph.
</p>

<div class="clear"></div>
</div></div>
</body>


</html>

Archivo guardame.php:

Código PHP:

<?php  

include("include/conectar.php"); 
  
  if(isset(
$_POST['content']))
{
    
    
$query "UPDATE prod_ord SET unidad = '".mysql_real_escape_string(stripslashes($_POST['content']))."' WHERE orden = ".$_POST['id'];
    
$result mysql_query($query);
}  

?>
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer

Última edición por p3rikl3s; 12/11/2009 a las 09:07
  #2 (permalink)  
Antiguo 12/11/2009, 08:33
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Editar contenido usando Mootools, php y mysql

Ehhh...hola ? alguien puede ayudar ?
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
  #3 (permalink)  
Antiguo 12/11/2009, 08:51
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 10 meses
Puntos: 57
Respuesta: Editar contenido usando Mootools, php y mysql

Código PHP:

    $query 
"UPDATE prod_ord SET unidad = '".mysql_real_escape_string(stripslashes($_POST['content']))."' WHERE orden = ".$_POST['rel'];
?> 
No se PHP pero supongo que con $_POST obtienes el valor de los parametros que se le enviaron a la pagina. Bueno, en tu sentencia de sql estas utilizando 2 parametros: content y rel. Pero cuando mandas llamar la pagina guardame.php con el Request, unicamente estas enviando los parametros id y content. Ademas, tienes un doble ?, coloca uno solo

Código:
...
var url = 'guardame.php??id=' + el.get('rel') + '&content=' + el.get('text');
  #4 (permalink)  
Antiguo 12/11/2009, 09:06
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Editar contenido usando Mootools, php y mysql

Buena observación posman, sí fue un error de copia / pegar, ya lo corregí pero sigue sin funcionar !.

Gracias y saludos.
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
  #5 (permalink)  
Antiguo 12/11/2009, 09:22
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 10 meses
Puntos: 57
Respuesta: Editar contenido usando Mootools, php y mysql

Estas seguro que la sentencia esta correcta?

Modifica el Request y la pagina guardame.php para que te muestren la sentencia que se va a ejecutar:
Código:
var request = new Request({
  url:url,
  method:'post',
  onRequest: function() {
    alert('making ajax call :: ' + url);
  },
  onSuccess: function(texto,xml) {
    alert(texto);
  },
  onFailure: function(hr) {
    alert("Request fallo");
  }
}).send();
Y en la pagina php escribe la sentencia de sql
Código PHP:
include("include/conectar.php"); 
  
  if(isset(
$_POST['content']))
{
    
    
$query "UPDATE prod_ord SET unidad = '".mysql_real_escape_string(stripslashes($_POST['content']))."' WHERE orden = ".$_POST['id'];
    echo 
$query
    $result 
mysql_query($query);
}  
?> 
Esto te deberia mostrar un alert con la sentencia que se ejecuto
  #6 (permalink)  
Antiguo 12/11/2009, 09:42
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Editar contenido usando Mootools, php y mysql

Posman hice lo que me sugeriste, ahora aparte del alert ('making ajax call :: ' + url) me muestra otro alert pero vacio (este supongo que es el alert que me sugeriste, supongo que esta por las variables texto que no esta definida). Y tampoco me muestra el echo $query que hago en guardame.php. Parece que no se comunica con el archivo php...Que puede ser ?

Gracias posman !
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
  #7 (permalink)  
Antiguo 12/11/2009, 11:05
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 10 meses
Puntos: 57
Respuesta: Editar contenido usando Mootools, php y mysql

Podrias poner la cadena igual como te aparece en el alert making ajax... ? Lo que interesa aqui es la url que se esta utilizando

Ademas, puede ser que no imprima $query porque ni siquiera esta entrando en el if. Agrega un echo antes del if para que veas si al menos se esta llamando el archivo.
  #8 (permalink)  
Antiguo 12/11/2009, 11:54
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Editar contenido usando Mootools, php y mysql

Mmm ok posman, siguiendo tus consejos aqui esta los resultados:

making ajax call:: guardame.php?id=2&unidad=954

Y sí, hice un echo antes del if y efectivamente lo muestra en pantalla. A lo puedo concluir que no esta enviando las variables, y eso lo comprobe escribiendo el query:

UPDATE prod_ord SET unidad=''WHERE orden

Faltan las variables.

Gracias y saludos !
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
  #9 (permalink)  
Antiguo 12/11/2009, 12:10
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 10 meses
Puntos: 57
Respuesta: Editar contenido usando Mootools, php y mysql

Cita:
Iniciado por p3rikl3s Ver Mensaje
...
making ajax call:: guardame.php?id=2&unidad=954
Estas enviando id y unidad y segun tu query

Código PHP:
...
$query "UPDATE prod_ord SET unidad = '".mysql_real_escape_string(stripslashes($_POST['content']))."' WHERE orden = ".$_POST['id']; 
se espera content y id
  #10 (permalink)  
Antiguo 12/11/2009, 12:21
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Editar contenido usando Mootools, php y mysql

Si tienes razón, lo que pasa es que cambie el nombre de las variables y esto ha confudido las cosas. Tu observación es un error de redacción aqui, pero en la aplicación esta bien.

Descubri algo interesante, cuando envio lsa variables por el metodo GET "funciona", es decir entra al guardame.php, pasa el if (if(isset($_GET('unidad')))) pero no guarda.

Y asi queda mi query:

Cita:
UPDATE tabla SET unidad='561' WHERE orden = 2
Aparentemente esta bien, pero no hace cambios en la Base de datos...

Creo que estamos cerca, gracias y saludos Posman !
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
  #11 (permalink)  
Antiguo 12/11/2009, 12:26
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Editar contenido usando Mootools, php y mysql

ESTA LISTO !

Sí, al parecer esto tiene problemas con el metodo POST, por qué ? no lo sé ( hay que investigar ) pero con el GET funciona perfecto !

Gracias Posman por tu gran ayuda y dedicación. Te recomendaré.

Saludos y gracias !
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
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 20:01.