UPDATE mySQL en PHP

Iniciado por sexto, 7 Diciembre 2007, 23:40 PM

0 Miembros y 1 Visitante están viendo este tema.

sexto

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

дٳŦ٭

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


Con sangre andaluza :)


sexto

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

:ohk<any>

#3
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.


<?

        //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.



<?
        //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.
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

sexto

#4
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...

:ohk<any>

...
Cita de: 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...

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.
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

sexto

#6
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

:ohk<any>


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

--
W.M. Ohk
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

WHK

Código (php) [Seleccionar]
<?
        //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");
        }
?>


Puedes modificarlo por lo siguiente:

Código (php) [Seleccionar]
<?
//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 si es que existe con if exist para evitar errores.

        $referer = htmlspecialchars($_SERVER['HTTP_REFERER']);
        //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 = filtro($_POST['h']);
       $valor1 = filtro($_POST['valor1']);
       $valor2 = filtro($_POST['valor2']);


function filtro($input){
$referer = htmlspecialchars($_SERVER['HTTP_REFERER']);
$filtro = array("`", "´", '"', "<", ">", ";", "'", "%60", "%C2%B4", "%22", "%3E", "%3C","%27", "%25", "%");
for ($i=0; $i < count($filtro) ; $i++) {
  if(eregi($filtro[$i],$input)) {
echo "<center>Error.<br /><br />
<a href=\"$referer\">Buelva a intentarlo por favor</a>.</center>\n";
   exit(1);
  }
}
return mysql_escape_string(htmlspecialchars($input, ENT_QUOTES));
}

//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"); }

?>


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

:ohk<any>

Muchas gracias, muy bueno tu aporte  :D
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.