PHP - No setear datos cuando hay error

   
Vista:

No setear datos cuando hay error

Publicado por informatic (13 intervenciones) el 03/06/2017 07:09:06
Hola, tengo un pequeño problema en este formulario, inserto bien las url y todo. pero cuando tengo un error me dice el error y tal pero me setea todos los parametros(url,titulo y texto). No se que hago mal, espero me ayuden

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
<?php
require 'funciones.php';
 
$conexion = conexion('galeria','root','');
 
if (!$conexion) {
	die();
}
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 
		$error = '';
		$url= $_POST['url'];
		$titulo = $_POST['titulo'];
		$texto = $_POST['texto'];
 
		if(!is_validUrl($url)){
			$error .= 'La url no existe o no corresponde';
		}else{
			if(!empty($titulo)){
				$titulo = filter_var($titulo,FILTER_SANITIZE_STRING);
			}else{
				$error .= 'Por favor ingresa un título <br />';
			}
			if(!empty($texto)){
				$texto = filter_var($texto,FILTER_SANITIZE_STRING);
			}else{
				$error .= 'Por favor ingresa un título <br />';
			}
			if(!empty($url)){
 
				$statement = $conexion->prepare('
				INSERT INTO video (titulo,url,texto) 
				VALUES (:titulo, :url, :texto)
			');
				$statement->execute(array(
					':titulo' => $titulo,
					':url' => $url,
					':texto' => $texto
				));
				if(!$error){
					$error .= 'Has ingresado un nuevo video a tu galería';
				}
			}else{
				$error .= 'Por favor ingresa una url<br />';
			}
		}
}
 
require 'views/subir.view.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
<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<link href="https://fonts.googleapis.com/css?family=Slabo+27px" rel="stylesheet"> 
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
	<link rel="stylesheet" href="css/estilos.css">
 
	<title>Galeria</title>
</head>
<body>
	<header>
		<div class="contenedor">
			<h1 class="titulo">Subir Video</h1>
		</div>
	</header>
		<div class="contenedor">
			<form class="formulario" method="post" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
 
				<label for="foto">URL de vídeo</label>
				<input type="text" id="video" name="video" placeholder="http://www.youtube.com/..." value="">
 
				<label for="titulo">Titulo del vídeo</label>
				<input type="text" id="titulo" name="titulo" placeholder="Título del vídeo">
 
				<label for="texto">Descripción</label>
				<textarea name="texto" id="texto" placeholder="Ingresa una descripcion"></textarea>
				<?php if(isset($error)): ?>
					<p class="error"><?php echo $error; ?></p>
				<?php endif ?>
 
				<input type="submit" class="submit" value="Subir Vídeo">
			</form>
		</div>
	<footer>
		<p class="copyright">Galeria creada  </p>
	</footer>
</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
Imágen de perfil de Juan Diego

No setear datos cuando hay error

Publicado por Juan Diego (23 intervenciones) el 06/06/2017 16:30:35
No tienes un campo que llame url en tu formulario, creo es video.
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

No setear datos cuando hay error

Publicado por informatic (13 intervenciones) el 07/06/2017 00:14:35
Ammm sii lo cambie a $url= $_POST['video'];
y si ingresa los datos sin problemas, pero mi duda es que al momento de que ocurra un error, es decir en la validación, ejemplo cuando la url no existe. al momento de ingresar los datos erroneos me sale el mensaje que la url no existe sin problemas pero me setea todos los campos, es decir, el campo de url, texto, y titulo se limpian o setea. Como puedo controlar eso??
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 Juan Diego

No setear datos cuando hay error

Publicado por Juan Diego (23 intervenciones) el 07/06/2017 04:23:52
Cómo llegaste a la conclusión que se estaban asignando en vacío? Cómo le estás haciendo seguimiento?
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 [abZeroX]

No setear datos cuando hay error

