Mantenimiento de un fichero


#1

Hola, he subido al servidor una aplicación que hace el mantenimiento de una tabla de usuarios. Solamente se introduce el nombre y el apellido. Se ve inicialmente una tabla con estos datos y funciona las altas, bajas y modificaciones. Se conecta bien a la base de datos en Mysql. Pero no se muestra la página inicial con la tabla cuando se realizan las operaciones. Parece que se bloquea esa pagina inicial por algún motivo. Creo que tiene que ver con la seguridad pero no se exactamente que hay que hacer para superar el problema.

Agradecería comentarios,
Josean.


#2

Nos compartes el código?


#3
Listado de Registros <?php /* VIEW.PHP Muestra en pantalla todos los datos de la tabla "players" */ // conectamos a la base de datos include('connect-db.php'); // obtenemos los resultados de la base de datos mediante la consulta $result = mysqli_query($connection,"SELECT * FROM players") or die(mysqli_error()); /* Visualizamos los datos en una tabla Primero mostramos los links necesarios para ver sin paginar o paginados. El parámetro ?page, nos indicará al tener valor 1 que es primera página de resultados posibles. */ echo "

Ver todos | Ver paginados

"; echo ""; echo ""; //bucle para extraer los resultados de la base de datos //los visualiza en el interior de la tabla while($row = mysqli_fetch_array( $result )) { // salida de contenidos de cada columna en una fila de la tabla echo ""; echo ''; echo ''; /* La funcion utf8_encode sirve para trabajar con ñ y acentos */ echo ''; echo ''; echo ''; echo ""; } // terminamos la tabla echo "
ID Nombre Apellido
' . $row['id'] . '' . $row['nombre'] . '' . $row['apellido'] . 'EditarEliminar
"; /* En la parte final de la página, mostramos un link para añadir un nuevo registro*/ ?>

Añadir un nuevo registro


<?php /* DELETE.PHP Elimina una entrada específica de la tabla "players" */ // conectar a la base de datos include('connect-db.php'); /*comprobamos si la variable "id" está configurada en la URL, y comprobamos que es válida */ if (isset($_GET['id']) && is_numeric($_GET['id'])) { // obtener el valor de ID mediante el método GET $id = $_GET['id']; // eliminamos la entrada $result = mysqli_query($connection,"DELETE FROM players WHERE id=$id") or die(mysqli_error()); // redirigimos de vuelta a la página de vista principal header("Location: view.php"); } else /* Si el ID no está configurado, o no es válido, volvemos a la página principal*/ { header("Location: view.php"); } ?>
<?php /* NEW.PHP Permite a los usuarios crear una nueva entrada en la base de datos */ // crear el nuevo formulario de nuevo registro function renderForm($nombre, $apellido, $error) { ?> Nuevo Registro <?php // Si hay errores, los muestra en pantalla if ($error != '') {
  echo '<div style="padding:4px; border:1px solid red;color:red;">'.$error.'</div>';

}
?>

Nombre: *
Apellido: *

* Requerido

<?php } // conectar a la base de datos include('connect-db.php'); // Comprueba si el formulario ha sido enviado. // Si se ha enviado, comienza el proceso el formulario y guarda los datos en la DB if (isset($_POST['submit'])) { // Obtenemos los datos del formulario, asegurándonos que son válidos. $nombre=mysqli_real_escape_string($connection,htmlspecialchars($_POST['nombre'])); $apellido =mysqli_real_escape_string($connection,htmlspecialchars($_POST['apellido'])); // Comprueba que ambos campos han sido introducidos if ($nombre == '' || $apellido == '') { // Genera el mensaje de error $error = 'ERROR: Por favor, introduce todos los campos requeridos.!'; // Si ningún campo está en blanco, muestra el formulario otra vez renderForm($nombre, $apellido, $error); } else { // guardamos los datos en la base de datos mysqli_query($connection,"INSERT players SET nombre='$nombre', apellido='$apellido'") or die(mysqli_error()); /* Una vez que han sido guardados, redirigimos a la página de vista principal*/ header("Location: view.php"); } } else // Si el formulario no han sido enviado, muestra el formulario { renderForm('','',''); } ?> ------------------------------------------------------------------------------------------------------------------ <?php /* EDIT.PHP Permite a los usuarios editar una entrada específica de la base de datos */ /* Crea el formulario para editar el registro desde este formulario, que es usado en múltiples ocasiones en este fichero, se convierte en una función que podemos volver a usar fácilmente */ function renderForm($id, $nombre, $apellido, $error) { ?> Editar Registro <?php // si hay errores, nos los muestra en pantalla if ($error != '') { echo '
' .$error.'
'; } ?>

