Foros del Web » Programando para Internet » PHP »

Problema al insertar datos usando if

Estas en el tema de Problema al insertar datos usando if en el foro de PHP en Foros del Web. Saludos, feliz año a todos! Espero puedan ayudarme con este problema: Necesito insertar los datos Nombre,Pais,Telefono a sus respectivas columnas pero no puedo este es ...
  #1 (permalink)  
Antiguo 04/01/2011, 01:27
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 4 meses
Puntos: 3
Problema al insertar datos usando if

Saludos, feliz año a todos! Espero puedan ayudarme con este problema: Necesito insertar los datos Nombre,Pais,Telefono a sus respectivas columnas pero no puedo este es el codigo:

Código:
<?

foreach($_POST as $key=>$value)
  {


 for($i=1; $i<=2; $i+=1)
    { 


    if($key=="Nombre$i")
     {
     mysql_query("INSERT INTO prueba (columnaA) values ('$value') "); 
     }
     
 


    if($key=="Pais$i")
     {
     mysql_query("INSERT INTO prueba (columnaB) values ('$value') ");
     }



    if($key=="Telefono$i")
     {
     mysql_query("INSERT INTO prueba (columnaC) values ('$value') ");
     }


    }

  }

?>

Si inserta los datos, pero no como quiero, primero inserta 2 datos de nombre en la ColumnaA, luego 2 de pais en la ColumnaB, y luego 2 datos de telefono en la ColumnaC. Y deberia insertar todos al mismo tiempo. Espero puedan ayudarme saludos.
  #2 (permalink)  
Antiguo 04/01/2011, 01:56
Avatar de nuuk_ikel  
Fecha de Ingreso: agosto-2008
Ubicación: [ Dimensión desconocida ]
Mensajes: 164
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Problema al insertar datos usando if

Yo lo hago así, haber si te sirve... espero que sea lo que necesitas

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_POST['submit'])){
  4.  
  5.     /*conectamos*/
  6.     $cnx = conectar();
  7.     /*definimos los nombres de los campos*/
  8.     $campos = "nombre,apellido,email,url,nick";
  9.     /*sus valores*/
  10.     $valores = "'".$_POST['nombre']."',";
  11.     $valores .= "'".$_POST['apellido']."',";
  12.     $valores .= "'".$_POST['email']."',";
  13.     $valores .= "'".$_POST['url']."',";
  14.     $valores .= "'".$_POST['nick']."'";
  15.     /*insertamos*/
  16.     $sql = "INSERT INTO tabla($campos) VALUES($valores)";
  17.     $res = mysql_query($sql) or die(mysql_error());
  18.     /*mensaje de exito*/
  19.     echo "resgitro actualizado<br> <a href='listado.php'>Regresar</a>";
  20.     /*cerramos conexion*/
  21.     mysql_close($cnx);
  22.     exit;
  23. }
  24. ?>
  25.  
  26. <form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  27.   <table width="217" border="1" cellpadding="0" cellspacing="0">
  28.     <tr>
  29.       <td>Nombre</td>
  30.       <td width="142"><input name="nombre" type="text" id="nombre" value=""></td>
  31.     </tr>
  32.     <tr>
  33.       <td width="69">Apellido</td>
  34.       <td><input name="apellido" type="text" id="apellido" value=""></td>
  35.     </tr>
  36.     <tr>
  37.       <td width="69">E-mail</td>
  38.       <td><input name="email" type="text" id="email" value=""></td>
  39.     </tr>
  40.     <tr>
  41.       <td width="69">Url</td>
  42.       <td><input name="url" type="text" id="url" value=""></td>
  43.     </tr>
  44.     <tr>
  45.       <td width="69">Nick</td>
  46.       <td><textarea name="nick" id="nick"></textarea></td>
  47.     </tr>
  48.     <tr>
  49.       <td>&nbsp;</td>
  50.       <td align="left"><input type="submit" name="submit" value="Enviar"></td>
  51.     </tr>
  52.   </table>
  53. </form>
__________________
[ Si hay un problema, existe una solución ]
  #3 (permalink)  
Antiguo 04/01/2011, 11:50
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Problema al insertar datos usando if

Gracias pero no es lo que necesito, tu ejemplo es para insertar datos, eso lo se hacer, el problema que tengo es con los if. De todas maneras gracias, espero alguien más se anime a comentar.
  #4 (permalink)  
Antiguo 04/01/2011, 12:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al insertar datos usando if

Cita:
Iniciado por cyber_dark Ver Mensaje
[...] tu ejemplo es para insertar datos, eso lo se hacer, el problema que tengo es con los if [...]
no, en realidad no sabes hacer el INSERT y el problema además no tiene que ver mucho con los if(), pues, si no tienes una idea clara de como insertar todos los datos agrupados... ¿pues que es lo que planeas hacer?

el ejemplo que ya te dieron es la clave para solucionar tu problema, quizá tu no lo veas, pero es así...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/01/2011, 12:11
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Problema al insertar datos usando if

El problema es este los datos se insertar asi:

ColumnaA | ColumnaB | Columna C |
------------------------------------------------
Nombre1 | Vacio | Vacio |
------------------------------------------------
Nombre2 | Vacio | Vacio |
------------------------------------------------
Vacio | Pais1 | Vacio |
------------------------------------------------
Vacio | Pais2 | Vacio |
------------------------------------------------
Vacio | Vacio | Telefono1 |
------------------------------------------------
Vacio | Vacio | Telefono2 |
------------------------------------------------

Y deberia insertalos asi:

ColumnaA | ColumnaB | Columna C |
------------------------------------------------
Nombre1 | Pais1 | Telefono1 |
------------------------------------------------
Nombre2 | Pais2 | Telefono2 |
  #6 (permalink)  
