Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: sexto en 7 Diciembre 2007, 23:40 pm



Título: UPDATE mySQL en PHP
Publicado por: sexto en 7 Diciembre 2007, 23:40 pm
Hola, tengo un pequeño problemilla que no se como solucionar,
a ver, tengo una pequeña base de datos (mySQL) con una tabla en la que hay varios articulos y su precio, hasta ahi bien.
Lo que quiero es, que en un "panel de administrador" me salga por ejemplo los articulos y al lado un cuadro de texto o algo, para cambiar el precio.
Lo de sacar todos los articulos es sencillo, ya que con una consula UPDATE se hace ¡¡FACILMENTE!!, el problema esta en el cuadro de texto y luego para ejecutar la consulta y tal.

Muchas gracias


Título: Re: UPDATE mySQL en PHP
Publicado por: дٳŦ٭ en 7 Diciembre 2007, 23:49 pm
Ps recupera el valor del campo de precio y lo metes como un value del input, cuando ejecutes tu form haces el UPDATE del precio y andando.

Suerte


Título: Re: UPDATE mySQL en PHP
Publicado por: sexto en 8 Diciembre 2007, 00:02 am
Pues chico, o soy tonto o es que hoy estoy espesito.
Me puedes por favor (si no te importa) ponerme un ejemplo?
Gracias por responder


Título: Re: UPDATE mySQL en PHP
Publicado por: :ohk<any> en 8 Diciembre 2007, 00:27 am
Bueno supongo que lo que quieres hacer es listar uno de tus articulos en un campo de texto y quieres que se puedan modificar.

pues si es eso aqui te pego el codigo de como puedes hacerlo.

Código:
<?

        //Inicializamos variables de conexión

        $host="localhost";
$user="tu usuario";
$passwd="tu password";
$db="tu base de datos";

        //Creamos la conexión

        $link = mysql_connect($host, $user, $passwd);
mysql_select_db($db, $link);

        //primero hacemos una consulta para listar uno de tus productos
        //y del resultado los metemos a un campo de texto para poder modificarlos

       $sql = mysql_query("select * from [/tabla] where [/condicion]", $link);
       //Preguntamos si nuestra consulta da algun resultado
        if(mysql_num_rows($sql)>0)
{
             echo "<html><head><title>ejemplo</title></head><body>
             <form action='actualizar.php' method='post'>
             ";
             $row_=mysql_fetch_array($sql);
             echo "
             <input type='hidden' name='h' value='".$row['id_del_campo']."'>
             <input type='text' name='valor1' value='".$row['nombre_del_campo1']."'>
            <input type='text' name='valor2' value='".$row['nombre_del_campo2']."'>
             <input type='submit' name='ir' value='Actualizar'>
             </form>
              </body></html>
             ";
        }

?>

Bueno, este seria el php que muestra tus productos para luego actualizarlos que puedes llamarlo como desees.

aqui esta el otro php q se encargaria de hacer la actualizacion y debes llamarlo actualizar.php.

Código:

<?
        //Para evitar hacer esta invocacion de variables de conexion cada rato necesitas
        //hacerte un php con cualquier nombre donde pongas estas variables y luego lo llamas con un include.
        //Inicializamos variables de conexión

        $host="localhost";
$user="tu usuario";
$passwd="tu password";
$db="tu base de datos";

        //Aqui recibimos las variables a actualizar

       $id=$_POST['h'];
       $valor1=$_POST['valor1'];
       $valor2=$_POST['valor2'];

        //Creamos la conexión

        $link = mysql_connect($host, $user, $passwd);
mysql_select_db($db, $link);

        //aqui preguntamos si hicieron click en el boton actualizar
        if($_POST['ir']=="Actualizar")
       {
              $sql=mysql_query("update [/tabla] set valor1='$valor1', valor2='$valor2' where [/id_de_tabla]='$id'",$link);
              echo "Actualizado correctamente";
        }
       else
       {
            header("Location: nombre_php_anterior.php");
        }
?>

Espero que te haya ayudado
si es que hay algun bug solo repostealo para que te oriente mas.
si no he contestado a tu pregunta, pues es porque no entendi muy bien lo que posteaste.


Título: Re: UPDATE mySQL en PHP
Publicado por: sexto en 8 Diciembre 2007, 00:48 am
Supuestamente me tendria que sacar todos los registros de la tabla no?
porque es que me salen dos cuadros de texto pero me salen vacios...

EDITO: vale, al crear la variable row, has puesto $row_, he quitado el _ y ahora si que salen los valores, pero no los cambia...


Título: Re: UPDATE mySQL en PHP
Publicado por: :ohk<any> en 8 Diciembre 2007, 01:00 am
...
Supuestamente me tendria que sacar todos los registros de la tabla no?
porque es que me salen dos cuadros de texto pero me salen vacios...

una pregunta, cambiaste en el codigo esta parte?