ID: <?php echo $id; ?>

Nombre: *
Apellido: *

* Requerido

<?php } // conectamos a la base de datos include('connect-db.php'); //comprueba si el formulario ha sido enviado. Si es correcto, procesa el formulario y guarda los datos en la BD. if (isset($_POST['submit'])) { //confirma que el "ID" recibido es un valor válida antes de obtener los datos del formulario if (is_numeric($_POST['id'])) { // obtiene los datos del formulario, asegurándonos que son válidos $id = $_POST['id']; $nombre=mysqli_real_escape_string($connection,htmlspecialchars($_POST['nombre'])); $apellido=mysqli_real_escape_string($connection,htmlspecialchars($_POST['apellido'])); // comprobamos que el nombre y apellidos tienen algún valor /*} else {*/ // guardamos los datos en la base de datos mysqli_query($connection,"UPDATE players SET nombre='$nombre',apellido='$apellido' WHERE id='$id'") or die(mysqli_error()); //una vez guardados, redirigimos a la página principal header("Location: view.php");

//}
}
else
{
// Si el valor de “id” no es válidos, mostramos un mensaje de error
echo ‘Error!’;
}
}
else
/* Si el formulario no ha sido enviado, obtenemos los datos del
formulario desde la base de datos y visualizamos el formulario*/
{
/* Obtenemos el “id” desde la URL (si existe), asegurándonos
que es válido comprobando que sea numérico o mayor que 0*/
if (isset($_GET[‘id’]) && is_numeric($_GET[‘id’]) && $_GET[‘id’]

{
// consulta a la base de datos
$id = $_GET[‘id’];
$result = mysqli_query($connection,“SELECT * FROM players WHERE id=$id”)or die(mysqli_error());
$row = mysqli_fetch_array($result);
// comprueba que el “id” coincide con una fila en la base de datos
if($row)
{
// obtenemos datos desde la bd
$nombre = $row[‘nombre’];
$apellido = $row[‘apellido’];
// mostramos el formulario
renderForm($id, $nombre, $apellido, ‘’);
}
else
// si no hay resultados, lo indicamos

{
echo “No hay resultados!”;
}
}
else
/* Si el “ID” de la URL no es válido, o si no hay un valor de “id”,
mostramos un error*/
{
echo ‘Error!’;
}
}
?>


#4

Ha sido un intento de envío de código. Está claro que no se como se envía. Así que si me dais alguna instrucción para hacerlo lo agradecería. No se pueden subir ficheros php. ¿Como hay que hacerlo? Al hacer copia y pega sale sin formatear.

Gracias.


#5

Bueno, sigo haciendo pruebas y no se como compartir el código, no consigo que se formatee y se pueda leer el código correctamente. He visto otros mensajes en los que se comparte código pero no consigo hacer lo mismo. Agradecería sugerencias. Decir que en mi servidor local funciona bien, donde falla en webhost.

Gracias.
Josean.


#6

puedes usar una aplicacion como https://www.cleancss.com/html-beautify/ para postear el código en cuestión


#7
Listado de Registros <?php /* VIEW.PHP Muestra en pantalla todos los datos de la tabla "players" */ // conectamos a la base de datos include('connect-db.php'); // obtenemos los resultados de la base de datos mediante la consulta $result = mysqli_query($connection,"SELECT * FROM players") or die(mysqli_error()); /* Visualizamos los datos en una tabla Primero mostramos los links necesarios para ver sin paginar o paginados. El parámetro ?page, nos indicará al tener valor 1 que es primera página de resultados posibles. */ echo "

Ver todos | Ver paginados

"; echo ""; echo ""; //bucle para extraer los resultados de la base de datos //los visualiza en el interior de la tabla while($row = mysqli_fetch_array( $result )) { // salida de contenidos de cada columna en una fila de la tabla echo ""; echo ''; echo ''; /* La funcion utf8_encode sirve para trabajar con ñ y acentos */ echo ''; echo ''; echo ''; echo ""; } // terminamos la tabla echo "
ID Nombre Apellido
' . $row['id'] . '' . $row['nombre'] . '' . $row['apellido'] . 'EditarEliminar
"; /* En la parte final de la página, mostramos un link para añadir un nuevo registro*/ ?>

Añadir un nuevo registro


#8
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
> "http://www.w3.org/TR/html4/strict.dtd">
> <html>
> 
> <head>
>     <title>Listado de Registros</title>
> </head>
> 
> <body>
>     <?php
> /*
> VIEW.PHP
> Muestra en pantalla todos los datos de la tabla "players"
> */
> // conectamos a la base de datos
> include('connect-db.php');
> // obtenemos los resultados de la base de datos mediante la consulta
> $result = mysqli_query($connection,"SELECT * FROM players") or die(mysqli_error());
> /* Visualizamos los datos en una tabla
> Primero mostramos los links necesarios para ver sin paginar o
> paginados. El parámetro ?page, nos indicará al tener valor 1 que es
> primera página de resultados posibles.
> */
> echo "<p><b>Ver todos</b> | <a href='viewpaginated.php?page=1'>Ver paginados</a></p>";
> echo "<table border='1' cellpadding='10'>";
> echo "<tr> <th>ID</th> <th>Nombre</th> <th>Apellido</th> <th></th><th></th></tr>";
> //bucle para extraer los resultados de la base de datos
> //los visualiza en el interior de la tabla
> while($row = mysqli_fetch_array( $result ))
> {
> // salida de contenidos de cada columna en una fila de la tabla
> echo "<tr>";
> echo '<td>' . $row['id'] . '</td>';
> echo '<td>' . $row['nombre'] . '</td>';
> /* La funcion utf8_encode sirve para trabajar con ñ y acentos */
> echo '<td>' . $row['apellido'] . '</td>';
> echo '<td><a href="edit.php?id=' . $row['id'] . '">Editar</a></td>';
> echo '<td><a href="delete.php?id=' . $row['id'] . '">Eliminar</a></td>';
> echo "</tr>";
> }
> // terminamos la tabla
> echo "</table>";
> /* En la parte final de la página, mostramos un link para añadir un
> nuevo registro*/
> ?>
>         <p><a href="new.php">Añadir un nuevo registro</a></p>
> </body>
> 
> </html>

#9

Bueno, parece que consigo enviar el código de mi aplicación. Este es el primer fichero que se muestra en la web. Se llama view.php. Por cierto, envío la web completa por si alguien quiere probar. Se puede borrar y crear usuarios:

https://sergeservicios.000webhostapp.com/view.php

Podéis trastear si quereis, son solo datos de prueba.

Os envío también el fichero “edit.php” que como su nombre indica, sirve para editar registros. Cuando pongo en marcha la web en mi servidor local, después de editar se muestra la página view.php pero en webhost no ocurre eso. A ver si alguen me puede sugerir que está pasando.

Gracias.


#10
<?php
/*
EDIT.PHP
Permite a los usuarios editar una entrada específica de la base
de datos
*/
/* Crea el formulario para editar el registro desde este
formulario, que es usado en múltiples ocasiones en este fichero,
se convierte en una función que podemos volver a usar
fácilmente
*/
function renderForm($id, $nombre, $apellido, $error)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Editar Registro</title>
</head>
<body>
<?php
// si hay errores, nos los muestra en pantalla
if ($error != '')
{
echo '<div style="padding:4px; border:1px solid #85f0ff; color:#436cff;">' .$error.'</div>';
}
?>
<form action="" method="post">
<input type="hidden" name="id" value="<?php echo $id; ?>"/>
<div>
<p><strong>ID:</strong> <?php echo $id; ?></p>
<strong>Nombre: *</strong> <input type="text" name="nombre" value="<?php echo $nombre; ?>"/><br/>
<strong>Apellido: *</strong> <input type="text" name="apellido" value="<?php echo $apellido; ?>"/><br/>

<p>* Requerido</p>
<input type="submit" name="submit" value="Submit">
</div>
</form>
</body>
</html>
<?php
}
// conectamos a la base de datos
include('connect-db.php');
//comprueba si el formulario ha sido enviado. Si es correcto, procesa el formulario y guarda los datos en la BD.
if (isset($_POST['submit']))
{
//confirma que el "ID" recibido es un valor válida antes de obtener los datos del formulario
if (is_numeric($_POST['id']))
{
// obtiene los datos del formulario, asegurándonos que son válidos
$id = $_POST['id'];
$nombre=mysqli_real_escape_string($connection,htmlspecialchars($_POST['nombre']));
$apellido=mysqli_real_escape_string($connection,htmlspecialchars($_POST['apellido']));
// comprobamos que el nombre y apellidos tienen algún valor
/*}
else
{*/
// guardamos los datos en la base de datos
mysqli_query($connection,"UPDATE players SET nombre='$nombre',apellido='$apellido' WHERE id='$id'") or die(mysqli_error());
//una vez guardados, redirigimos a la página principal
header("Location: view.php");

//}
}
else
{
// Si el valor de "id" no es válidos, mostramos un mensaje de error
echo 'Error!';
}
}
else
/* Si el formulario no ha sido enviado, obtenemos los datos del
formulario desde la base de datos y visualizamos el formulario*/
{
/* Obtenemos el "id" desde la URL (si existe), asegurándonos
que es válido comprobando que sea numérico o mayor que 0*/
if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id']
> 0)
{
// consulta a la base de datos
$id = $_GET['id'];
$result = mysqli_query($connection,"SELECT * FROM players WHERE id=$id")or die(mysqli_error());
$row = mysqli_fetch_array($result);
// comprueba que el "id" coincide con una fila en la base de datos
if($row)
{
// obtenemos datos desde la bd
$nombre = $row['nombre'];
$apellido = $row['apellido'];
// mostramos el formulario
renderForm($id, $nombre, $apellido, '');
}
else
// si no hay resultados, lo indicamos
    
   {
echo "No hay resultados!";
}
}
else
/* Si el "ID" de la URL no es válido, o si no hay un valor de "id",
mostramos un error*/
{
echo 'Error!';
}
}
?>

#11

view.php me reproduce lo siguiente?
no tengo como ver la data de tu BD pero aparentemente todo esta funcionando bien Jose.!

pero si vi que en el form de edit.php el action esta vacio…
también el cambio se toma pero no se redirige al formulario


#12

{*/
// guardamos los datos en la base de datos
mysqli_query($connection,“UPDATE players SET nombre=’$nombre’,apellido=’$apellido’ WHERE id=’$id’”) or die(mysqli_error());
//una vez guardados, redirigimos a la página principal
header(“Location: view.php”);

Este es el trozo de código del fichero edit.php donde, una vez guardados los datos, se muestra el fichero view.php. Parece que falla la instrucción header(“Location: view.php”). No se porqué motivo.

Josean.


#13

La instrucción sql se ejecuta y el registro es actualizado correctamente.


#14

Me parece que el campo acción no debe estar vació ya que este se ejecuta al hacer el submit


#15

Hola, creo que no me equivoco si te digo que el código que indicas está dentro de una función llamada renderForm y que el código que se ejecuta al hacer el submit es el que te indico anteriormente. Lo vuelvo a poner:

// guardamos los datos en la base de datos
mysqli_query($connection,“UPDATE players SET nombre=’$nombre’,apellido=’$apellido’ WHERE id=’$id’”) or die(mysqli_error());
//una vez guardados, redirigimos a la página principal
header(“Location: view.php”);

Gracias por tu ayuda.
Josean.


#16

creo que debes utilizar el atributo de acción para lo que requieres…