Publicado por [abZeroX] (129 intervenciones) el 07/06/2017 05:04:54
Hola, modifique un poco tu código, prueba y nos comentas.

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
<?php
require 'funciones.php';
 
$conexion = conexion('galeria','root','');
 
if (!$conexion) {
	die();
}
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
		$error = '';
		$url= $_POST['url'];
		$titulo = filter_var($_POST['titulo'],FILTER_SANITIZE_STRING);
		$texto = filter_var($_POST['texto'],FILTER_SANITIZE_STRING);
 
 		// Comprueba campos vacios
		if (empty($titulo)) {
			$error .= 'Por favor ingresa un título <br />';
		}
 
		if (empty($texto)) {
			$error .= 'Por favor ingresa una descripción <br />';
		}
 
		if (!empty($url)) {
			if (!is_validUrl($url)) {
				$error .= 'La url no existe o no corresponde';
			}
		} else {
			$error .= 'Por favor ingresa una url<br />';
		}
 
		// Si no hay errores realiza ejecuta la sentencia SQL
		if (!$error) {
			$statement = $conexion->prepare('INSERT INTO video (titulo,url,texto) VALUES (:titulo, :url, :texto)');
			$statement->execute(array(
				':titulo' => $titulo,
				':url' => $url,
				':texto' => $texto
			));
			$error .= 'Has ingresado un nuevo video a tu galería';
		}
}
 
require 'views/subir.view.php';
 
 ?>
<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<link href="https://fonts.googleapis.com/css?family=Slabo+27px" rel="stylesheet"> 
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
	<link rel="stylesheet" href="css/estilos.css">
 
	<title>Galeria</title>
</head>
<body>
	<header>
		<div class="contenedor">
			<h1 class="titulo">Subir Video</h1>
		</div>
	</header>
		<div class="contenedor">
			<form class="formulario" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
				<label for="foto">URL de vídeo</label>
				<input type="text" id="video" name="url" placeholder="http://www.youtube.com/..." value="">
				<label for="titulo">Titulo del vídeo</label>
				<input type="text" id="titulo" name="titulo" placeholder="Título del vídeo">
				<label for="texto">Descripción</label>
				<textarea name="texto" id="texto" placeholder="Ingresa una descripcion"></textarea>
				<?php if(isset($error)): ?>
					<p class="error"><?php echo $error; ?></p>
				<?php endif ?>
				<input type="submit" class="submit" value="Subir Vídeo">
			</form>
		</div>
	<footer>
		<p class="copyright">Galeria creada  </p>
	</footer>
</body>
</html>
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

No setear datos cuando hay error

Publicado por informatic (13 intervenciones) el 08/06/2017 07:33:54
Hola abZeroX, me sigue limpiando los campos si encuentra un error en la validación. Existira otra forma de validación para que no suceda??
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 [abZeroX]

No setear datos cuando hay error

Publicado por [abZeroX] (129 intervenciones) el 08/06/2017 23:34:18
Hola de nuevo, cuando dices campos te refieres a los del form ? de ser así prueba con esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form class="formulario" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
	<label for="foto">URL de vídeo</label>
	<input type="text" id="video" name="url" placeholder="http://www.youtube.com/..."
	value="<?php echo isset($_POST['url']) ? $_POST['url'] : ''; ?>">
 
	<label for="titulo">Titulo del vídeo</label>
	<input type="text" id="titulo" name="titulo" placeholder="Título del vídeo"
	value="<?php echo isset($_POST['titulo']) ? $_POST['titulo'] : ''; ?>">
	<label for="texto">Descripción</label>
	<textarea name="texto" id="texto" placeholder="Ingresa una descripcion"
	value="<?php echo isset($_POST['texto']) ? $_POST['texto'] : ''; ?>"></textarea>
	<?php if(isset($error)): ?>
		<p class="error"><?php echo $error; ?></p>
	<?php endif ?>
	<input type="submit" class="submit" value="Subir Vídeo">
</form>
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