Foros del Web » Programando para Internet » PHP »

Error con $_POST

Estas en el tema de Error con $_POST en el foro de PHP en Foros del Web. Señores alguien sabe porq no funciona el insert que deseo hacer ?? creo que como no he descansado desde muy temprano el coco no me ...
  #1 (permalink)  
Antiguo 27/07/2013, 13:54
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Error con $_POST

Señores alguien sabe porq no funciona el insert que deseo hacer ?? creo que como no he descansado desde muy temprano el coco no me funca

Código PHP:
Ver original
  1. <?php
  2.     include('c.php');
  3.     //$mysqli = new mysqli("localhost","root","","kosys"); no funciona a si
  4.     if($mysqli->connect_errno){echo "Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno. ")" ;}
  5.         else{
  6.            
  7.             $n = '';
  8.             $d = '';
  9.             $r = '';
  10.             $p = '';
  11.             $c = '';
  12.             $m = '';
  13.             $dt = '';
  14.            
  15.            
  16.             if ($_POST){
  17.                 $n = $_POST['nombre'];
  18.                 $d = $_POST['desc'];
  19.                 $r = $_POST['rubro'];
  20.                 $p = $_POST['provee'];
  21.                 $c = $_POST['costo'];
  22.                 $m = $_POST['mayoreo'];
  23.                 $dt = $_POST['detalle'];
  24.                
  25.            
  26.             $ins = $mysqli->query("insert into productos (id,nombre,descripcion,rubro,proveedor,costo,
  27.             pre_may,pre_det,activo,userid,fecha) values('','$n','$d','$r','$p','$c','$m','$dt','1','1')");
  28.             if ($ins){
  29.                 Echo "Registro Agregado con exito !!";
  30.             }
  31.             else{
  32.                 echo "Error al Agregar<br>";
  33.             }
  34.             }
  35.         }
  36. ?>
  37. <html>
  38.     <head>
  39.         <title>Mantenimiento</title>
  40.     </head>
  41.    
  42.     <body>     
  43.         <table width='900px' height='225px' align='left'>
  44.       <tr>
  45.         <td>
  46.           <fieldset>
  47.             <legend>
  48.               <font color='#000000' style='font-family: Comic Sans MS;'>
  49.                 ..:: Agregar Nuevo Producto ::..
  50.               </font>
  51.             </legend>
  52.             <br/>
  53.             <form method='post' action='' name='admin' id='admin' >
  54.               <table width='100%'>
  55.                 <tr>
  56.                   <td>
  57.                     <b>Nombre:
  58.                     </b><input type='text' name='nombre' size='50' maxlenght='100' class='caja' style='padding: 0.3em;'/> <br>
  59.                   </td>
  60.                   <td>
  61.                     <b>Descripcion:
  62.                     </b><input type='text' name='desc' size='50' maxlenght='200' class='caja' style='padding: 0.3em;'/> <br>
  63.                   </td>
  64.                 </tr>
  65.                 <tr>
  66.                   <td>
  67.                     <b>&nbsp;&nbsp;&nbsp;&nbsp;Rubro:
  68.                         <input type='text' name='rubro' size='5' maxlenght='1' class='caja' style='padding: 0.3em;'/>
  69.                     <b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Proveedor:
  70.                         <input type='text' name='provee' size='5' maxlenght='1' class='caja' style='padding: 0.3em;'/>
  71.                   </td>
  72.                   <td>
  73.                     <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Costo:</b>
  74.                     <input type='text' name='costo' id='costo' size='5' onchange='precios()' maxlenght='10' class='caja' style='padding: 0.3em;'/>
  75.                     <b>Mayoreo:</b>
  76.                     <input type='text' name='mayoreo'   id='mayoreo' size='5' maxlenght='10' class='caja' style='padding: 0.3em;'/>
  77.                     <b>Detalle:</b>
  78.                     <input type='text' name='detalle' id='detalle' size='5' maxlenght='10' class='caja' style='padding: 0.3em;'/><br><br>
  79.                   </td>
  80.                 </tr>
  81.                 <tr>
  82.                   <td align='center'><br/>
  83.                     <input type='submit' value='Agregar' name='registrar' style='padding:0.3em;'/>
  84.                     <input type='reset' value='Limpiar' name='limpiar' style='padding:0.3em;'/>
  85.                     <a href="index.php"><input type='button' value='Cancelar'  name='cancelar' style='padding:0.3em;'/></a><br><br>
  86.                   </td>
  87.                 </tr>
  88.               </table>
  89.             </form>
  90.           </fieldset>
  91.         </td>
  92.       </tr>
  93.         </table>
  94.    
  95.        
  96.     </body>
  97. </html>

