PHP - ¿¿¿POR QUÉ SE INSERTAN GUIONES BAJOS???

 
Vista:

¿¿¿POR QUÉ SE INSERTAN GUIONES BAJOS???

Publicado por musiker (13 intervenciones) el 30/01/2016 14:09:31
Hola a todos.

Estoy haciendo un script para clasificar frases en interrogativas, afirmativas, negativas etc... Pero estoy viendo que tengo un problema. Quería saber por qué se insertan guiones bajos en el campo texto de mi base de datos cuando tomo los valores del formulario y los inserto. Creo que el formulario está bien construido, de hecho, donde muestra los guiones bajos es en el segundo archivo (mostrar.php), al hacer un "echo $key" en el foreach. ¿Alguna idea de por qué puede ser? Lo he revisado a fondo pero no sé el motivo.
Muchas gracias por adelantado.

FORMULARIO.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
include ("conexion.php");
 
 
		//CONSULTA A LA TABLA
 
		$consulta = "SELECT * FROM tablauno";
 
		$resultado=mysql_query($consulta) or die (mysql_error());
 
                //SI HAY RESULTADOS, LOS MUESTRA.
		if (mysql_num_rows($resultado)>0)
		{
			print("Existe al menos un registro ");
 
		echo "<br>";
		while ($row = mysql_fetch_array($resultado)){
		?>
 
		<form method="post" action="mostrar.php">
		<?php
			for($contador=0;$contador<count($row['frases']);$contador++){
 
			}
 
		echo $row['frases']?>
	<input type="radio" name="<?php echo $row['frases'];?>" value="INTERROGATIVAS"><label>INTERROGATIVAS</label><br />
		<input type="radio" name="<?php echo $row['frases'];?>" value="AFIRMATIVAS"><label>AFIRMATIVAS</label><br />
		<input type="radio" name="<?php echo $row['frases'];?>" value="NEGATIVAS"><label>NEGATIVAS</label><br />
 
              <?php
			} // WHILE
		} // IF
		else
		{
			print("NO Existen registros");
		}
 
	<input type="submit" value="Enviar">
	</form>


MOSTRAR.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
include ("conexion.php");
 
foreach ($_POST as $key => $value){
        echo "<br>";
		echo "KEY ES: $key".'<br>';  // ***** AQUÍ YA ES DONDE SE EMPIEZAN A VER LOS GUIONES BAJOS
		echo "VALUE ES: $value".'<br>';
 
			if($value=="AFIRMATIVAS")
			{
 
				$sql = "INSERT INTO tablauno (frase) VALUES ('$key')";
				$sqldos = "DELETE FROM tablados WHERE frase = ('$key')";
 
				mysql_query($sql, $conexion) or die ("*** ERROR EN LA CONSULTA ***: ".mysql_error());
				mysql_query($sqldos, $conexion) or die ("*** ERROR EN LA CONSULTA ***: ".mysql_error());
				echo "<br>";
				echo "SE HA INSERTADO CORRECTAMENTE.";
 
			}
 
			if($value=="NEGATIVAS")
			{
 
				$sql = "INSERT INTO tablauno (frase) VALUES ('$key')";
				$sqldos = "DELETE FROM tablados WHERE frase = ('$key')";
 
				mysql_query($sql, $conexion) or die ("*** ERROR EN LA CONSULTA ***: ".mysql_error());
				mysql_query($sqldos, $conexion) or die ("*** ERROR EN LA CONSULTA ***: ".mysql_error());
				echo "<br>";
				echo "SE HA INSERTADO CORRECTAMENTE.";
 
			}
 
			if($value=="INTERROGATIVAS")
			{
 
				$sql = "INSERT INTO tablauno (frase) VALUES ('$key')";
				$sqldos = "DELETE FROM tablados WHERE frase = ('$key')";
 
				mysql_query($sql, $conexion) or die ("*** ERROR EN LA CONSULTA ***: ".mysql_error());
				mysql_query($sqldos, $conexion) or die ("*** ERROR EN LA CONSULTA ***: ".mysql_error());
				echo "<br>";
				echo "SE HA INSERTADO CORRECTAMENTE.";
 
			}
 
		} //FOREACH
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 Junior

¿¿¿POR QUÉ SE INSERTAN GUIONES BAJOS???

Publicado por Junior (12 intervenciones) el 30/01/2016 14:58:31
Quizás sea algo sencillo. Prueba concatenando las variables con los textos de esta forma.

1
2
3
echo "KEY ES:" .$key".'<br>';  // ***** Saca las variables de los textos

		echo "VALUE ES:" .$value".'<br>';
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

¿¿¿POR QUÉ SE INSERTAN GUIONES BAJOS???

Publicado por musiker (13 intervenciones) el 30/01/2016 15:47:32
Hola Junior, te agradezco la respuesta, pero no ha funcionado. ¿Alguna otra sugerencia?
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 VRM
Val: 152
Ha disminuido su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿¿¿POR QUÉ SE INSERTAN GUIONES BAJOS???

Publicado por VRM (192 intervenciones) el 31/01/2016 10:15:43
Hola:

Cuando se pasa algo por POST, en las claves los espacios se convierten en guiones bajos. Si quieres volver al original prueba esto:

1
2
3
4
5
6
foreach ($_POST as $key => $value){
        echo "<br>";
                $key = str_replace("_"," ",$key);
		echo "KEY ES: $key".'<br>';  // ***** AQUÍ YA ES DONDE SE EMPIEZAN A VER LOS GUIONES BAJOS
		echo "VALUE ES: $value".'<br>';
			if($value=="AFIRMATIVAS")

Recuerda que la variable $key sólo tiene existencia dentro de cada iteración del bucle foreach, así que la variable $_POST queda inalterada.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil

¿¿¿POR QUÉ SE INSERTAN GUIONES BAJOS???

Publicado por musiker (31 intervenciones) el 31/01/2016 12:43:45
Perfectísimo, Víctor!! Muchísimass gracias por la corrección!!
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 VRM
Val: 152
Ha disminuido su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿¿¿POR QUÉ SE INSERTAN GUIONES BAJOS???

Publicado por VRM (192 intervenciones) el 31/01/2016 21:52:24
A mandar.

Saludos de Víctor.-
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