PHP - No se ejecuta script php

 
Vista:
sin imagen de perfil

No se ejecuta script php

Publicado por Moisés (3 intervenciones) el 05/08/2023 15:39:19
Buenas a todos.

Soy muy novato en este tema y estoy siguiendo un tutorial para hacer un formulario de registro e insertar los datos en una base de datos. Tengo la base de datos MariaDB y no consigo conectar.
Voy a copiar el codigo para que lo veais y me digais si es posible en donde no estoy haciendo bien. He revisado el codigo y lo veo igual al del tutorial.

Este sería el index.html

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
<!DOCTYPE html>
<html lang="es">
   <head>
       <meta charset="utf-8">
       <title>Formulario de registro</title>
       <link rel="stylesheet" href="estilos.css">
   </head>
   <body>
       <h1>Formulario de registro</h1>
       <form action="registrar.php" method="post"
          class="form-register">
           <h2 class="form__titulo"> CREA UNA CUENTA </h2>
           <div class="contenedor-inputs">
               <input type="text" name="nombre" placeholder="Nombre" class="input-48" required>
               <input type="text" name="apellidos" placeholder="Apellidos" class="input-48" required>
               <input type="email" name="correo" placeholder="Correo" class="input-100" required>
               <input type="text" name="usuario" placeholder="Usuario" class="input-48" required>
               <input type="password" name="clave" placeholder="Contraseña" class="input-48" required>
               <input type="text" name="telefono" placeholder="Teléfono" class="input-100" required>
               <input type="submit" value="Registrar" class="btn-enviar">
               <p class="form__link">¿Ya tienes una cuenta? <a href="#">Ingresa aqui</a></p>
           </div>
       </form>
       </body>
</html>

Este sería el estilos.css
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
* {
    box-sizing: border-box;
}
 
body{
    margin: 0;
    font-family: sans-serif;
    background: #204862;
}
 
h1{
    color: #fff;
    text-align: center;
}
 
.form-register{
    width: 98%;
    max-width: 500px;
    margin: auto;
    background: white;
    border-radius: 7px;
}
 
.form__titulo{
    background: deepskyblue;
    color: #fff;
    padding: 20px;
    text-align: center;
    font-weight: 100;
    font-size: 30px;
    border-top-left-radius: 7px;
    border-top-right-radius: 7px;
    border-bottom: 5px solid crimson;
}
 
.contenedor-inputs{
    padding: 10px 30px;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}
input{
    margin-bottom: 15px;
    padding: 15px;
    font-size: 16px;
    border-radius: 3px;
    border: 1px solid darkgray;
}
 
.input-48{
    width: 48%;
}
 
.input-100{
    width: 100%;
}
 
.btn-enviar{
    background: crimson;
    color: #fff;
    margin: auto;
    padding: 10px 40px;
    cursor: pointer;
    font-size: 20px;
}
btn-enviar:active{
    transform: scale(1.05);
}
.form__link{
    width: 100%;
    margin: 7px;
    text-align: center;
    font-size: 14px;
}

Este sería el de la conexion cn.php.
1
2
3
4
5
6
7
8
<?php
$conexion = @mysqli_connect("localhost","root","","bd_prueba");
if (!$conexion) {
    echo 'Error al conectar a la base de datos';
}
else {
    echo 'Conectado a la base de datos';
}

Y este ultimo el registrar.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include 'cn.php';
//Recibir los datos y almacenarlos en variable
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$correo = $_POST["correo"];
$usuario = $_POST["usuario"];
$clave = $_POST["clave"];
$telefono = $_POST["telefono"];
 
// Consulta para insertar
$insertar = "INSERT INTO usuarios (nombre, apellidos, correo, usuario, clave, telefono) VALUES ('$nombre', '$apellidos', '$correo', '$usuario', 'clave', 'telefono')";
 
// Ejecutar consulta
$resultado = mysqli_query($conexion, $insertar);
if (!$resultado){
    echo 'error al registrarse';
} else {
    echo 'usuario registrado exitosamente';
}
// Cerrar la conexion
mysqli_close($conexion);

El tema es que el archivo de conectar siempre me dice que conecta en la vista previa, aunque cambie el nombre de la base de datos para provocar el error. Y el de registrar no lo hace, cuando hago clic en el boton registrar del formulario no hace nada, voy a la base de datos y no ha registrado ningun dato. ¿me podeis ayudar?

Gracias.
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

No se ejecuta script php

Publicado por Mauro (1036 intervenciones) el 05/08/2023 15:57:06
Hola Moisés.


Prueba quitar la @ de la línea 2 de cn.php. no te resolverá el problema pero te dará más información de que está ocurriendo.

Cuando la tengas publicala aquí y podremos ayudarte.
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

No se ejecuta script php

