PHP - Guardar seleccion en base de datos sin submit

 
Vista:
Imágen de perfil de Yerlyn
Val: 11
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por Yerlyn (4 intervenciones) el 04/10/2018 20:35:17
Hola buenas a todos soy nuevo en este foro tengo el siguiente problema
tengo problema para guardar una selección en la base de datos este es mi codigo de seleccion

1
2
3
4
5
<select name="hospi">
    <option value=""></option>
    <option value="xxx">XXX</option>
    <option value="xxx">XXX</option>
</select>
la seleccion la hace perfectamente pero luego yo ejecuto el siguiente codigo para guardar la seleccion en la base de datos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$hospi=$_POST['hospital'];
$globulos=$_POST['globulos'];
$plaquetas=$_POST['plaquetas'];
$plasma=$_POST['plasma'];
$canti1=$_POST['canti1'];
$canti2=$_POST['canti2'];
$canti3=$_POST['canti3'];
$hora=$_POST['hora'];
 
$sql="INSERT INTO pedido VALUES('$hospi','$globulos','$plaquetas','$plasma','$canti1','$canti2','$canti3','$hora')";
$ejecutar=mysql_query($sql);
if (!$ejecutar) {
	echo "hubo un error al cargar los datos";
}
else{
	echo "Datos cargados";
}
 
?>
y alli comienza mi problema no toma la variable de la seleccion para almacenarla en la base de datos
luego utilice el siguiente codigo

1
2
3
4
5
<select name="hospi" onchange='submit();'>
	<option value=""></option>
	<option value="xxx">XXX</option>
	<option value="xxx">XXX</option>
</select>

el siguiente código me produce un error que cuando hago la selección, automáticamente realiza el submit y no me deja terminar de llenar el formulario.

Ahora yo solo quiero llenar el fomulario y que el valor de la seleccion pueda guardarla en la base de datos, mi pregunta seria en si COMO PUEDO GUARDAR EL VALOR DE LA SELECCIÓN EN LA BD sin usar el boton sumit.

dejo el codigo completo PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<div class="pedido">
    <form action="pedido.php" method="POST">
        <select name="hospi">
            <option value=""></option>
            <option value="xxx">XXX</option>
            <option value="xxx">XXX</option>
        </select><br><br>-->
 
        <center>
            <table>
                <tr>
                    <label><input type="checkbox" name="globulos"><h1>Globulos</h1></label>
                    <label><input type="checkbox" name="plaquetas"><h1>Plaquetas</h1></label>
                    <label><input type="checkbox" name="plasma"><h1>Plasma</h1></label>
                    <label><input type="checkbox" name="materiales"><h1>Materiales</h1></label>
                </tr><br><br>
            </table>
        </center><br>
 
 
            <h4>Hora de Solicitud:</h4>
            <center><input type="submit" value="Siguiente"></center><br><br><br>
            <center><a href="acin.php"><input type="submit" value="Salir"></center></a>
    </form>
</div>

este seria el código del proceso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
include("conexion.php");
 
$hospi=$_POST['hospital'];
$globulos=$_POST['globulos'];
$plaquetas=$_POST['plaquetas'];
$plasma=$_POST['plasma'];
$materiales=$_POST['materiales']
$hora=$_POST['hora'];
 
$sql="INSERT INTO pedido VALUES('$hospi','$globulos','$plaquetas','$plasma','materiales','$hora')";
$ejecutar=mysql_query($sql);
if (!$ejecutar) {
	echo "hubo un error al cargar los datos";
}
else{
	echo "Datos cargados";
}
 
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por xve (6935 intervenciones) el 04/10/2018 20:49:21
Hola Yerlin, pero esta linea creo que esta mal:
1
$hospi=$_POST['hospital'];

el campo se llama hospi, por lo que tendria que ser:
1
$hospi=$_POST['hospi'];

coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por Kathyu (905 intervenciones) el 04/10/2018 22:42:04
Siempre es bueno validar que toda la informacion llegue correctamente del formulario

1
2
3
4
// Pseudocodigo
echo '<pre>';
echo $_POST[];
echo '</pre>';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Yerlyn
Val: 11
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por Yerlyn (4 intervenciones) el 05/10/2018 01:57:00
Hola si disculpa esta mal ya la había corregido en el sistema pero no aquí en realidad sería asi

$hospital=$_POST['hospi'] ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por xve (6935 intervenciones) el 05/10/2018 12:39:24
Ok...

