Foros del Web » Programando para Internet » PHP »

¿¿¿Por qué no se insertan los datos???

Estas en el tema de ¿¿¿Por qué no se insertan los datos??? en el foro de PHP en Foros del Web. Hola a todos. Estoy haciendo un script para leer el contenido de un archivo de texto (números escritos uno debajo del otro), los muestre en ...
  #1 (permalink)  
Antiguo 17/01/2016, 07:34
Musiker
Invitado
 
Mensajes: n/a
Puntos:
¿¿¿Por qué no se insertan los datos???

Hola a todos.

Estoy haciendo un script para leer el contenido de un archivo de texto (números escritos uno debajo del otro), los muestre en un formulario, el usuario los clasificará mediante radio buttons eligiendo la opción de par o impar, y por último insertará los pares e impares en tablas distintas. El problema que tengo es que (creo) que está todo bien, excepto que no inserta nada. No da ningún error, pero no inserta. La verdad es que no sé si el error estará en PHP o en MYSQL. ¿Alguna idea, por favor?

Muchas gracias por adelantado.

Aquí leo el archivo de texto y extraigo el contenido en un array

Código PHP:
$archivo file("ruta del archivo");
    
    foreach (
$archivo as $archivos
    {    
        echo 
"<br>";
        echo 
"EL CONTENIDO DEL ARCHIVO ES: $archivos";
        echo 
"<br>";
        
    }                                
                                            
include (
"form.html"); 
Aquí muestro el formulario con los valores del array:

Código PHP:
<form method="post" action="pruebas.php">
<?php
for($contador=0;$contador<count($archivo);$contador++){
?>
    <div>
        
        <input type="text" name="numero_<?php echo $contador;?>" value="<?php echo $archivo[$contador];?>">
        <input type="radio" name="categoria_<?php echo $contador;?>" value="<?php echo $archivo[$contador];?>"><label>pares</label>
        <input type="radio" name="categoria_<?php echo $contador;?>" value="<?php echo $archivo[$contador];?>"><label>impares</label>

    </div>
 
        <?php
    
?>
<input type="submit" value="Enviar">
</form>
Aquí tomo los valores y los intento insertar:

Código PHP:
$conexion mysql_connect(".................");
 
 
        if(!
$conexion
        {
            echo 
"ERROR EN LA CONEXION" mysql_error();
        }
        else
        {
            echo 
"CONEXION CORRECTA <br />";
        }
 
        
$db_seleccionada mysql_select_db(.............); 
    
        if(!
$db_seleccionada)
        {
            echo 
"PROBLEMA EN LA BD" mysql_error();  
        }
        else
        {
            echo 
"CONEXION CORRECTA <br />";
        }
        

    for(
$i=0;$i<count($_POST);$i++){
        if(isset(
$_POST["numero_".$i])){
            echo 
"<br>";
            if(
$_POST["categoria_".$i]=="PARES"){
                
$sql "INSERT INTO pares('enlace') VALUES (''".$_POST["categoria_".$i]."',')";//insert
                
mysql_query($sql$conexion);
                echo 
"<br>";
                echo 
"SE HA INSERTADO CORRECTAMENTE";
            }elseif(
$_POST["categoria_".$i]=="IMPARES"){
                
$sqldos "INSERT INTO impares(enlace) VALUES (''".$_POST["categoria_".$i]."',')";//insert
                
mysql_query($sqldos$conexion);
                echo 
"<br>";
                echo 
"SE HA INSERTADO CORRECTAMENTE";
            }
 
        }
    } 

Última edición por Musiker; 17/01/2016 a las 07:42
  #2 (permalink)  
Antiguo 17/01/2016, 08:56
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 10 años, 1 mes
Puntos: 24
Respuesta: ¿¿¿Por qué no se insertan los datos???

Saludos, creo que la sentencia de tu insert esta mal, tienes una coma (,) despues de la variable de tu post y 2 comillas extra, deberias probar asi ambos insert:

Código PHP:
Ver original
  1. $insertar = $_POST["categoria_".$i].",";
  2. $sql = "INSERT INTO pares('enlace') VALUES ('$insertar')";

Edito: no me di cuenta tuve un error al entender porque tenias esa coma hay .

Última edición por leonagelic; 17/01/2016 a las 09:02
  #3 (permalink)  
Antiguo 17/01/2016, 09:12
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿¿¿Por qué no se insertan los datos???

Muchas gracias por tomarte la molestia en responder, lo he modificado pero sigue sin funcionar... Es muy extraño...

Cita:
Iniciado por leonagelic Ver Mensaje
Saludos, creo que la sentencia de tu insert esta mal, tienes una coma (,) despues de la variable de tu post y 2 comillas extra, deberias probar asi ambos insert:

Código PHP:
Ver original
  1. $insertar = $_POST["categoria_".$i].",";
  2. $sql = "INSERT INTO pares('enlace') VALUES ('$insertar')";

Edito: no me di cuenta tuve un error al entender porque tenias esa coma hay .
  #4 (permalink)  
Antiguo 17/01/2016, 09:22
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 10 años, 1 mes
Puntos: 24
Respuesta: ¿¿¿Por qué no se insertan los datos???

Bueno lei la documentacion por si se me olvidaba algo, pero todo esta bien, has probado tu archivo de conexion funcione en otra setencia sql? revisalo ya que no colocaste como lo hacias, Tambien tu BD si ere campo es varchar o solo int, ya que si es solo int no guardara porque lleva una coma(,). saludos.
  #5 (permalink)  
Antiguo 17/01/2016, 09:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: ¿¿¿Por qué no se insertan los datos???

SI no se inserta por un error que se produce en la base, como MÍNIMO deberías estar recuperando los mensajes de error que la base devuelve... Cosa que no haces.
Código PHP:
Ver original
  1. mysql_query($sql, $conexion) or die("Error enejecucion de query: ".mysql_error());
Por otro lado, no estoy seguro de que iterar la clave del array de esta forma funcione:
Código PHP:
Ver original
  1. $sql = "INSERT INTO pares('enlace') VALUES ('".$_POST['categoria_'.$i]."')";
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 17/01/2016, 10:20
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 5 años, 1 mes
Puntos: 52
Respuesta: ¿¿¿Por qué no se insertan los datos???

Che, perdón que me meta donde no me llaman, no? Pero......

Por qué la gente en PHP no usa un ORM como el resto del mundo y se evita estos problemas tontos de "poner mal la coma en el string de SQL" y ese tipo de estupideces que el resto de las plataformas de software resolvieron hace 10 años?

Ni hablar de problemas de inyección de SQL... ¿Este código va a ir a producción? ¿No te causa ni siquiera un poquito de remordimiento?
  #7 (permalink)  
Antiguo 17/01/2016, 10:24
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿¿¿Por qué no se insertan los datos???

Gracias, pero he añadido el
Código PHP:
mysql_error() 
y no devuelve ningún error. Me hace pensar que ni siquiera llega a ejecutarse en ese punto el script por algún motivo...

Cita:
Iniciado por gnzsoloyo Ver Mensaje
SI no se inserta por un error que se produce en la base, como MÍNIMO deberías estar recuperando los mensajes de error que la base devuelve... Cosa que no haces.
Código PHP:
Ver original
  1. mysql_query($sql, $conexion) or die("Error enejecucion de query: ".mysql_error());
Por otro lado, no estoy seguro de que iterar la clave del array de esta forma funcione:
Código PHP:
Ver original
  1. $sql = "INSERT INTO pares('enlace') VALUES ('".$_POST['categoria_'.$i]."')";
  #8 (permalink)  
Antiguo 18/01/2016, 05:02
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 486
Antigüedad: 8 años, 6 meses
Puntos: 31
Respuesta: ¿¿¿Por qué no se insertan los datos???

resolviste?
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #9 (permalink)  
Antiguo 18/01/2016, 05:39
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿¿¿Por qué no se insertan los datos???

No no, de lo contrario hubiera dado el tema por solucionado. Gracias por tu interés. Lo he intentado incluso con otras bases de datos, claves, usuarios etc, por si el error era de mi base de datos, pero nada. No sé qué puede ser.

Cita:
Iniciado por gldelossantos Ver Mensaje
resolviste?
  #10 (permalink)  
Antiguo 18/01/2016, 06:00
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.329
Antigüedad: 12 años, 1 mes
Puntos: 606
Respuesta: ¿¿¿Por qué no se insertan los datos???

Para empezar tendrías que tener logs para saber por donde va tu código, sino te puedes encontrar en este tipo de situaciones.

Tiene pinta de que los valores que recibes por $_Post no son los correctos y no entran en los If's.

Yo pondría este trozo de código al principio de todo:


Código PHP:
Ver original
  1. foreach ($_POST as $key => $value)
  2.         echo $key.'='.$value.'<br />';
__________________
Aviso: No se resuelven dudas por MP!
  #11 (permalink)  
Antiguo 18/01/2016, 06:17
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿¿¿Por qué no se insertan los datos???

Hola Malenko, muchas gracias por tu respuesta. He añadido tu código y me muestra lo siguiente:

enlace_0=2
categoria_0=2
enlace_1=6
categoria_1=6
enlace_2=7
categoria_2=7
enlace_3=4
categoria_3=4
enlace_4=8
categoria_4=8
enlace_5=432
categoria_5=432
enlace_6=654
categoria_6=654
enlace_7=23
categoria_7=23

Es decir, parece que me muestra los valores de mi archivo en cada posición del array... parece que lo que no toma correctamente es la opción que el usuario selecciona de las categorías de par e impar, por lo que veo. No sé si estaré en lo cierto...

Cita:
Iniciado por Malenko Ver Mensaje
Para empezar tendrías que tener logs para saber por donde va tu código, sino te puedes encontrar en este tipo de situaciones.

Tiene pinta de que los valores que recibes por $_Post no son los correctos y no entran en los If's.

Yo pondría este trozo de código al principio de todo:


Código PHP:
Ver original
  1. foreach ($_POST as $key => $value)
  2.         echo $key.'='.$value.'<br />';

Etiquetas: formulario, html, mysql, select, sql, tabla, variable
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 09:11.