PHP - mostrar texto

 
Vista:
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

mostrar texto

Publicado por Charly (69 intervenciones) el 12/01/2018 19:51:02
Hola, estoy creando una rejilla para manejar personas en una base de datos.
La tengo casi terminada, pero tengo un fallo.
Creo una variable que inicialmente no vale nada: $texto="".
Cuando se realiza la acción asociada a un botón, le pongo una cadena específica, según se haya ejecutado o de algún problema: $texto=cadena.
Cuando llamo a la función donde realiza la acción del botón, muestro su valor: echo $texto.
La acción del botón va bien, pero no me muestra nada de texto debajo del formulario.
Este es el código del fichero nuevo.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
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
<!DOCTYPE html>
<html lang="en">
<head>
	<title>Crear Persona</title>
	<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class='container'>
		<div class='jumbotron'>
			<h1>Crear Persona</h1>
			<p>Introduce todos los datos para crear una persona en la base de datos.</p>
		</div>
		<form name='formulariocrear' action='nuevo.php' method='get'>
		<div class='form-group'>
			<label for='codigo'>Introduce el codigo de la persona:</label>
			<input type='number' class='form-control' placeholder='Introduce el codigo' name='codigo' value="<?php $codigo ?>"><br>
			<label for='nombre'>Introduce el nombre de la persona:</label>
			<input type='text' class='form-control' placeholder='Introduce el nombre' name='nombre' value="<?php $nombre ?>" size=20><br>
		</div>
		<div class='botons-group'>
			<input type='submit' name='crear' value='CREAR'>
			<input type='submit' name='volver' value='VOLVER'>
		</div>
		</form>
	</div>
	<?php
		function conectar(){
			$con=new PDO('mysql:host=localhost;dbname=dam2d','root','');
			$con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
			return $con;
		}
		function desconectar(){
			$con=null;
		}
		conectar();
		$codigo=isset($_GET['codigo']) ? $_GET['codigo'] : '';
		$nombre=isset($_GET['nombre']) ? $_GET['nombre'] : '';
		$texto="";
		function crear(){
			$codigo=$_GET['codigo'];
			$nombre=$_GET['nombre'];
			$esta=false;
			$sql="SELECT * FROM persona WHERE codigo='".$codigo."'";
			foreach(conectar()->query($sql) as $row){
				if($row['codigo']==$codigo){
					$esta=true;
				}
			}
			if($esta==true){
				$texto="Ya existe una persona con el codigo ".$codigo;
			}else{
				try{
					$sentencia=conectar()->prepare("INSERT INTO persona (codigo,nombre) VALUES (:codigo,:nombre)");
					$sentencia->bindParam(':codigo',$codigo);
					$sentencia->bindParam(':nombre',$nombre);
					$codigo=$_GET['codigo'];
					$nombre=$_GET['nombre'];
					$sentencia->execute();
					$texto="Persona creada!";
				}catch(PDOException $e){
					echo $e->getMessage();
				}
			}
		}
		if(isset($_GET['crear'])){
			crear();
			//header('Location:index.php');
			echo $texto;
		}
		if(isset($_GET['volver'])){
			header('Location:index.php');
		}
		desconectar();
	?>
</body>
</html>
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
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

mostrar texto

Publicado por gonzalo (615 intervenciones) el 12/01/2018 21:36:04
desde mi muy particular punto de vista, el problema esta aqui.

1
2
3
4
5
6
7
8
9
$texto=""
function()
{
$texto="ojo";
}
 
x() //llamada a la funcion
 
echo $texto; // imprime nada.

en este caso la variable texto fuera de la funcion tiene una referencia diferente a la variable $texto que esta dentro de la funcion.

tal vez si pasas $texto como referencia lo puedas modificar.

1
2
3
4
5
6
7
8
9
$texto="";
function x(&$Texto)
{
$texto="ojo";
}
 
x($Texto) //llamada a la funcion
 
echo $texto; // deberia imprimir "ojo";

te recomiendo que programes con referencia a objetos, te alivia mucho la carga el codigo y facilita la lectura.

salu2
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 Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

mostrar texto

Publicado por Charly (69 intervenciones) el 13/01/2018 11:42:50
Muchas gracias Gonzalo, me funcionó perfectamente.
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