Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Si mi select es igual a 0 no insertar

Estas en el tema de Si mi select es igual a 0 no insertar en el foro de PHP en Foros del Web. Hola tengo 3 selects y tres inputs... algo asi: Código HTML: <select name= "uno" onClick= "document.getElementById('input1').value=this.value;" > <option value= "0" > Elige una opción </option> ...
  #1 (permalink)  
Antiguo 28/02/2014, 10:12
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Si mi select es igual a 0 no insertar

Hola tengo 3 selects y tres inputs...
algo asi:
Código HTML:
<select name="uno" onClick="document.getElementById('input1').value=this.value;" >
 <option value="0">Elige una opción</option>
...
</select>

<input type="text" name="input1" id="input1 value=""  />
<input type="text" name="input01" id="input01 value=""  />

//DOS

<select name="dos" onClick="document.getElementById('input2').value=this.value;" >
 <option value="0">Elige una opción</option>
...
</select>

<input type="text" name="input2" id="input2 value=""  />
<input type="text" name="input02" id="input02 value=""  />

//TRES

<select name="tres" onClick="document.getElementById('input3').value=this.value;" >
 <option value="0">Elige una opción</option>
...
</select>

<input type="text" name="input3" id="input3 value=""  />
<input type="text" name="input03" id="input03 value=""  /> 
Y hago un insert de todos estos elemento... el detalle es que el usuario puede o no elegir todos los selects... puede eligir el uno y/o dos y/o tres...
quisiera saber si es posible solo mandar a insertar solo el o los seleccionados...
  #2 (permalink)  
Antiguo 28/02/2014, 11:40
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Si mi select es igual a 0 no insertar

Hola Briss.
Explica mejor lo que quieres hacer y miro si te puedo ayudar
  #3 (permalink)  
Antiguo 28/02/2014, 11:55
Avatar de xpapachox  
Fecha de Ingreso: junio-2011
Mensajes: 77
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

Seria más facil si a cada select le pones un nombre con un identificador, algo asi.

Select 1-> name='select1'
Select 2-> name='select2'.. ETC.


Supongamos que tienes 3 selects.
En PHP hacemos esto.

