Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

no me guarda la consulta

Estas en el tema de no me guarda la consulta en el foro de Mysql en Foros del Web. hola como andan.. tengo una bd y un programa en php desde el cual quiero hacer una insercion a dicha bd a traves de una ...
  #1 (permalink)  
Antiguo 25/09/2012, 18:03
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 12 años, 2 meses
Puntos: 0
no me guarda la consulta

hola como andan..
tengo una bd y un programa en php desde el cual quiero hacer una insercion a dicha bd a traves de una consulta. la insercion deberia realizarse luego de presionar un boton pero no lo hace..
a continuacion el codigo que tengo no se que es lo que pasa.

<?php
require('conexion.php');

session_start();

$bandera=0;
$fecha=date("Y - m - d");

if (!isset($_SESSION['nick'])) {
header("Location: /login.php");exit();
};

$ped=mysql_query('
select MAX(N_PEDIDO)
from ventas');
$ped_=mysql_fetch_row($ped);
$n_ped=++$ped_[0];


if ($bandera){
$bandera = 0;


$consulta=mysql_query('insert into ventas (N_PEDIDO, COD_CLI, COD_EMP, COD_PROD, FECHA_PEDIDO, CANTIDAD, PRECIO, SUBTOTAL) values ("'.$n_ped.'","'.$_POST['COD_CLI'].'","'.$_SESSION["clave"].'","'.$_POST['ID_PROD'].'","'.$fecha.'","'.$_POST['CANTIDAD'].'","'.$_POST['PRECIO'].'","'.$_POST['SUBTOTAL'].'")');

echo 'Se agregó el registro<BR>';

}else{

?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>VENTAS</title>
</head>
<script language="JavaScript" type="text/javascript" src="/ajax.js"></script>

<script>
function calcula(operacion){
var cantidad = document.carga.CANTIDAD.value
var precio = document.carga.PRECIO.value
var subtotal = cantidad * precio
document.carga.SUBTOTAL.value = subtotal
}

function suma (operacion){
var subtotal = document.carga.SUBTOTAL.value
var total = document.carga.TOTAL.value
var calc = eval(subtotal + operacion + total)
document.carga.TOTAL.value = calc
}
</script>

<body>

<form name="carga" action="/index.php" method="post">
<table width="832" border="0">
<tr>
<td width="50">Fecha:</td>
<td width="100"><?php echo $fecha ?></td>
<td width="500">&nbsp;</td>
<td width="80">Empleado:</td>
<td width="80"><?php echo $_SESSION["nick"] ?></td>
<td width="50"><?php echo '<p><a href="logout.php">Salir</a></p>'?></td>
</tr>
</table>
<br>
<br>
<tr>
<td width="70">CLIENTE:</td>
</tr>
<BR>
<table width="227" border="0">
<tr>
<td width="76">Documento:</td>
<td width="141"><input name="COD_CLI" type="text" value="" onBlur="MostrarConsulta(this.value);"/></td>
<div id="dinamico"></div>
</tr>
</table>
<br>
<br>
<table width="170" border="0">
<tr>
<td width="110">Pedido Numero:</td>
<td width="50"><?php echo $n_ped ?></td>
</tr>
</table>

<br>
<table width="520" border="0">
<tr>
<td width="60">Producto:</td>
<td width="4">&nbsp;</td>
<td width="144">Cantidad:</td>
<td width="4">&nbsp;</td>
<td width="144">Unitario:</td>
<td width="4">&nbsp;</td>
<td width="4">&nbsp;</td>
<td width="56">Subtotal:</td>
</tr>
<tr>
<td><select name="ID_PROD"><?php
$temp=mysql_query('
select COD_PROD, DESCRIPCION
from productos
order by DESCRIPCION');
while ($temp_=mysql_fetch_row($temp)){
echo '<option value="'.$temp_[0].'">'.$temp_[1].'
</option>';} ?></select></td>
<td>&nbsp;</td>
<td><input name="CANTIDAD" type="text" ></td>
<td>&nbsp;</td>
<td><input name="PRECIO" type="text"></td>
<td>&nbsp;</td>
<td><input type="Button" name="" value=" X " onClick="calcula('*')"></td>
<td><input type="text" name="SUBTOTAL" value="0"></td>
<td width="11">&nbsp;</td>
<td width="55"><input name="guardar" type="submit" value="Grabar" />
</td>
</tr>
</table>
<br>
<table width="510" border="0">
<tr>
<td width="336">&nbsp;</td>
<td><input type="Button" name="" value=" + " onClick="suma('+')"></td>
<td width="80">Total:</td>
<td width="80"><input type="text" name="TOTAL" value="0"></td>
</tr>
</table>
<?php $bandera = 1; ?>
<br>
<td style="width: 131px"></td>
<input name="guardar" type="submit" value="Guardar" />
</form>
<table width="200" border="0">
<tr>
<td><?php echo $_POST['COD_CLI'];?></td>
</tr>
<tr>
<td><?php echo $_POST['PRECIO']; ?></td>
</tr>
<tr>
<td><?php echo $_POST['CANTIDAD']; ?></td>
</tr>
<tr>
<td><?php echo $_POST['SUBTOTAL']; ?></td>
</tr>
<tr>
<td><?php echo $_POST['TOTAL']; ?></td>
</tr>
<tr>
<td><?php echo $fecha; ?></td>
</tr>
<tr>
<td><?php echo $_POST['ID_PROD']; ?></td>
</tr>
<tr>
<td><?php echo $n_ped; ?></td>
</tr>
</table>
</body>
</html>
<?php }?>

ya controle los nombres y si las variables tienen datos y todo esta en forma. verifique el formato de la fecha y sta bien. no se. ojala me puedan ayudar. gracias.
  #2 (permalink)  
Antiguo 25/09/2012, 18:27
 
Fecha de Ingreso: julio-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: no me guarda la consulta

Según como estas haciendo el INSERT es la manera correcta, como normas aquí esta prohibido hablar de asuntos que no sean relaciodados con Mysql, pero simplemente voy hacerte una sugerencia.

Ten cuidado con la fecha Y - m - d verifica que no tenga espacio entre cada separador y de no ser ese tu problema imprime el error que te devuelve Mysql.

Saludos!
  #3 (permalink)  
Antiguo 25/09/2012, 18:31
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: no me guarda la consulta

pero no me tira error el mysql osea al hacer esa consulta como la hago desde la pag solamente se recarga y no me guarda por eso no se porque no me tira ningun error


probe lo de la fecha y le saque los espacios pero igual no me guarda.

Última edición por faseb; 25/09/2012 a las 18:38
  #4 (permalink)  
Antiguo 25/09/2012, 18:45
 
Fecha de Ingreso: julio-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: no me guarda la consulta

utilizas or die(mysql_error()) para imprimir el error posteriormente del mysql_query().
  #5 (permalink)  
Antiguo 25/09/2012, 18:52
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: no me guarda la consulta

no me anda no se como es la sintaxis. por favor ayudame en eso la verdad nunca use eso de or die(mysql_error()). gracias x la ayuda
  #6 (permalink)  
Antiguo 25/09/2012, 19:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: no me guarda la consulta

Primero: Por favor, haznos la gentileza de borrar toda ese código PHP, que es off-topic, no nos aporta nada y sólo está escondiendo los problemas. Acuérdate de que este foro no se permite códigos de programación. Sólo SQL.
Segundo: Ten muy en cuenta que el SQL es un lenguaje independiente de PHP, y tiene su propia sintaxis. Cuando embebes el SQL dentro de otro lenguaje debes respetar las reglas sintácticas del SQL en su contexto.
Uno de los problemas es que en MySQL el uso de comillas (") y apóstrofos (') no es arbitrario ni flexible. Las comillas encierran nombres de columna, por ejemplo, y los apóstrofos se usan para cadenas.
Aprovechando el BBCode, te mostraré cómo queda lo que tu pones, si sólo pongo el SQL:
Código MySQL:
Ver original
  1. insert into ventas(
  2.     N_PEDIDO,
  3.     COD_CLI,
  4.     COD_EMP,
  5.     COD_PROD,
  6.     FECHA_PEDIDO,
  7.     CANTIDAD,
  8.     PRECIO,
  9.     SUBTOTAL)
  10.     "'.$n_ped.'",
  11.     "'.$_POST['COD_CLI'].'",
  12.     "'.$_SESSION["clave"].'",
  13.     "'.$_POST['ID_PROD'].'",
  14.     "'.$fecha.'",
  15.     "'.$_POST['CANTIDAD'].'",
  16.     "'.$_POST['PRECIO'].'",
  17.     "'.$_POST['SUBTOTAL'].'")
y lo que debería verse es:
Código MYSQL:
Ver original
  1. insert into ventas(
  2.     N_PEDIDO,
  3.     COD_CLI,
  4.     COD_EMP,
  5.     COD_PROD,
  6.     FECHA_PEDIDO,
  7.     CANTIDAD,
  8.     PRECIO,
  9.     SUBTOTAL)
  10.     '".$n_ped."',
  11.     '".$_POST['COD_CLI']."',
  12.     '".$_SESSION['clave']."',
  13.     '".$_POST['ID_PROD']."',
  14.     '".$fecha."',
  15.     '".$_POST['CANTIDAD']."',
  16.     '".$_POST['PRECIO']."',
  17.     '".$_POST['SUBTOTAL']."')
Eso es porque en lugar de crear la cadena en PHP con las comillas, estás usando apóstrofos, lo que en PHP da buen resultado, pero genera un gravísimo error en el SQL, porque confunde el contenido de las variables con nombres de campos.

Tercero: Nunca, jamás, llames a una sentencia de SQL sin capturar el error que la base de datos devuelve. Recuperar ese mensaje y número de error es crítico para saber cuál es el problema, y poder encarar la solución.

Finalmente, recuerda siempre que el hecho de que las variables tengan datos no implica que las estés usando bien. Si quieres saber si una consulta está correctamente escrita, no la ejecutes directamente al crearla, sino carga una variable string con la consulta, captura su contenido y pruébalo en el PhpMyadmin o lo que sea que uses.
Es una malísima práctica usar consultas directamente sin probar su sintaxis primero en un fornt-end. 9 de cada 10 veces contendrán errores que no puedes ver porque quedan escondidos en el código PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 25/09/2012, 21:16
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: no me guarda la consulta

ok gracias x tu consejo gnzsoloyo lo voy a tener n cuenta. si podes mostrame como quedaria la sentencia del die para que me muestre el error pues nunk la use y no tngo la menor idea. por lo tanto no se como capturar los errores que la base de datos me pueda dar. gracias x todo y ojala pueda resolver mi problema.
  #8 (permalink)  
Antiguo 25/09/2012, 21:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: no me guarda la consulta

Cita:
si podes mostrame como quedaria la sentencia del die para que me muestre el error pues nunk la use y no tngo la menor idea. por lo tanto no se como capturar los errores que la base de datos me pueda dar. gracias x todo y ojala pueda resolver mi problema.
Son temas de programación, no de MySQL, ya que son las librerías de PHP (MYSQL y MYSQLI) las que tienen esos recursos.
Los expertos en eso están en el Foro de PHP, que es donde debes hacer la pregunta:
http://www.forosdelweb.com/f18/

Yo te sugeriría que mires los ejemplos de las FAQs de PHP: http://www.forosdelweb.com/f18/faqs-php-530600/
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php, select, sql, guardar
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 15:50.