Cita de: ohk
             <input type='hidden' name='h' value='".$row['id_del_campo']."'>
             <input type='text' name='valor1' value='".$row['nombre_del_campo1']."'>
            <input type='text' name='valor1' value='".$row['nombre_del_campo2']."'>

osea que en el primero deberias poner el id de tu tabla
en el segundo tu el nombre de la columna articulo
y en el tercero el nombre de la columna del precio

...y no esta demas decirte que debes cambiar los datos en las condiciones de la consulta.


Título: Re: UPDATE mySQL en PHP
Publicado por: sexto en 8 Diciembre 2007, 01:08 am
lo que te digo arriba,
todo eso claro que lo he cambiado, sino no me sacaria ni los cuadros de texto,
pero ya te digo, ahora si que me lo saca todo, pero lo cambio y tal pero no se cambia en la tabla...
sigo investigando el problema...

EDITO: vale, ya esta, muchas gracias por vuestra ayuda


Título: Re: UPDATE mySQL en PHP
Publicado por: :ohk<any> en 8 Diciembre 2007, 01:19 am

Tienes razon, en la variable $row se me fue un _
pero bueno...

--
W.M. Ohk


Título: Re: UPDATE mySQL en PHP
Publicado por: WHK en 8 Diciembre 2007, 03:57 am
Código
  1. <?
  2.        //Para evitar hacer esta invocacion de variables de conexion cada rato necesitas
  3.        //hacerte un php con cualquier nombre donde pongas estas variables y luego lo llamas con un include.
  4.        //Inicializamos variables de conexión
  5.  
  6.        $host="localhost";
  7. $user="tu usuario";
  8. $passwd="tu password";
  9. $db="tu base de datos";
  10.  
  11.        //Aqui recibimos las variables a actualizar
  12.  
  13.       $id=$_POST['h'];
  14.       $valor1=$_POST['valor1'];
  15.       $valor2=$_POST['valor2'];
  16.  
  17.        //Creamos la conexión
  18.  
  19.        $link = mysql_connect($host, $user, $passwd);
  20. mysql_select_db($db, $link);
  21.  
  22.        //aqui preguntamos si hicieron click en el boton actualizar
  23.        if($_POST['ir']=="Actualizar")
  24.       {
  25.              $sql=mysql_query("update [/tabla] set valor1='$valor1', valor2='$valor2' where [/id_de_tabla]='$id'",$link);
  26.              echo "Actualizado correctamente";
  27.        }
  28.       else
  29.       {
  30.            header("Location: nombre_php_anterior.php");
  31.        }
  32. ?>

Puedes modificarlo por lo siguiente:

Código
  1. <?
  2. //Para evitar hacer esta invocacion de variables de conexion cada rato necesitas
  3. //hacerte un php con cualquier nombre donde pongas estas variables y luego lo llamas con un include si es que existe con if exist para evitar errores.
  4.  
  5.        $referer = htmlspecialchars($_SERVER['HTTP_REFERER']);
  6.        //Inicializamos variables de conexión
  7.        $host="localhost";
  8. $user="tu usuario";
  9. $passwd="tu password";
  10. $db="tu base de datos";
  11.  
  12.        //Aqui recibimos las variables a actualizar
  13.  
  14.       $id = filtro($_POST['h']);
  15.       $valor1 = filtro($_POST['valor1']);
  16.       $valor2 = filtro($_POST['valor2']);
  17.  
  18.  
  19. function filtro($input){
  20. $referer = htmlspecialchars($_SERVER['HTTP_REFERER']);
  21. $filtro = array("`", "´", '"', "<", ">", ";", "'", "%60", "%C2%B4", "%22", "%3E", "%3C","%27", "%25", "%");
  22. for ($i=0; $i < count($filtro) ; $i++) {
  23.  if(eregi($filtro[$i],$input)) {
  24. echo "<center>Error.<br /><br />
  25. <a href=\"$referer\">Buelva a intentarlo por favor</a>.</center>\n";
  26.   exit(1);
  27.  }
  28. }
  29. return mysql_escape_string(htmlspecialchars($input, ENT_QUOTES));
  30. }
  31.  
  32. //Creamos la conexión
  33.  
  34. $link = mysql_connect($host, $user, $passwd);
  35. mysql_select_db($db, $link);
  36.  
  37. //aqui preguntamos si hicieron click en el boton actualizar
  38. if($_POST['ir']=="Actualizar")
  39. {
  40. $sql=mysql_query("update [/tabla] set valor1='$valor1', valor2='$valor2' where [/id_de_tabla]='$id'",$link);
  41. echo "Actualizado correctamente";
  42. } else { header("Location: nombre_php_anterior.php"); }
  43.  
  44. ?>

Solo le añadí un pequeño filtro para que no le hechen por la borda el trabajo con una inyección sql.


Título: Re: UPDATE mySQL en PHP
Publicado por: :ohk<any> en 8 Diciembre 2007, 13:25 pm
Muchas gracias, muy bueno tu aporte  :D