Antiguo 04/01/2011, 12:29
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema al insertar datos usando if

lo dicho, no sabes hacer el insert
  #7 (permalink)  
Antiguo 04/01/2011, 17:42
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Problema al insertar datos usando if

Bueno agradeceria que me indiques mi error, ahora uso esto:

Código:
<?


$value1=" ";
$value2=" ";
$value3=" ";
foreach($_POST as $key=>$value)
  {




 for($i=1; $i<=$Limite $i+=1)
    { 

 

    if($key=="Nombre$i")
     {
     $value1.="$value";
     }          
 


    if($key=="Pais$i")
     {
     $value2.="$value";
     }



    if($key=="Telefono$i")
     { 
     $value3.="$value";
     }


    }



  }






mysql_query("INSERT INTO prueba (Nombre,Pais,Telefono) values ('$value1','$value2','$value3') "); 



?>

Pero inserta asi, suponiendo que $Limite es igual a 2:

Columna 1 |Columna2 |Columna3|
--------------------------------------------
Nom1Nom2|Pais1Pais2|Tel1Tel2 |


Y deberia ser:

Columna 1 |Columna2 |Columna3|
--------------------------------------------
Nom1 |Pais1 |Tel1 |
Nom2 |Pais2 |Tel2 |
  #8 (permalink)  
Antiguo 04/01/2011, 17:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al insertar datos usando if

hmm... ¿podrías mostrar el HTML de tu formulario?

porque es pésima idea nombrar los <input/> de la forma en que lo haces, ya que acarrea problemas como los que tienes...

la mejor forma de agrupar elementos es usando la notación de array:
Código HTML:
<input name="nombre[]"/> 
de dicho modo, al recibir el formulario lo que tienes son arrays... y pues, son simples de iterar...
Código PHP:
foreach ($_POST['nombre'] as $key => $value)
{
  
$campo $_POST['campo'][$key];
  
// etc...

la relación esta en la clave...

¿o la clave esta en la relación?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 04/01/2011, 19:59
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Problema al insertar datos usando if

Pues uso este:

Código:
<html>
<body>




        <form action="procesar.php" method="POST" >
        <table width="100%">
        <script>
        var cajas=0;
        function agregar_caja()
        {
          var i=0; 
          j=prompt("Ingrese el numero de datos") 
          for (i=1;i<=j;i++) 
          {
          
          document.getElementById("cajas").innerHTML+="<tr> <td><input type=hidden name=Numero_Episodios value='"+new Number(j)+"'> Nombre: <input type=text name='Nombre"+new Number(cajas+1)+"'></td> <td>Pais: <input type=text name='Pais"+new Number(cajas+1)+"'></td> <td>Telefono: <input type=text name='Telefono"+new Number(cajas+1)+"'></td> </tr>"
          cajas=cajas+1
          }
        }


        </script>

        
        
        <div id="cajas"></div>        
        <div align="center"><input type=button onclick="agregar_caja()" value="Agregar Datos"></div>
        </table>

        <input type="submit" align="center" name="Submit" value="Enviar">
        </form>




</body>
</html>
  #10 (permalink)  
Antiguo 05/01/2011, 00:05
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Problema al insertar datos usando if

Intente como los arrays como dices y funciona, pero cuando introdusco otro array me imprime todas la combinaciones de valores, no se que estoy haciendo mal:

Código:
<?php

foreach ( $_POST['Nombres'] as $Nombres ){ 
foreach ( $_POST['Paises'] as $Paises ) {
foreach ( $_POST['Telefonos'] as $Telefonos ) {

echo"$Nombres<br>";
echo"$Paises<br>";
echo"$Telefonos<br>";

}
}
}

?>

Y se supone que deberia imprimir uno de Nombres luego uno de Paises y luego otro de Telefonos, si lo hace, pero despues me muestra mas datos, como evito que muestre las otras combinaciones?
  #11 (permalink)  
Antiguo 05/01/2011, 00:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al insertar datos usando if

lo que sucede es que andas anidando bucles dentro de otros, por ende, se multiplican las ejecuciones....

la idea es obtener los datos en paralelo, basándose del ID, cosa que no haces... en el ejemplo que puse, solo iteramos un array -que puede ser cualquiera- y obtenemos un dato paralelo a partir de otro índice...

si te fijas bien, yo no estoy anidando ningún bucle... solo se trata de usar uno, no mas!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 05/01/2011, 01:36
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Problema al insertar datos usando if

Gracias, intente asi y funciono:

Código:
foreach ($_POST['nombre'] as $key => $value)
{
  $campo1 = $_POST['nombre'][$key];
  $campo2 = $_POST['pais'][$key];
  $campo3 = $_POST['telefono'][$key];



  echo"$campo1";
  echo"$campo2";
  echo"$campo3";

}
Si inserta los datos como queria, pero me quedo una duda, como es que si en el foreach evaluo los datos de $_POST['nombre'] tambien evalua los de $_POST['pais'] y $_POST['telefono']. Y muchas gracias por todo.
  #13 (permalink)  
Antiguo 05/01/2011, 01:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al insertar datos usando if

lo que pasa es que para los demás arreglos no necesitas iterarlos, pues accedes a los elementos relacionados a partir de su índice exacto...

de hecho, los arreglos pueden ser accedidos de forma estática, osea, sin necesidad de iterarlos... la única condición -lógica por supuesto- es saber a lo que vamos usando un índice especifico.... justo así pasa con los demás arreglos...

mientras todos los arreglos tengan la misma cantidad de elementos, con los mismos índices aún con variados valores, todos pueden ser accedidos a través de un mismo índice paralelamente...

se que lo mio no es dar explicaciones, pero espero que se haya entendido el punto!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: Ninguno
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 22:31.