Algo por ahi no a de estar en su sitio, y si tengo mal ejecutado algo me pueden decir no hay problema !!!

Basicamente es un formulario con "post" y cuando se envian los datos debe generar el codigo php que esta al inicio, ya probe solo imprimiendo los datos del _POST y si salen todos !!!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #2 (permalink)  
Antiguo 27/07/2013, 14:14
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Error con $_POST

Tienes que imprimir el error que envía mysqli para saber que esta mal...

Código PHP:
Ver original
  1. //tu código....
  2.  
  3.  $ins = $mysqli->query("insert into productos (id,nombre,descripcion,rubro,proveedor,costo,
  4.            pre_may,pre_det,activo,userid,fecha) values('','$n','$d','$r','$p','$c','$m','$dt','1','1')");
  5.             if ($ins){
  6.                 Echo "Registro Agregado con exito !!";
  7.             }
  8.             else{
  9.                 echo "Error al Agregar".$mysqli->error."<br>";
  10.             }
  11.  
  12. //mas código....

Por otro lado, desperdicias por completo mysqli al realizar las consultas como lo haces, ya que haces por completo inseguro tu sistema cuando mysqli implemente por default sistemas de segurida que evitar inyección SQL pero por la forma en que lo utilizas lo desperdicias, para eso existe el método prepare() y bind_param() para asignar variables externas a la sentencia SQL y evitar inyección SQL...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 27/07/2013, 17:06
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con $_POST

Cita:
Iniciado por Nemutagk Ver Mensaje
Tienes que imprimir el error que envía mysqli para saber que esta mal...

Código PHP:
Ver original
  1. //tu código....
  2.  
  3.  $ins = $mysqli->query("insert into productos (id,nombre,descripcion,rubro,proveedor,costo,
  4.            pre_may,pre_det,activo,userid,fecha) values('','$n','$d','$r','$p','$c','$m','$dt','1','1')");
  5.             if ($ins){
  6.                 Echo "Registro Agregado con exito !!";
  7.             }
  8.             else{
  9.                 echo "Error al Agregar".$mysqli->error."<br>";
  10.             }
  11.  
  12. //mas código....

Por otro lado, desperdicias por completo mysqli al realizar las consultas como lo haces, ya que haces por completo inseguro tu sistema cuando mysqli implemente por default sistemas de segurida que evitar inyección SQL pero por la forma en que lo utilizas lo desperdicias, para eso existe el método prepare() y bind_param() para asignar variables externas a la sentencia SQL y evitar inyección SQL...
Gracias averigue el uso de mysqli y he cambiado la consulta asi:
Código PHP:
Ver original
  1. if ($_POST){
  2.                 $n = $_POST['nombre'];
  3.                 $d = $_POST['desc'];
  4.                 $r = $_POST['rubro'];
  5.                 $p = $_POST['provee'];
  6.                 $c = $_POST['costo'];
  7.                 $m = $_POST['mayoreo'];
  8.                 $dt = $_POST['detalle'];
  9.                
  10.            
  11.             $ins = $mysqli->prepare("insert into productos (nombre,descripcion,rubro,proveedor,costo,pre_may,pre_det) values(?,?,?,?,?,?,?,?)");
  12.             $ins->bind_param($n,$d,$r,$p,$c,$m,$dt);
  13.             $ins->executed();
  14.             $ins->close();
  15.             if ($ins){
  16.                 Echo "Registro Agregado con exito !!";
  17.             }
  18.             else{
  19.                 echo "Error al Agregar (".$mysqli->error.")<br>";
  20.                
  21.             }
  22.             }

El resultado es:
Código:
Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\OCHOA\pruebas\mantto.php on line 26

Donde 26 es la linea $ins->bind_param($n,$d,$r,$p,$c,$m,$dt);
Luego intente tomar los $_POST de un solo asi:

