Foros del Web » Programando para Internet » PHP »

Detallito con form

Estas en el tema de Detallito con form en el foro de PHP en Foros del Web. Hola, como estan? tengo esta dudilla tengo una pagina en la cual modifico valores, para esto tengo una pagina buscar.php que es la que le ...
  #1 (permalink)  
Antiguo 20/05/2010, 17:32
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Pregunta Detallito con form

Hola, como estan?
tengo esta dudilla
tengo una pagina en la cual modifico valores, para esto tengo una pagina buscar.php que es la que le manda el parametro del id a mi pagina modificar.php, el caso es que imprimo los valores actuales del producto en un form, el problema viene al hacer las validaciones de los campos nuevos, y esq valido que no haya campos vacios, etc. en la misma pagina, entonces cuando me manda el mensaje que no he puesto algo bien me regresa al form pero éste ya no conserva los valores que estaban. espero haberme explicado. Lo que quiero es que al regresar del mensajito de error los campos sigan teniendo los valores actuales del producto. Aqui dejo el codigo:

Código PHP:
<?php

include "conexion.php";

//llega la id de la pagina buscar.php
$id_producto=$_REQUEST['id_producto'];
$accion=$_GET["accion"]; 
$nombre_producto $_POST["nombre_producto"];
$descripcion $_POST["descripcion"];
$categoria $_POST["categoria"]; 
$existencias $_POST["existencias"];
$precio_venta $_POST["precio_venta"];
$precio_compra $_POST["precio_compra"];

if (!isset(
$accion)){
  
$result=mysql_query("SELECT id_producto, nombre_producto, id_categoria, descripcion, existencias, precio_venta, precio_compra FROM productos WHERE id_producto='$id_producto'");
  
$row=mysql_fetch_row($result); //imprimo los valores actuales en el sig form
  
echo"
  <form name='form1' action='modificar.php?accion=guardar' method='POST'>
  <table cellpadding='5' cellspacing='10'>
    <tr>
        <td>
            <p>Nombre:    
        </td>
        <td> 
              <input type='text' value='$row[1]' name='nombre_producto' size='40' maxlength='40'>
          </td>
    </tr>
    <tr>
        <td>
            <p>Descripción:  
        </td>
        <td> 
              <input type='text' value='$row[3]' name='descripcion' size='40' maxlength='100'>
  </td>
    </tr>
    <tr>
        <td>
            <p>Categoría:
        </td>
        <td>
            <select name='categoria' id='categoria'>
                <option>$row[2]</option>
                <option value='1'>Artesanías</option>
                   <option value='2'>Ropa</option>
                   <option value='3'>Souvenir</option>
                <option value='4'>Accesorios</option>
            </select>
            </p>
        </td>
     </tr>
     <tr>
         <td>
            <p>Existencia:
        </td>    
        <td>
            <input type='text' value='$row[4]' id='existencias' name='existencias' size='10' maxlength='5' >
            </p>
        </td>
     </tr>
     <tr>
         <td>
            <p>Precio de Venta:
        </td>
        <td>
            <input type='text' value='$row[5]' id='precio_venta' name='precio_venta' size='10' maxlength='10'>
            </p>
        </td>
     </tr>
     <tr>
         <td>
            <p>Precio de Compra:
        </td>
        <td>    
            <input type='text' value='$row[6]' id='precio_compra' name='precio_compra' size='10' maxlength='10'>
            </p>
        </td>
     </tr>
</table>
<br><br>
  <input type='hidden' name='id_producto' value='$row[0]'>
  <input type='submit' value='Guardar'>
  </form>"
;

}elseif(
$accion=="guardar"){ //empiezan validaciones
  
 
if($nombre_producto==NULL|$descripcion==NULL|$existencias==NULL|$precio_venta==NULL|$precio_compra==NULL) {//1
     
echo "<script type=\"text/javascript\">
            alert('Hay uno o más campos vacíos');
               </script>"
;   
       echo 
"<meta http-equiv=Refresh content=\"1 ; url=modificar.php\">";
 }

else{
//1
    //se comprueba que efectivamente sea una descripción
    
if (strlen($descripcion) < "10") { // if2
    
echo "<script type=\"text/javascript\">
            alert('El campo Descripciòn debe tener al menos 10 caracteres'); 
               </script>"
;    
    echo 
"<meta http-equiv=Refresh content=\"1 ; url=modificar.php\">";

    }
//cierra if1

... //las demás validaciones

else{//# 
//modifico datos si todo resulto bien con las validaciones
  
$result ="UPDATE productos SET nombre_producto='$nombre_producto' , descripcion='$descripcion' , id_categoria='$categoria' , existencias='$existencias' , precio_venta='$precio_venta' , precio_compra='$precio_compra' WHERE id_producto = '$id_producto' "
  
$actual=mysql_query($result) or die(mysql_error());
 
  echo 
"<script type=\"text/javascript\">
                alert('El producto: \' $nombre_producto \' ha sido actualizado de manera satisfactoria.');
                   </script>"
;
  echo 
"<meta http-equiv=Refresh content=\"1 ; url=secmod.php\">"
  
}
//1
}//#
}//if
...
?>
  #2 (permalink)  