Viendo el código, en esta instrucción, te falta hacer referencia a la conexion de la base de datos...
1
$ejecutar=mysql_query($sql,$link);

Que hay dentro del archivo conexion.php?

Puedes añadir esta linea después de:
1
echo "hubo un error al cargar los datos";
que sea:
1
echo mysql_errno($link) . ": " . mysql_error($link);

Recuerda modificar $link por la variable que utilices en tu conexión!!!


tambien, ten en cuenta que las instrucciones mysql_* no funcionan en php7
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Yerlyn
Val: 11
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por Yerlyn (4 intervenciones) el 08/10/2018 16:36:35
también había corregido ese error jajaj, pero sigo teniendo la misma pregunta Como guardo una Selección como valor en una tabla de base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por xve (6935 intervenciones) el 08/10/2018 18:24:44
jajajajaja... mejor que publiques nuevamente tu código!!!!

El checkbox, si no recibe valor la variables, es que no se ha checkeado...
No se que tipo de campo has utilizado en la base de datos para el checkbox, pero yo siempre utilizo un tinyint

1
2
3
4
5
6
$globulos=0;
if(isset($_POST['globulos']))
{
   $globulos=1;
}
INSERT INTO TABLA (...) VALUES (...,$globulos,...)

Espero que me haya sabido explicar... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Yerlyn
Val: 11
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por Yerlyn (4 intervenciones) el 08/10/2018 20:58:32
Voy de nuevo
tengo la siguiente seleccion

<select name"hospi">
<option>hospi1</option>
<option>hospi2</option>
</select>

yo quiero guardar la opcion que el usuario escoja en la base de datos para luego imprimirla por pantalla con otros datos que el usuario llenara pero en si quiero saber como puedo guardar en la BD la opcion que el usuario escoja

no se si me explique claro
gracias y disculpe las molestias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

Guardar seleccion en base de datos sin submit

Publicado por Jes (2 intervenciones) el 09/05/2019 00:18:47
amigo pudiste hacerlo??
tengo un problema similar
1
2
3
4
5
6
7
8
9
10
11
12
<form action="#" class="formulario" id="formulario" name="formulario" method="POST" onclick='envia_form()'>
    <div class="contenedor-inputs">
 
        <div>
            ¿Cómo te atendimos hoy?
        <select id="status" name="opinion[]" onChange="mostrar(this.value);">
            <option value="bien">Bien</option>
            <option value="regular">Regular</option>
            <option value="mal">Mal</option>
         </select>
        </div>
</form>

quiero guardar esto en la base de datos sin el boton de submit, pero no lo he logrado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por Yamil (888 intervenciones) el 09/05/2019 00:36:51
Lo puedes hacer via Ajax pero cual seria el evento que dispara la accion ? Cuando haces Change en el ComboBox (SELECT) ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Guardar seleccion en base de datos sin submit

Publicado por jes (2 intervenciones) el 10/05/2019 02:24:25
no tiene boton de submit por que lo que hace el select es mostrar otros formularios diferentes justo abajo del combobox.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
	$servidor="localhost";
	$usuario="arade";
	$clave="0023566";
	$baseDeDatos="ara_p";
 
	$enlace = mysqli_connect($servidor, $usuario, $clave, $baseDeDatos);
 
	if(!$enlace){
		echo"Error en la conexion con el servidor";
	}
?>
 