Código PHP:
Ver original
  1. if ($_POST){
  2.                
  3.                
  4.            
  5.             $ins = $mysqli->prepare("insert into productos (nombre,descripcion,rubro,proveedor,costo,pre_may,pre_det) values(?,?,?,?,?,?,?,?)");
  6.             $ins->bind_param(       $_POST['nombre'],
  7.                                     $d = $_POST['desc'],
  8.                                     $r = $_POST['rubro'],
  9.                                     $p = $_POST['provee'],
  10.                                     $c = $_POST['costo'],
  11.                                     $m = $_POST['mayoreo'],
  12.                                     $dt = $_POST['detalle']);
  13.             $ins->executed();
  14.             $ins->close();
  15.             if ($ins){
  16.                 Echo "Registro Agregado con exito !!";
  17.             }
  18.             else{
  19.                 echo "Error al Agregar (".$mysqli->error.")<br>";
  20.                
  21.             }
  22.             }

El error es el mismo ahi donde dice bind_param da el error
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #4 (permalink)  
Antiguo 27/07/2013, 17:13
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con $_POST

La cosa es que segun he leido esta ultima forma es usando clases y haciendo el metodo _construct pero eso yo no lo estoy implementando, sera que debo usar la forma que puse en el primer post o no importa ???
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #5 (permalink)  
Antiguo 27/07/2013, 17:21
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Error con $_POST

Así no se usa bind_param(), su uso correcto es así...

Código PHP:
Ver original
  1. $query = $mysqli->prepare('INSERT INTO miTabla VALUES (?,?,?)');
  2. $query->bind_param('iss',1,'titulo','cuerpo_mensaje');
  3. $query->execute();

Debes tener MUY presente el primer parámetro que se le pasa, el 'iss' este no es un parámetro cualquiera, le indica a mysqli de que tipo son las variables que se le pasan, la i es de int/entero, la s de strint/texto, y hay 1 por cada variable, así que si vas a insertar 7 variables del tipo string debes poner como primer parámetro 'sssss' como poner un ejemplo, por ultimo esto esta mal....

Código PHP:
Ver original
  1. $ins->bind_param(       $_POST['nombre'],
  2.                                     $d = $_POST['desc'],
  3.                                     $r = $_POST['rubro'],
  4.                                     $p = $_POST['provee'],
  5.                                     $c = $_POST['costo'],
  6.                                     $m = $_POST['mayoreo'],
  7.                                     $dt = $_POST['detalle']);

O usas la variable o usas el super array, no puedes asignar una valor a una variable dentro de una función, eso dará error...

Si tienes mas dudas visita el manual de PHP siempre que te atores! bind_param()

Actialización:

Cita:
Iniciado por KATHYU
La cosa es que segun he leido esta ultima forma es usando clases y haciendo el metodo _construct pero eso yo no lo estoy implementando, sera que debo usar la forma que puse en el primer post o no importa ???
Lo siento, lo lei ya que había enviado la respuesta, en efecto, es usando mysqli como objeto (clase), por lo tanto primero debes hacer un new mysql()...
Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli('host','user','pass','db');
  3. $query = $mysqli->prepare('INSERT INTO miTabla VALUES (?,?,?)');
  4. $query->bind_param('iss',1,'titulo','cuerpo_mensaje');
  5. $query->execute();

Aunque también puedes usar funciones por separado...
Código PHP:
Ver original
  1. $query = mysql_prepare('INSERT INTO miTabla VALUES (?,?,?)');
  2. mysqli_stmt_bind_param($query,'iss',1,'titulo','cuerpo_mensaje');

Pero en mi opinión es mejor usarlo como objeto (clase), tiene mas lógica y orden, pero solo es mi opinión...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 27/07/2013 a las 17:30
  #6 (permalink)  
Antiguo 27/07/2013, 17:38
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Desacuerdo Respuesta: Error con $_POST

en el primer ejemplo usas 11 campos que son
id,nombre,descripcion,rubro,proveedor,costo,pre_ma y,pre_det,activo,userid,fecha
y en los valores utilizas solo 10, me imagino que sera por el campo id que sera autoincrement. Si es asi y no lo tienes para que pueda ser nulo , en VALUES debes introducirlo como NULL o si lo tienes que pueda ser nulo quita el campo id.
Hay que tener cuidado con esas cosas, pues mysql crea un error por que no le concuerdan las columnas con los valores introducidos.
  #7 (permalink)  
Antiguo 27/07/2013, 17:52
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con $_POST

Gracias, estudiare mas sobre bind_param()

Resolvi el insert asi aunq debere estudiar lo de mysqli_insert mejor:


