Foros del Web » Programando para Internet » PHP »

No inserta datos en mi DB

Estas en el tema de No inserta datos en mi DB en el foro de PHP en Foros del Web. Buenas noches amigos. Tengo un problema y es que tengo que hacer dos pares de select dependientes dinámicos en un formulario e insertar los datos ...
  #1 (permalink)  
Antiguo 22/12/2013, 21:43
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
De acuerdo No inserta datos en mi DB

Buenas noches amigos. Tengo un problema y es que tengo que hacer dos pares de select dependientes dinámicos en un formulario e insertar los datos en mi DB. Ya hice el formulario con sus campos pero no entiendo por que razon no inserta, aunque los datos cargan correctamente en los select. El código baza en PHP, ajax y js. Si les parece dejo el código para que se pueda ver lo que estoy haciendo:

index.php

Código:
<?php
include 'conex.php';
include 'conexion.php';
include 'conexion_lic.php';
?>
<!DOCTYPE html>
<html>
<head>
<script src="ajax.js"></script>
<script src="ajax_lic.js"></script>
</head>
<body>
<h2>HTML - PHP - AJAX - MySQL</h2>
<FORM NAME="tipo_doc" METHOD="post">

<?php
$con=conexion();
$res=mysql_query("select * from continente",$con);
?>
Continente: <select id="cont" name="codigo1" onchange="load(this.value)">
<option value="">Seleccione</option>
<?php
while($fila=mysql_fetch_array($res)){
?>
<option value="<?php echo $fila[codigo1]; ?>"><?php echo $fila[nombre]; ?></option>
<?php } ?>
</select>
<div id="myDiv"> 
Pais: <select name="codigo">
<option value="">Seleccione </option></select>
</div>

<br>

<?php
$con=conexion_lic();
$res=mysql_query("select * from licencias1",$con);
?>
Licencias: <select id="cont1" name="cod_lic" onchange="load1(this.value)">
<option value="">Seleccione</option>
<?php
while($fila=mysql_fetch_array($res)){
?>
<option value="<?php echo $fila[cod_lic]; ?>"><?php echo $fila[dtalle_lic]; ?></option>
<?php } ?>
</select>
<div id="myDiv1">
Modalidad: <select name="cod_mod">
<option value="">Seleccione </option></select>
</div>
<?php 
$codigo1 = $_REQUEST['codigo1'];
$codigo = $_REQUEST['codigo'];
$cod_lic = $_REQUEST['cod_lic'];
$cod_mod = $_REQUEST['cod_mod'];
?>

<input type="submit" name="enviar" value="Guardar"></input>
</FORM>
</body>

</html>

	  	    <?
	  	if($_POST["enviar"]!="")    
		{
	        $sql = "insert into tabla (codigo1,codigo,cod_lic,cod_mod) values ('".$_REQUEST["codigo1"]."','".$_REQUEST["codigo"]."','".$_REQUEST["cod_lic"]."','".$_REQUEST["cod_mod"]."')";
                if( mysql_query( $sql, $link ) )            
                {
	        echo "<script language='javascript'>alert('Registro Guardado');</script>";
		}
		}						
	   ?>
proc.php

Código:
<?php
include 'conexion.php';

$q=$_POST['q'];
$con=conexion();

$res=mysql_query("select * from pais where cod_cont=".$q."",$con);

?>

Pais: <select id="myDiv" name="codigo">

<?php while($fila=mysql_fetch_array($res)){ ?>
 <option><?php echo $fila[nombre]; ?></option>
<?php } ?>

</select>

ajax.js


Código:
function load(str)
{
var xmlhttp;

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","proc.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("q="+str);
}
  #2 (permalink)  
Antiguo 22/12/2013, 22:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: No inserta datos en mi DB

Para evitar conflictos con el id y el nombre del elemento del formulario en el momento en que reciba los valores, les doy el mismo valor al id y al nombre, quizá tus datos llegan tomando como referencia el id y tú intentas tomarlos por el nombre del select. Imprime las variables que llegan al script PHP para que corrobores si realmente están llegando, quizá por eso no se guarden.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 22/12/2013, 23:20
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: No inserta datos en mi DB