<!DOCTYPE html>
<html>
    <head><meta http-equiv="Content-Type" content="text/html; charset=gb18030">
 
    <title>Encuesta</title>
 
            <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
        function mostrar(id) {
                if (id == "bien") {
                        $("#bien").show();
                        $("#regular").hide();
                        $("#mal").hide();
                }
                if (id == "regular") {
                        $("#bien").hide();
                        $("#regular").show();
                        $("#mal").hide();
                }
                if (id == "mal") {
                        $("#bien").hide();
                        $("#regular").hide();
                        $("#mal").show();
                }
 
 
        }
        </script>
 
    </head>
    <body>
 
		<form action="#" name="formulario" method="POST">
			Como te atendimos hoy?
			    <select id="opinion" name="opinion" onChange="mostrar(this.value);">
			        <option value="bien">Bien</option>
			        <option value="regular">Regular</option>
			        <option value="mal">Mal</option>
			     </select>
		</form>
 
 
		<form action="#"  id="bien" name="bien" method="POST" style="display: none;">
 
			<div>
				<input type="checkbox" name="res1" id="res1" value="res1">
				<label>Respuesta 1 bien</label>
            </div>
 
            <div>
				<input type="checkbox" name="res2" id="res2" value="res2">
				<label>Respuesta 2 bien</label>
            </div>
 
            <div>
				<input type="checkbox" name="res3" id="res3" value="res3">
				<label>Respuesta 3 bien</label>
 
			</div>
 
            <input type="text" name="nombre" placeholder="Nombre">
			<input type="submit" class="btn" name="enviar" value="Enviar">
		</form>
 
 
 
		<form action="#"  id="regular" name="regular" method="POST" style="display: none;">
 
            <div class="res1">
                <input type="checkbox" name="res1" id="res1" value="res1">
                <label>Respuesta 1</label>
            </div>
 
            <div>
                <input type="checkbox" name="res2" id="res2" value="res2">
                <label>Respuesta 1</label>
            </div>
 
            <div>
                <input type="checkbox" name="res3" id="res3" value="res3">
                <label>Respuesta 1</label>
            </div>
 
            <input type="text" name="nombre" placeholder="Nombre">
			<input type="submit" class="btn" name="enviar" value="Enviar">
		</form>
 
		<form action="#"  id="mal" name="mal" method="POST" style="display: none;">
 
			<div >
				<input type="checkbox" name="res1" id="res1" value="res1">
				<label>Respuesta 1 mal</label>
            </div>
 
            <div >
				<input type="checkbox" name="res2" id="res2" value="res2">
				<label>Respuesta 2 mal</label>
            </div>
 
            <div >
				<input type="checkbox" name="res3" id="res3" value="res3">
				<label>Respuesta 3 mal</label>
			</div>
 
			<input type="text" name="nombre" placeholder="Nombre">
			<input type="submit" class="btn" name="enviar" value="Enviar">
		</form>
 
 
    </body>