Código PHP:
Ver original
  1. if ($_POST){
  2.                 $n = $_POST['nombre'];
  3.                 $d = $_POST['desc'];
  4.                 $r = $_POST['rubro'];
  5.                 $p = $_POST['provee'];
  6.                 $c = $_POST['costo'];
  7.                 $m = $_POST['mayoreo'];
  8.                 $dt = $_POST['detalle'];
  9.                
  10.            
  11.             $ins = $mysqli->prepare("insert into productos (nombre,descripcion,rubro,proveedor,costo,pre_may,pre_det) values(?,?,?,?,?,?,?)");
  12.             mysqli_stmt_bind_param($ins,'ssiiddd',$n,$d,$r,$p,$c,$m,$dt);
  13.             mysqli_stmt_execute($ins);
  14.             if ($ins){
  15.                 Echo "Registro Agregado con exito !!";
  16.             }
  17.             else{
  18.                 echo "Error al Agregar (".$mysqli->error.")<br>";
  19.                
  20.             }
  21.             }

Tambien resolvi de la otra forma, pero debe actualizarme con las nuevas cosas de PHP

Código PHP:
Ver original
  1. if ($_POST){
  2.                 $n = $_POST['nombre'];
  3.                 $d = $_POST['desc'];
  4.                 $r = $_POST['rubro'];
  5.                 $p = $_POST['provee'];
  6.                 $c = $_POST['costo'];
  7.                 $m = $_POST['mayoreo'];
  8.                 $dt = $_POST['detalle'];
  9.                
  10.            
  11.             $ins = $mysqli->query("insert into productos (id,nombre,descripcion,rubro,proveedor,costo,
  12.             pre_may,pre_det) values('','$n','$d','$r','$p','$c','$m','$dt')");
  13.             if ($ins){
  14.                 Echo "Registro Agregado con exito !!";
  15.             }
  16.             else{
  17.                 echo "Error al Agregar (".$mysqli->error.")<br>";
  18.             }
  19.             }

Muchas Gracias Nemutagk
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #8 (permalink)  
Antiguo 27/07/2013, 17:55
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Error con $_POST

Solo como dato, para tener mejor organizado el código decídete por una forma, o usas mysqli como objeto o como funciones, no combines porque pierde lógica y resulta mas difícil leer el código...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 27/07/2013, 17:55
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con $_POST

Cita:
Iniciado por Dalam Ver Mensaje
en el primer ejemplo usas 11 campos que son
id,nombre,descripcion,rubro,proveedor,costo,pre_ma y,pre_det,activo,userid,fecha
y en los valores utilizas solo 10, me imagino que sera por el campo id que sera autoincrement. Si es asi y no lo tienes para que pueda ser nulo , en VALUES debes introducirlo como NULL o si lo tienes que pueda ser nulo quita el campo id.
Hay que tener cuidado con esas cosas, pues mysql crea un error por que no le concuerdan las columnas con los valores introducidos.
Gracias, creo que por ahi empezo todo, pero con eso aprendi mas !!!

@Nemutagk use funciones por separado para la ejecucion del insert ya que no quiero meterme con las clases aun
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #10 (permalink)  
Antiguo 27/07/2013, 18:01
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con $_POST

Cita:
Iniciado por Nemutagk Ver Mensaje
Solo como dato, para tener mejor organizado el código decídete por una forma, o usas mysqli como objeto o como funciones, no combines porque pierde lógica y resulta mas difícil leer el código...
Demonios eso siempre me da lata, no se cuando uso objetos y cuando funciones
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #11 (permalink)  
Antiguo 27/07/2013, 23:27
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Error con $_POST

Cita:
Iniciado por KATHYU Ver Mensaje
Demonios eso siempre me da lata, no se cuando uso objetos y cuando funciones
Hola... cuando haces algo como accion() eso es una funcion y cuando haces algo como $var->accion() ó $this->accion() ó UnaClase::accion() es que estas usando un metodo de una clase

Pero un metodo es una funcion... solo que encapsulada dentro de una clase


PD: de pronto eso lo sabias... y preguntabas otra cosa, pero eso fue lo que entendi
__________________
Salu2!
  #12 (permalink)  
Antiguo 28/07/2013, 09:49
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con $_POST

Naaa sabia que era dentro de una clase porq aca lo lei, lei algo del metod construct, debo actualizarme mas en esas cosas, algo que estoy haciendo todos los dias !!!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #13 (permalink)  
Antiguo 28/07/2013, 16:02
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con $_POST

Buenas, sigo con otro detalle con lo del $_POST

Fijense que puse los id de cada producto que rescato al inicio como una url, para que al darle click pueda ser modificado !!!

Código PHP:
Ver original
  1. while($row = $sql->fetch_array(MYSQLI_ASSOC)){
  2.                         //echo $row['id'] ."->".$row['nombre']."->".$row['descripcion']."<br>";
  3.                        
  4.                         echo "<tr>
  5.                                 <td><a href='mantto.php'>".$row['id']."</a></td>
  6.                                 <td>".$row['nombre']."</td>
  7.                                 <td>".$row['descripcion']."</td>
  8.                                 <td>".$row['rubro']."</td>
  9.                                 <td>".$row['proveedor']."</td>
  10.                                 <td>".$row['costo']."</td>
  11.                                 <td>".$row['mayoreo']."</td>
  12.                                 <td>".$row['detalle']."</td>
  13.                                 <td>".$row['stock']."</td>
  14.                             </tr>";
  15.                     }
  16.                     echo "</table>";

La cosa es que aunq ya lo hice de mil formas no logro hacer que se carguen los datos en el formulario de modificacion (que seria el mismo que utilise para ingresar uno nuevo) ya que no se como pasar el parametro de la url que ha sido clickeada !!

Código PHP:
Ver original
  1. <?php
  2.     include('c.php');
  3.     if($mysqli->connect_errno){echo "Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno. ")" ;}
  4.         else{
  5.            
  6.             $n = '';
  7.             $d = '';
  8.             $r = '';
  9.             $p = '';
  10.             $c = '';
  11.             $m = '';
  12.             $dt = '';
  13.  
  14.            
  15.             if ($_POST){
  16.                 $n = $_POST['nombre'];
  17.                 $d = $_POST['desc'];
  18.                 $r = $_POST['rubro'];
  19.                 $p = $_POST['provee'];
  20.                 $c = $_POST['costo'];
  21.                 $m = $_POST['mayoreo'];
  22.                 $dt = $_POST['detalle'];
  23.                
  24.            
  25.             $ins = $mysqli->prepare("insert into productos (nombre,descripcion,rubro,proveedor,costo,pre_may,pre_det) values(?,?,?,?,?,?,?)");
  26.             mysqli_stmt_bind_param($ins,'ssiiddd',$n,$d,$r,$p,$c,$m,$dt);
  27.             mysqli_stmt_execute($ins);
  28.             if ($ins){
  29.                 Echo "Registro Agregado con exito !!<BR>";
  30.             }
  31.             else{
  32.                 echo "Error al Agregar (".$mysqli->error.")<br>";
  33.                
  34.             }
  35.             }
  36.             else{
  37.            
  38. $id = ???????? <== aca que iria para pasarlo como variable a la consulta sql ?????
  39.  
  40.             $sql = $mysqli->query("SELECT id,nombre,descripcion,rubro,proveedor,costo,pre_may,pre_det FROM productos where id='$id'");
  41.             while($row = $sql->fetch_array(MYSQLI_ASSOC)){
  42.                 echo $row['id'] ."->".$row['nombre']."->".$row['descripcion']."<br>";
  43.                
  44.                 }
  45.             }
  46. }
  47. ?>


Ese codigo estaria bien si la url del id tuviese el nombre de id (para pasarla por GET o POST) pero no se como ponerle ese parametro, no se si me puedan ayudar, el POST no es necesario o si ???

PD: impimo con echo los datos solo como prueba ya que no los logre meter a los textbox.
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #14 (permalink)  
Antiguo 28/07/2013, 16:26
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Error con $_POST

Sin parecer ofensivo, pero tienes problemas básicos sobre PHP, te recomiendo que leas un buen manual/tutorial de PHP...

Para poder modificar el item seleccionado (al dar click en el enlace) es necesario pasar el ID de dicho item, por lo cual será necesario que lo pases por GET....

Código PHP:
Ver original
  1. echo "<tr>
  2.     <td><a href='mantto.php?id=".$row['id']."'>".$row['id']."</a></td>
  3.     mas código.....

Para después capturar ese ID y poder hacer la modificación...
Código PHP:
Ver original
  1. $id = $_GET['id'];
  2. //aunque lo mejor es
  3. if (isset($_GET['id'])) {
  4.      $id = $_GET['id'];
  5. }else {
  6.      //si no existe el ID regresar al listado de items...
  7.      header('location: tu_listado_de_items.php');
  8.      exit();
  9. }
  10.  
  11.             $sql = $mysqli->query("SELECT id,nombre,descripcion,rubro,proveedor,costo,pre_may,pre_det FROM productos where id='$id'");
  12.             while($row = $sql->fetch_array(MYSQLI_ASSOC)){
  13.                 echo $row['id'] ."->".$row['nombre']."->".$row['descripcion']."<br>";
  14.                
  15.                 }
  16.             }
  17. }

Cita:
Iniciado por KATHYU
...el POST no es necesario o si ???...
Si, es necesario porque si no, no sabrás que item se va a modificar (update....), así que tendrás que tener un input que aloje el ID del item que se esta modificando...

Y por ultimo, tu código de mysqli sigue siendo igual que al comienzo del post insertando directamente los valores en la sentencia SQL...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #15 (permalink)  
Antiguo 28/07/2013, 17:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Error con $_POST

Revisa tambien la forma en la que haces el manejo de errores..... control de flujo ... utiliza NULL cuando puedas..... etc

Código PHP:
<?php
    
include('c.php');
    if(
$mysqli->connect_errno)
    {
        throw new 
Exception ("Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno")" ;
    }
            
               
    
$n = isset($_POST['nombre']) ? $_POST['nombre'] : null;
    
$d = isset($_POST['desc']) ? $_POST['desc'] : null;
    
// .. etc

Creo esa parte quedo mucho mas compacta además ... comparada con...

Cita:
Iniciado por KATHYU Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2.     include('c.php');
  3.     if($mysqli->connect_errno){echo "Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno. ")" ;}
  4.         else{
  5.            
  6.             $n = '';
  7.             $d = '';
  8.             $r = '';
  9.             $p = '';
  10.             $c = '';
  11.             $m = '';
  12.             $dt = '';
  13.  
  14.            
  15.             if ($_POST){
  16.                 $n = $_POST['nombre'];
  17.                 $d = $_POST['desc'];
  18.                 $r = $_POST['rubro'];
  19.                 $p = $_POST['provee'];
  20.                 $c = $_POST['costo'];
  21.                 $m = $_POST['mayoreo'];
  22.                 $dt = $_POST['detalle'];
  23.                
  24.             //...
__________________
Salu2!
  #16 (permalink)  
Antiguo 29/07/2013, 10:41
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con $_POST

Cita:
Iniciado por Nemutagk Ver Mensaje
Sin parecer ofensivo, pero tienes problemas básicos sobre PHP, te recomiendo que leas un buen manual/tutorial de PHP...

Para poder modificar el item seleccionado (al dar click en el enlace) es necesario pasar el ID de dicho item, por lo cual será necesario que lo pases por GET....

Código PHP:
Ver original
  1. echo "<tr>
  2.     <td><a href='mantto.php?id=".$row['id']."'>".$row['id']."</a></td>
  3.     mas código.....

Para después capturar ese ID y poder hacer la modificación...
Código PHP:
Ver original
  1. $id = $_GET['id'];
  2. //aunque lo mejor es
  3. if (isset($_GET['id'])) {
  4.      $id = $_GET['id'];
  5. }else {
  6.      //si no existe el ID regresar al listado de items...
  7.      header('location: tu_listado_de_items.php');
  8.      exit();
  9. }
  10.  
  11.             $sql = $mysqli->query("SELECT id,nombre,descripcion,rubro,proveedor,costo,pre_may,pre_det FROM productos where id='$id'");
  12.             while($row = $sql->fetch_array(MYSQLI_ASSOC)){
  13.                 echo $row['id'] ."->".$row['nombre']."->".$row['descripcion']."<br>";
  14.                
  15.                 }
  16.             }
  17. }



Si, es necesario porque si no, no sabrás que item se va a modificar (update....), así que tendrás que tener un input que aloje el ID del item que se esta modificando...

Y por ultimo, tu código de mysqli sigue siendo igual que al comienzo del post insertando directamente los valores en la sentencia SQL...
Pero eso es lo que habia hecho lo habia pasado por GET, y no funcionaba bien, es lo extraño he hecho muchas veces estas cosas sencillas y sin tener este tipo de problemas !!! en serio nose que es lo que pasa otra vez creo lo que pasa es que mucho paso frente al codigo y mi cerebro se bloquea !!!

(¬_¬) lo que mas me da rabia es que lo dejaste igual que yo y hoy el mengico codigo ya funciona

@Italico76: Leere e implementare sobre lo que usted me aconseja !!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Etiquetas: formulario, html, mysql, post, registro, sql
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 18:00.