coincido con la persona de arriba, tal vez no llegan las variables

has un print_r($_REQUEST); y print_r($_POST); para ver que datos están llegando


por otro lado, no uses inputs directamente en sentencias sql, pueden realizar un ataque si no tienes las "magic quotes" activadas (creo que se escribe así, no lo recuerdo)
  #4 (permalink)  
Antiguo 23/12/2013, 09:22
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: No inserta datos en mi DB

Cita:
Iniciado por nksn Ver Mensaje
por otro lado, no uses inputs directamente en sentencias sql, pueden realizar un ataque si no tienes las "magic quotes" activadas (creo que se escribe así, no lo recuerdo)
En vez de depender de las comillas mágicas (que son obsoletas desde php 5.3 y eliminadas en su versión 5.4) como consejo adicional es cambiar de las funciones mysql_* a mysqli_* o PDO ya que primero las funciones mysql_* pronto dejarán de ser utiles y segundo, tanto mysqli_* como PDO proveen herramientas para evitar ataques de inyección sql (consultas parametrizadas)

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #5 (permalink)  
Antiguo 23/12/2013, 22:23
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: No inserta datos en mi DB

Hola gracias a todos por responder. Hice las sugerencias que me dijeron y si, efectivamente los valores están llegando normalmente pero no esta insertando y no logro saber por que razon no envía los datos. Me podrian colaborar por favor, ya intente hacerlo de otra forma pero pues tampoco me funciono
  #6 (permalink)  
Antiguo 24/12/2013, 03:42
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: No inserta datos en mi DB

ahora que me fijo, ese $link no deberia ser $con?

Código PHP:
if( mysql_query$sql$link ) ) 
  #7 (permalink)  
Antiguo 24/12/2013, 06:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No inserta datos en mi DB

Cita:
Iniciado por andre___5025 Ver Mensaje
Hola gracias a todos por responder. Hice las sugerencias que me dijeron y si, efectivamente los valores están llegando normalmente pero no esta insertando y no logro saber por que razon no envía los datos. Me podrian colaborar por favor, ya intente hacerlo de otra forma pero pues tampoco me funciono
Si no está insertando puede darse por cuatro razones básicas:
1) No se conectó correctamente a MySQL.
2) No están llegando los datos a la query para ser insertados en ella, y por ende queda mal construida.
3) Estás violando alguna restricción de NOT NULL en algun campo, o bien una FK (este último no parece ser el caso).
4) Se está generando un error de sintaxis debido al contenido de alguna de las variables.

En cualquier caso, no veo que estés capturando los errores y sus mensajes, que pueda estar devolviendo MySQL, así que no podemos descartar que algo haya mal. Sencillamente no lo estás analizando porque no lo ves.

Esto es lo que haces:
Código PHP:
<?
if($_POST["enviar"]!="")    
    {
    
$sql "insert into tabla (codigo1,codigo,cod_lic,cod_mod) values ('".$_REQUEST["codigo1"]."','".$_REQUEST["codigo"]."','".$_REQUEST["cod_lic"]."','".$_REQUEST["cod_mod"]."')";
    if( 
mysql_query$sql$link ) )            
        {
        echo 
"<script language='javascript'>alert('Registro Guardado');</script>";
        }
    
// ¿Y qué pasa si no es exitosa? 
    // ¿Verificas si hubo algún error devuelto? 
    // NO, no lo haces.
}                        
?>
Verifica es. Luego vemos el resto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 24/12/2013 a las 06:13
  #8 (permalink)  
Antiguo 24/12/2013, 06:19
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: No inserta datos en mi DB

pues al decir verdad, "el de arriba tiene razón" (con respeto).

Se esta analizando el código a "ciegas" es decir, si utilizasen "mysqli_error ( mysqli $link )" o $mysqli->error, "saltaría" el por que no funciona

si no sabes como funciona, puedes darte una vuelta por php.net, hay mucha gente trabajando en la traducciona a esp (la cual esta muy completa ya)

por si no sabes como puedes usarlo

Código PHP:
if(!mysqli_query($conexion"insert into registro (nombre, correo, password) values ('$nombre', '$correo', '$password')") )
{
    echo 
'error:'.mysqli_error($conexion);

  #9 (permalink)  
Antiguo 24/12/2013, 10:35
 
Fecha de Ingreso: diciembre-2013
Mensajes: 1
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: No inserta datos en mi DB

Gracias por sus respuestas muchachos, nksn: inserté el código que pusiste y me mostró un error de conexión a la base de datos, al parecer no se podía conectar, creo que era un problema del xampp, o de que cambió alguna contraseña para acceder al phpmyadmin, lo desinstalé y usé wamp y ahora si inserta perfectamente, sin cambiarle nada al código. Nuevamente gracias por su tiempo! :)
  #10 (permalink)  
Antiguo 24/12/2013, 11:17
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: No inserta datos en mi DB

Hola nksn gracias por responder. Mira el link es por que tengo otro archivo llamado conex.php donde inserto los cuatro campos de los select en otra base de datos. Tambien hice la linea de codigo del error y me sale un mensaje muy raro. Mira

conex.php

Código PHP:
Ver original
  1. <?$dbhost='localhost';  $dbusuario='root'; $dbpassword='12345'; $db='insertar_cuatro_select';  
  2. $link = mysql_connect($dbhost, $dbusuario, $dbpassword) or die ("No se pudo conectar al servidor.");
  3. mysql_select_db($db, $link) or die ("No se pudo conectar a la base de datos.");?>

index.php

Código PHP:
Ver original
  1. <?
  2.         if($_POST["enviar"]!="")    
  3.         {
  4.             echo $_POST["codigo1"]; echo "<br>";
  5.             echo $_POST["codigo"];echo "<br>";
  6.             echo $_POST["cod_lic"];echo "<br>";
  7.             echo $_POST["cod_mod"];
  8.             $sql = "insert into tabla (codigo1,codigo,cod_lic,cod_mod) values ('".$_REQUEST["codigo1"]."','".$_REQUEST["codigo"]."','".$_REQUEST["cod_lic"]."','".$_REQUEST["cod_mod"]."')";
  9.             echo 'error:'.mysqli_error($conex);
  10.                 if( mysql_query( $sql, $link ) )            
  11.                 {
  12.                      
  13.             echo "<script language='javascript'>alert('Registro Guardado');</script>";
  14.         }
  15.         }                      
  16.        ?>
  #11 (permalink)  
Antiguo 24/12/2013, 11:20
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: No inserta datos en mi DB

http://www.subirimagenes.com/imagen-error-8749578.html
  #12 (permalink)  
Antiguo 24/12/2013, 12:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No inserta datos en mi DB

Realmente te falta MUCHO por aprender de PHP.
¿Por qué no tomas mejor un ejemplo del manual on-line, o de algún tutorial?
Con ese código es medio obvio que mysqli_error() disparará un error, porque debes verificar si hay errores después de enviar la consulta y no antes.
Código PHP:
<?
        
if($_POST["enviar"]!="")    
        {
            echo 
$_POST["codigo1"]; echo "<br>";
            echo 
$_POST["codigo"];echo "<br>";
            echo 
$_POST["cod_lic"];echo "<br>";
            echo 
$_POST["cod_mod"];
            
$sql "insert into tabla (codigo1,codigo,cod_lic,cod_mod) values ('".$_REQUEST["codigo1"]."', '".$_REQUEST["codigo"]."', '".$_REQUEST["cod_lic"]."', '".$_REQUEST["cod_mod"]."')";
           
$resultado mysql_query$sql$link ) ;
           if( 
$resultado)
                {echo 
"<script language='javascript'>alert('Registro Guardado');</script>";}
           else{echo 
'error:'.mysqli_error($link);}
        }
?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 24/12/2013, 21:58
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: No inserta datos en mi DB

hice un ejemplo, aqui tienen el código... http://www.forosdelweb.com/f18/intro...1/#post4547034


espero que les sirva

Etiquetas: formulario, html, inserta, mysql, registro, select, sql, tabla
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 17:16.