Publicado por Kathyu (905 intervenciones) el 05/08/2023 19:16:50
Has planteado muy bien tu pregunta. Voy a responderte con códigos que tengo por aquí en LWP.

Conexión básica
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
<?php
    /* check the conn */
    mysqli_report(MYSQLI_REPORT_STRICT);
    try {
        // database connection data
        $con = mysqli_connect('localhost', 'root','','pruebas');
    }
    catch( Exception $e ) {
        echo "Error al Conectar. Error N°: " . $e->getCode() . " | " . $e->getMessage();
        return;
    }
 
    // get the post records
    $txtNombre = $_POST['txtNombre'];
    $txtDni = $_POST['txtDni'];
    $nombreCompleto = $_POST['nombreCompleto'];
    $fecha = $_POST['fecha'];
 
    echo "<pre>";
        print_r($_POST);
    echo "</pre>";
 
    // database insert SQL code
    $sql = "INSERT INTO db_privacidad (id, nombre, dni, nombreCompleto, fecha, aceptacion) VALUES ('', '$txtNombre', '$txtDni', '$nombreCompleto', '$fecha')";
 
    // insert in database
    $rs = mysqli_query($con, $sql);
 
    if($rs) {
        echo "Formulario enviado con éxito.";
    }

En base a ese ejemplo puedes ver porque tu código no funciona. Aunque lo más seguro es lo que Mauro te ha comentado.
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

No se ejecuta script php

Publicado por Moisés (3 intervenciones) el 05/08/2023 21:50:02
Hola, perdonar pero soy muy novato. He cambiado las "" por '' y a la inversa.

1
2
3
4
5
6
7
8
<?php
$conexion = mysqli_connect('localhost','root','';'bjd_prueba');
if (!$conexion) {
    echo "Error al conectar a la base de datos";
}
else {
    echo "Conectado a la base de datos";
}
Entonces al guardar el codigo la vista previa me salta este error, no salta el texto que puse en el código.

Parse error: syntax error, unexpected token ";", expecting ")" in C:\Program Files\xampp\htdocs\formulario-de-registro\cn.php on line 2

En la vista previa si que sale bien la ruta: http://localhost/formulario-de-registro/cn.php

Entiendo que con este codigo
1
if (!$conexion)
Le estoy diciendo que si no se puede ejecutar me diga que hay un error al conectar y que que si indico la ruta de la bd correctamente y conecta me ponga en un mensaje que la conexion es correcta.

Entonces he usado tu codigo y si que me funciona si el nombre de la base de datos no es correcta, pero no se como decirle que si que ha conectado si la base de datos es correcta.
El otro codigo pretendia eso pero algo no pongo bien.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//$conexion = mysqli_connect('localhost','root','';'bd_prueba');
//if (!$conexion) {
//    echo "Error al conectar a la base de datos";
//}
//else {
//    echo "Conectado a la base de datos";
//}
 
    /* check the conn */
    mysqli_report(MYSQLI_REPORT_STRICT);
    try {
        // database connection data
        $con = mysqli_connect('localhost', 'root','','bd_prueba');
    }
    catch( Exception $e ) {
        echo "Error al Conectar. Error N°: " . $e->getCode() . " | " . $e->getMessage();
        return;
    }
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

No se ejecuta script php

Publicado por Kathyu (905 intervenciones) el 06/08/2023 09:40:36
El error que te muestra es super claro y antes de leer todo vi el error que has cometido. La verdad es que debes ser más meticuloso con lo que haces, el error es simple, analízalo y resuélvelo.

Tu código y el mío no tienen la misma estructura y en cuanto a que quieres que te diga que se conectó a la DB es super fácil, pero no me gusta darlo todo. Prueba, analiza y cuando tengas esos intentos ponlos acá.
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

No se ejecuta script php

Publicado por Mauro (1036 intervenciones) el 07/08/2023 08:06:58
Moisés:

Nota que en la línea:

1
$conexion = mysqli_connect('localhost','root','';'bjd_prueba');

Tienes un ; entre '' y 'bd_prueba'. Recuerda que el caracter ";" es el indicador de fin de línea de PHP, por lo tanto, el intérprete está intentando ejecutar
1
mysqli_connect('localhost','root','';
por un lado y
1
'bjd_prueba');
por otro.

Ninguna de estas por sí misma conforma una sentencia válida y es por eso que te da error.

El mensaje Parse error: syntax error, unexpected token ";", expecting ")" in C:\Program Files\xampp\htdocs\formulario-de-registro\cn.php on line 2 está indicando precisamente eso: que el intérprete ha encontrado un ";" donde esperaba encontrar un ")" que cierre la llamada a la función mysqli_connect.

Espero haber sido claro, consúltame si te quedaron dudas.

Saludos,
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