Antiguo 20/05/2010, 19:43
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Detallito con form

Eso de conservar un valor se consigue con sesiones $_SESSION[]

Por ejemplo:

//primero le das el valor a la variable de sesion
//"ses_row_1" es un nombre que le damos
$_SESSION['ses_row_1'] = $row[1];

//despues ponemos en el value la variable de sesion $_SESSION['ses_row_1']
value='$_SESSION['ses_row_1']'


Ahora lo unico que debes hacer para trabajar con variables de sesion es poner al principio de tus script (en los que uses estas variables):

session_start();

Ponlo al principio, antes inclusive del codigo html, si lo tienes. Dicho en otras palabras en la esquina superior.

<?php
session_start();

//resto del codigo que sea...


Saludos...!
  #3 (permalink)  
Antiguo 20/05/2010, 21:03
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: Detallito con form

Gracias, pruebo y te digo!!!
  #4 (permalink)  
Antiguo 20/05/2010, 21:51
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Pregunta Respuesta: Detallito con form

hola, hice como me dices, pero me aparece este error:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\...ruta

la verdad no se bien q onda con ese error, mira pongo el codigo como modifique haber si lo hice bien...

si puse al principio session_start();

Código PHP:
if (!isset($accion)){
  
$result=mysql_query("SELECT id_producto, nombre_producto, id_categoria, descripcion, existencias, precio_venta, precio_compra FROM productos WHERE id_producto='$id_producto'");
  
$row=mysql_fetch_row($result);
  
$_SESSION['ses_row_1'] = $row[1]; //aqui agregue la variable de sesion

  
echo"
  <form name='form1' action='modificar.php?accion=guardar' method='POST'>
  <table cellpadding='5' cellspacing='10'>
    <tr>
        <td>
            <p>Nombre:    
        </td>
        <td> //aqui la agrego al value
              <input type='text' value='$_SESSION[\"ses_row_1\"]' name='nombre_producto' size='40' maxlength='40'>
          </td>
    </tr> 
Mientras probe con una, por fis, hice bien, orientenme
  #5 (permalink)  
Antiguo 21/05/2010, 08:09
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Detallito con form

<?


//SE SUPONE QUE ANTES HACES LA CONECCION A LA BASE DE DATOS, de lo contrario no te devolvera nada, solo errores


if (!isset($accion)){
//te modifique esto id_producto='$id_producto' id_producto='".$id_producto."'
$result=mysql_query("SELECT id_producto, nombre_producto, id_categoria, descripcion, existencias, precio_venta, precio_compra FROM productos WHERE id_producto='".$id_producto."';");

//ojo si mysql_query no encuantra nada te dara error (lo dejo para que lo veas y lo postees)
$row=mysql_fetch_row($result);
$_SESSION['ses_row_1'] = $row[1];

//si tuvieras otro row harias asi
//$_SESSION['ses_row_2'] = $row[2];

}

//modifique esto value='$_SESSION[\"ses_row_1\"]' value='".$_SESSION['ses_row_1']."'
echo"<form name='form1' action='modificar.php?accion=guardar' method='POST'>
<table cellpadding='5' cellspacing='10'><tr><td><p>Nombre:</td><td>
<input type='text' value='".$_SESSION['ses_row_1']."' name='nombre_producto' size='40' maxlength='40' />
</td></tr>";

//el error mas grande era que te falto el punto y coma final...

?>





<!--

Postea la ruta al error; solo sacale tu numbre de usuario y listo

-->

Última edición por wiwi74; 21/05/2010 a las 08:23
  #6 (permalink)  
Antiguo 21/05/2010, 08:47
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: Detallito con form

Hola, gracias por cotestar, te aclaro unas cosillas por que creo q lo hice mas confunso

Sobre el segundo codigo, solo puse un pedazo no lo puse completo.
Si tengo la conexion a la base de datos, solo que no lo inclui en el codigo que puse despues, de hecho el completo es el primero.
Sobre lo del id_producto que le agregaste los puntitos, creo que hay no tengo problema por que si lo reconoce, lo compruebo por que si me muestra los valores que tengo en la base de datos.
Si entiendo eso que si tengo varios row los declaro...
$_SESSION[\"ses_row_1\"]' -->las diagonales se las agregue para escapar las primeras comillas que tengo si no el php cree que hay termina el codigo y lo demas no lo reconoce, aunque definitivamente hay esta el error por que en esa linea me lo marca.
y bueno no cerre con comillas por que te digo hay no termina el codigo.

Espero haberme dado a entender...
Y sigo con ese error raro
  #7 (permalink)  
Antiguo 21/05/2010, 09:21
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Detallito con form

Habria que ver el codigo completo para ver donde esta ese error ya que es de sintaxis, no de logica.


Saludos...!

Etiquetas: formulario
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 13:02.