Nueva pregunta

Pregunta:

Fecha: 21-04-2017 12:11:56 (En Español)

Error al conectar formulario PHP con MySQL[Resuelta]

Compañeros de la comunidad, un cordial saludo.

Les cuento que he estado tratando de ingresar datos a traves de un formulario web, los cuales deben de insertar en una tabla de MySQL, pero no lo he logrado, no se si sera por la versión de PHP, pero ya no se que mas hacer,
si alguien me puede brindar ayuda púes es un proyecto que estoy realizando para la universidad.

Me sale esto:
Notice: Undefined index: fecha in C:\xampp\htdocs\prueba\registro.php on line 12

Notice: Undefined index: efectivo in C:\xampp\htdocs\prueba\registro.php on line 13

Notice: Undefined index: tarjeta in C:\xampp\htdocs\prueba\registro.php on line 14

Notice: Undefined index: vcredito in C:\xampp\htdocs\prueba\registro.php on line 15

Notice: Undefined index: fmanual in C:\xampp\htdocs\prueba\registro.php on line 16

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\prueba\registro.php on line 18

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\prueba\registro.php on line 20

Notice: Undefined variable: db_cuadre in C:\xampp\htdocs\prueba\registro.php on line 27

Notice: Undefined variable: db_table_empresa in C:\xampp\htdocs\prueba\registro.php on line 27

Notice: Undefined variable: db_cuadre in C:\xampp\htdocs\prueba\registro.php on line 29

Warning: mysqli_select_db() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\prueba\registro.php on line 29

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\prueba\registro.php on line 30

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\prueba\registro.php on line 33
Error:


Les comparto el código de registro que tengo, para saber cuales son los errores:
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_name = "cuadre";
$db_table_name = "empresa";
$db_connection = mysqli_connect($db_host, $db_user, $db_password);

if (!$db_connection) {
    die('No se ha podido conectar a la base de datos');
}
$subs_fecha = utf8_decode($_POST['fecha']);
$subs_efectivo = utf8_decode($_POST['efectivo']);
$subs_tarjeta = utf8_decode($_POST['tarjeta']);
$subs_vcredito = utf8_decode($_POST['vcredito']);
$subs_fmanual = utf8_decode($_POST['fmanual']);

$resultado = mysqli_query("SELECT * FROM " . $db_table_name . " WHERE tarjeta = '" . $subs_tarjeta . "'", $db_connection);

if (mysqli_num_rows($resultado) > 0) {
    header('Location: Fail.html');
} else {
    $insert_value = 'INSERT INTO `' . $db_cuadre . '`.`' . $db_table_empresa . '` (`fecha` , `efectivo` , `tarjeta` , `vcredito` , `fmanual`  ) VALUES ("' . $subs_fecha . '", "' . $subs_efectivo . '", "' . $subs_tarjeta . '")';

    mysqli_select_db($db_cuadre, $db_connection);
    $retry_value = mysqli_query($insert_value, $db_connection);

    if (!$retry_value) {
        die('Error: ' . mysqli_error());
    }

    header('Location: Success.html');
}

mysqli_close($db_connection);
?>


Muy agradecido

Etiquetas: Formulario - HTML - MySQL - PHP - Pregunta Votos: 0 - Respuestas: 2 - Vistas: 17 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 21-04-2017 14:44:13 Te recomiendo utilizar PDO, es aún mejor que MySQLi

    1. Primeramente para solucionar el undefined index se debe evaluar la variable recibida del formulario, se debe poner:
    if(isset($_POST['fecha'])) {
        $subs_fecha = ($_POST['fecha']);
    }

    y asi con las demas variables

    2. Creas un archivo de conexión separado, y por ejemplo lo nombras como conexion.php, o el nombre que mejor te parezca y pones este codigo:
    <?php
    try {
    
      $con = new PDO("mysql:host=localhost;dbname=cuadre", "root", "");
      $con->query("SET NAMES 'utf-8'");
    
    } catch (Exception $e) {
        echo "No se ha podido conectar con la base de datos";
        exit;
    }
    return $con;
    ?>
    


    y en el archivo registro.php haga la referencia:
    include("conexion.php);


    luego para insertar en la base de datos
    $sql = "INSERT INTO empresa (fecha,efectivo,tarjeta,vcredito,fmanual) VALUES (:fecha, :efectivo,:tarjeta,:vcredito,:fmanual)";
    $stmt = $con->prepare($sql);
    $stmt->bindParam(':fecha', $fecha, PDO::PARAM_STR); 
    $stmt->bindParam(':efectivo', $efectivo, PDO::PARAM_STR);
    $stmt->bindParam(':tarjeta', $tarjeta, PDO::PARAM_STR); 
    $stmt->bindParam(':vcredito', $vcredito, PDO::PARAM_STR);
    $stmt->bindParam(':fmanual', $fmanual, PDO::PARAM_STR);
    $stmt->execute();
    
      Votos: 2 - Link respuesta
     
  • Fecha: 22-04-2017 11:57:49 mysqli_query() necesita por lo menos dos parametros :

    link
    Procedural style only: A link identifier returned by mysqli_connect() or mysqli_init()

    query
    The query string.

    Data inside the query should be properly escaped.
    mysqli_query($link, $query) 


    http://php.net/manual/en/mysqli.query.php
      Votos: 2 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com