Código PHP:
//Aca hacemos 3 recorridos, y vamos recuperando los valores por cada select, y preguntamos si el valor es "0".
for($i=1;$i<=3;$i++){
    
$valor_select $_POST["select$i"];

   if(
$valor_select==0){
    break;
   
   }else{       
    
//INSERTAR DATOS O LO QUE SEA 

    //Si quiers recuperar los INPUTS, por ejemplo para el select 3
    
$input_a $_POST['input$i']
    
$input_b $_POST['input0$i']

   
//HACER LO QUE SEA V2.

   
}


:P
  #4 (permalink)  
Antiguo 28/02/2014, 13:32
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

Cita:
Iniciado por xpapachox Ver Mensaje
Seria más facil si a cada select le pones un nombre con un identificador, algo asi.

Select 1-> name='select1'
Select 2-> name='select2'.. ETC.


Supongamos que tienes 3 selects.
En PHP hacemos esto.

Código PHP:
//Aca hacemos 3 recorridos, y vamos recuperando los valores por cada select, y preguntamos si el valor es "0".
for($i=1;$i<=3;$i++){
    
$valor_select $_POST["select$i"];

   if(
$valor_select==0){
    break;
   
   }else{       
    
//INSERTAR DATOS O LO QUE SEA 

    //Si quiers recuperar los INPUTS, por ejemplo para el select 3
    
$input_a $_POST['input$i']
    
$input_b $_POST['input0$i']

   
//HACER LO QUE SEA V2.

   
}


:P
Gracias de hecho es asi cada select tiene un nombre diferente pruebo lo q me dices y posteo... gracias
  #5 (permalink)  
Antiguo 28/02/2014, 14:46
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

hice esto

Código HTML:
<form action="registrarmultiple.php" method="post"  name="form1" id="form1" enctype="multipart/form-data">
  
   <td colspan="7" width="196" height="24" border="0"  alt=""/><select name="selec1" id="select1"  style="width:195px"  class="select" >
 <option value="0">Elige una opción</option>
<?php   

 
  ...
?>  
        </select>
        
        <input type="text" name="caja1" id="caja1" size="2" maxlength="25" value=""/>
          
          

   
  <select name="select2" id="select2"  style="width:188px"  class="select" >
 <option value="0">Elige una opción</option>
<?php   

..
?>  
        </select>
        
        <input type="text" name="caja2" id="caja2" size="2" maxlength="25" value=""/>
          
           
  
    <select name="select3" id="select3"  style="width:184px"  class="select" >
 <option value="0">Elige una opción</option>
<?php   

...
?>  
        </select>
        
        <input type="text" name="caja3" id="caja3" size="2" maxlength="25" value=""/>

     <input type="image" width="87" height="19" border="0"  alt="" />
  <input type="hidden" name="MM_insert" value="form1" /></form> 
y asi intento insertar pero no he logrado hacerlo no me manda ningun error pero al ir a mi tabla no hay nada

Código PHP:
<?php require_once('connection.php');

for(
$i=1;$i<=3;$i++){ 
    
$valor_select $_POST["select$i"]; 

   if(
$valor_select==0){ 
    break; 
    
   }else{        
    
//INSERTAR DATOS O LO QUE SEA  
//ACA TENGO DUDAS DEBO HACER ESTO PARA SELECT2 Y 3 ENTONCES??? (SOLO LA CONSULTA)
    
$s1=$_POST['select1'];
$c1=$_POST['caja'];

$s2=$_POST['select2'];
$c2=$_POST['caja2'];

$s3=$_POST['select3'];
$c3=$_POST['caja3'];
mysql_select_db($database_connection$connection);
$update=mysql_query("INSERT INTO probando (seleccion,texto)
VALUES
('$select1','$caja1')"
);




}  
header("location: Index.htm");
?>
  #6 (permalink)  
Antiguo 28/02/2014, 15:33
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 10 años, 10 meses
Puntos: 32
Respuesta: Si mi select es igual a 0 no insertar

creo q no entendiste lo que dijo xpapachox XD
Se referia a en este orden

Código PHP:
Ver original
  1. <?php require_once('connection.php');
  2.  
  3. mysql_select_db($database_connection, $connection);
  4. for($i=1;$i<=3;$i++){
  5.     $valor_select = $_POST["select$i"];
  6.    if($valor_select==0){
  7.     break;
  8.    }else{  
  9.    $input_a = $_POST['input$i']
  10.    $input_b = $_POST['input0$i']
  11. $update=mysql_query("INSERT INTO probando (seleccion,texto) VALUES ('$input_a','$input_b')");
  12.  }      
  13.  
  14. header("location: Index.htm");
  #7 (permalink)  
Antiguo 28/02/2014, 15:53
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

Cita:
Iniciado por andresgarciadev Ver Mensaje
creo q no entendiste lo que dijo xpapachox XD
Se referia a en este orden

Código PHP:
Ver original
  1. <?php require_once('connection.php');
  2.  
  3. mysql_select_db($database_connection, $connection);
  4. for($i=1;$i<=3;$i++){
  5.     $valor_select = $_POST["select$i"];
  6.    if($valor_select==0){
  7.     break;
  8.    }else{  
  9.    $input_a = $_POST['input$i']
  10.    $input_b = $_POST['input0$i']
  11. $update=mysql_query("INSERT INTO probando (seleccion,texto) VALUES ('$input_a','$input_b')");
  12.  }      
  13.  
  14. header("location: Index.htm");
Sigue sin insertar nada


he puesto el codigo de manera tradicional y si inserta... el detalle es q dentro del for no lo hace

Última edición por Briss; 28/02/2014 a las 16:29 Razón: texto
  #8 (permalink)  
Antiguo 28/02/2014, 17:10
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

mis selects tienen que tener el mismo nombre???? porque yo tengo distintos ya que asi lo requiero , pero supongo q el for es para recorrer con el mismo nombre por favor indiquenme si estoy mal????
  #9 (permalink)  
Antiguo 01/03/2014, 13:14
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Si mi select es igual a 0 no insertar

Cita:
Iniciado por Briss Ver Mensaje
mis selects tienen que tener el mismo nombre???? porque yo tengo distintos ya que asi lo requiero , pero supongo q el for es para recorrer con el mismo nombre por favor indiquenme si estoy mal????
Briss te explico un poco el codigo que te dieron
en la linea que pones
$valor_select = $_POST["select$i"];
aqui el nombre del select sera select$i, donde $i sera cambiado por el valor de $i que tenga en el bucle for, que en este caso sera 1,2 o 3 quedando de la siguiente forma
select1
select2
select3

--Nota--
Sin desmerecer a los consejos que te han dado, yo no lo haría así.
Lo que haría seria recorrer el array $_POST con un foreach
y actuar en consecuencia dependiendo del valor que tenga.

Otra cosa que debes de tener en cuenta, es que lo que haces es un update, y si el valor no existe en la base de datos no podrá actualizarlo.
Una forma de solucionar esto seria comprobando si existe, si existe lanzar la sentencia sql para actualizar y si no existe lanzar una sentencia de inserción.

Aqui te dejo un poco de codigo
Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * conectamos a la base de datos con la clase mysqli para evitar
  4.  * funciones obsoletas de php
  5.  */
  6.  
  7. $mysql = new mysqli('servidor', 'usuario', 'password', 'nombredb');
  8. if($mysql->error){
  9.     echo 'Se produjo un error al conectar a la base de datos.<br />',
  10.          'compruebe los parametros de conexion';
  11.     exit(0);
  12. }
  13. /**
  14.  * Si llegamos aqui es que la conexion a sido exitosa
  15.  * y procedemos a recorrer los datos introducidos
  16.  */
  17. foreach ( $_POST as $nombre => $valor ) {
  18.     /**
  19.      * Procesamos solo las variables que empiezan por select y que no tienen
  20.      * un valor 0
  21.      */
  22.     if( substr( $nombre, 0, 6 ) == 'select' && $valor != 0){
  23.         /**
  24.          * Creamos el nombre de la variable de la caja
  25.          */
  26.         $nameValue = str_replace('select', 'caja', $nombre);
  27.         /**
  28.          * Comprobamos si el valor existe
  29.          */
  30.         $exist = $mysql->query('SELECT seleccion FROM probando WHERE seleccion=\''.$valor.'\'');
  31.         /**
  32.          * Si existe lo actualizamos y si no lo introducimos
  33.          */
  34.         if(mysqli_num_rows($exist) > 0){
  35.             $mysql->query('INSERT INTO probando (seleccion,texto)
  36.                 VALUES (\''.$valor.'\',\''.$_POST[$nameValue].'\')');
  37.         }else{
  38.             $mysql->query('UPDATE probando SET texto=\''.$_POST[$nameValue].'\' WHERE seleccion=\''.$valor.'\'');
  39.         }
  40.         /**
  41.          * borramos la variable $exist y liberamos la memoria de resultados de mysqli
  42.          */
  43.         unset($exist);
  44.         mysqli_free_result($mysql);
  45.     }
  46. }
  47. /**
  48.  * Cerramos la conexion de la db
  49.  */
  50. mysql_close($mysql);

Última edición por Dalam; 01/03/2014 a las 14:00
  #10 (permalink)  
Antiguo 01/03/2014, 14:37
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

Gracias Dalam checo lo que me indicas y no voy hacer un update tengo que hacer un insert... tengo los 3 select y bajo cada select inputs.... estos inputs depende del valor del select es decir sino elijo nada... no tendré ningun valor en los inputs... por eso busco la manera de que si el usuario no "elige nada" no inserter en esos selects....

Checo lo q me indicas y comento :)
  #11 (permalink)  
Antiguo 01/03/2014, 15:45
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Si mi select es igual a 0 no insertar

Podrias hacerlo mas facilmente con ajax y el evento onChange. De tal forma que no muestres los input desde un principio, sino creas un div con un id y si se cambia el valor del select que muestre el input con el valor que deba de tener.
De este modo no te haria falta ni el boton enviar, puesto que los valores van siendo enviados al mismo tiempo que se introducen
  #12 (permalink)  
Antiguo 01/03/2014, 17:09
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

Cita:
Iniciado por Dalam Ver Mensaje
Podrias hacerlo mas facilmente con ajax y el evento onChange. De tal forma que no muestres los input desde un principio, sino creas un div con un id y si se cambia el valor del select que muestre el input con el valor que deba de tener.
De este modo no te haria falta ni el boton enviar, puesto que los valores van siendo enviados al mismo tiempo que se introducen
Gracias Dalam pues estoy tratando de hacerlo con php porque e me hace mas sencillo insertar a mi base de datos... probe lo q me pusiste arriba pero no logro insertar nada .... no me marca ningun error

una pregunta crees q pueda funciona hacer un if
si mi select1 es =0 no hacer nada en otro caso inserto...
y asi con el select2 y select3????
  #13 (permalink)  
Antiguo 01/03/2014, 17:30
 
Fecha de Ingreso: octubre-2012
Mensajes: 135
Antigüedad: 11 años, 6 meses
Puntos: 8
Respuesta: Si mi select es igual a 0 no insertar

Hola Briss, revisando el html, veo que el primer select se llama selec1 y el resto select2 y select3, añade la t en el primero ^^
  #14 (permalink)  
Antiguo 01/03/2014, 17:44
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

Cita:
Iniciado por botxii Ver Mensaje
Hola Briss, revisando el html, veo que el primer select se llama selec1 y el resto select2 y select3, añade la t en el primero ^^
xD tenias razon ahora si insertar pero mis campos quedan vacios... solo el id se inserta porque es autoinvremental

Última edición por Briss; 01/03/2014 a las 17:51
  #15 (permalink)  
Antiguo 01/03/2014, 18:00
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

DALAM gracias tenia un error con lo que me sugeriste ha quedado perfecto gracias :)

una ultima cosa ojala puedas explicarme esta linea
if( substr( $nombre, 0, 6 ) == 'select' && $valor != 0){

substr es para obtener parte de una cadena hasta donde he leido aca que función hace????

Última edición por Briss; 01/03/2014 a las 18:09
  #16 (permalink)  
Antiguo 01/03/2014, 18:25
 
Fecha de Ingreso: octubre-2012
Mensajes: 135
Antigüedad: 11 años, 6 meses
Puntos: 8
Respuesta: Si mi select es igual a 0 no insertar

Te contesto yo jajaja

como la variable $_POST, tiene los valores de caja y select, solo quieres procesar los que empiecen por select, así que coges los 6 primeros caracteres (del 0 al 6) y compruebas que es = a select. Si ese select no está seleccionado vale 0, así que además para poder ejecutar el código de dentro del if, el valor tiene que ser diferente a 1.
  #17 (permalink)  
Antiguo 01/03/2014, 18:29
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Si mi select es igual a 0 no insertar

Cita:
Iniciado por botxii Ver Mensaje
Te contesto yo jajaja

como la variable $_POST, tiene los valores de caja y select, solo quieres procesar los que empiecen por select, así que coges los 6 primeros caracteres (del 0 al 6) y compruebas que es = a select. Si ese select no está seleccionado vale 0, así que además para poder ejecutar el código de dentro del if, el valor tiene que ser diferente a 1.
Gracias botxii
saludos cordiales

Etiquetas: igual, select
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:49.