</html>
 
 
<?php
if(isset($_POST['enviar'])){
    $opinion=$_POST["opinion"];
    $res1=$_POST["res1"];
    $res2=$_POST["res2"];
    $res3=$_POST["res3"];
    $nombre =$_POST["nombre"];
 
 
 
    $insertarDatos = "INSERT INThttps://www.lawebdelprogramador.com/programadores/cuenta.phpO datos2 VALUES('$opinion','$res1','$res2','$res3','$nombre')";
 
    $ejecutarInsertar = mysqli_query($enlace, $insertarDatos);
 
    if(!$ejecutarInsertar){
        echo "Error En la linea de sql";
    }
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por italo_pm (193 intervenciones) el 10/05/2019 05:28:34
Hola

una manera de hacer lo que necesitas es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<?php
/*
  $servidor="localhost";
  $usuario="arade";
  $clave="0023566";
  $baseDeDatos="ara_p";

  $enlace = mysqli_connect($servidor, $usuario, $clave, $baseDeDatos);

  if(!$enlace) {
  echo"Error en la conexion con el servidor";
  }
*/
?>
 
<title>Encuesta</title>
 
<script src="//code.jquery.com/jquery-3.3.1.min.js"></script>
 
<!-- select html encuesta -->
<script type="text/javascript">
$(document).ready(function () {
 
  $("#bien").hide();
  $("#regular").hide();
  $("#mal").hide();
 
 
  $('#opinion').on('change', function() {
 
    var respuesta_value = this.value; //value select
 
    //hidden para conservar el id que pasa al name='opinion' para el insert.
    var hidden_opinion = "<input type='hidden' name='opinion' value='" + respuesta_value+ "'>";
    $('#' + respuesta_value).append(hidden_opinion)
 
 
 
    if (respuesta_value == "bien") {
 
      console.log('val: ' + respuesta_value);
 
      $("#bien").show();
      $("#regular").hide();
      $("#mal").hide();
 
    } else if (respuesta_value == "regular") {
 
      console.log('val: ' + respuesta_value);
 
      $("#bien").hide();
      $("#regular").show();
      $("#mal").hide();
 
    } else if (respuesta_value == "mal") {
 
      console.log('val: ' + respuesta_value);
 
      $("#bien").hide();
      $("#regular").hide();
      $("#mal").show();
 
    }
 
  });
 
 
});
</script>
 
<!-- form pregunta -->
<!-- <form action="" name="formulario" method="POST"> -->
  Como te atendimos hoy?
  <select id="opinion" name="opinion">
    <option value="">-- Selecciona respuesta --</option>
    <option value="bien">Bien</option>
    <option value="regular">Regular</option>
    <option value="mal">Mal</option>
  </select>
 
<!-- </form> -->
 
<!-- form bien -->
<form action="" id="bien" name="bien" method="POST">
 
  <div>
    <input type="checkbox" name="res1" value="res1">
    <label>Respuesta 1 bien</label>
  </div>
 
  <div>
    <input type="checkbox" name="res2" value="res2">
    <label>Respuesta 2 bien</label>
  </div>
 
  <div>
    <input type="checkbox" name="res3" value="res3">
    <label>Respuesta 3 bien</label>
 
  </div>
 
  <input type="text" name="nombre" placeholder="Nombre">
  <input type="submit" class="btn" name="enviar" value="Enviar">
 
</form>
 
<!-- form regular -->
<form action="" id="regular" name="regular" method="POST">
 
  <div class="res1">
    <input type="checkbox" name="res1" value="res1">
    <label>Respuesta 1 regular</label>
  </div>
 
  <div>
    <input type="checkbox" name="res2" value="res2">
    <label>Respuesta 2 regular</label>
  </div>
 
  <div>
    <input type="checkbox" name="res3" value="res3">
    <label>Respuesta 3 regular</label>
 
  </div>
 
  <input type="text" name="nombre" placeholder="Nombre">
  <input type="submit" class="btn" name="enviar" value="Enviar">
 
</form>
 
<!-- form mal -->
<form action="" id="mal" name="mal" method="POST">
 
  <div>
    <input type="checkbox" name="res1" value="res1">
    <label>Respuesta 1 mal</label>
  </div>
 
  <div>
    <input type="checkbox" name="res2" value="res2">
    <label>Respuesta 2 mal</label>
  </div>
 
  <div>
    <input type="checkbox" name="res3" value="res3">
    <label>Respuesta 3 mal</label>
 
  </div>
 
  <input type="text" name="nombre" placeholder="Nombre">
  <input type="submit" class="btn" name="enviar" value="Enviar">
 
</form>
 
 
<?php
 
  if(isset($_POST['enviar'])) {
 
    $opinion = $_POST["opinion"];
    $res1    = $_POST["res1"];
    $res2    = $_POST["res2"];
    $res3    = $_POST["res3"];
    $nombre  = $_POST["nombre"];
 
    $insertarDatos = "DATOS - opinion: " . $opinion. " res1: " . $res1. " res2: " . $res2 . " res3: " . $res3. " nombre: " .$nombre;
 
    echo $insertarDatos;
 
    /*
    $insertarDatos = "INSERT INTO datos2 VALUES('$opinion','$res1','$res2','$res3','$nombre')";

    $ejecutarInsertar = mysqli_query($enlace, $insertarDatos);

    if(!$ejecutarInsertar) {
      echo "Error En la linea de sql";
    }
    */
 
  }
?>

pero el problema seria que deberas de marcar todos los checkbox, ya que de otra manera te dara error de variable no existente.

para eso, los checkbox deberan ser enviados como array name='res[]' recibirlos y con un loop extreer los datos.

y/o con un isset si es que no existe crearla vacia, pero ya dependera como tienes tambien definido tu database....

por otra parte, para no repetir 3 veces lo mismos forms, puedes hacer un solo append en 3 div distintos ya que los nombres del name de los inputs son los mismos. (asi como en el hidden)

salud2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por Mauro (1036 intervenciones) el 10/05/2019 15:56:03
Yo sugeriría, más allá del problema específico, no tener todo en un solo archivo... en general es una buena práctica separar lo que es puramente presentación (html, css, js) y lo que es acceso a bases de datos.

Por otro lado, es preferible utilizar PDO en lugar de mysqli_* (De esta forma es más fácil migrar de motor de db llegado el caso y además se trabaja usando objetos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar seleccion en base de datos sin submit

Publicado por italo_pm (193 intervenciones) el 10/05/2019 22:13:00
Hola, claro que es buena practica separar los files, dependiendo del tipo etc etc etc, lo mismo con mysql a mysqli o pdo, pero en estos ejemplos y dada la noviciedad de los usarios que preguntan y de la forma en como preguntan, para no confundirlos prefiero responder en base a sus requerimientos específicos. Aun asi todo consejo es bueno para quien este empezando los tengan en cuenta.

salud2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar