Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    56

    Aggiornare database - script

    Devo svuotare e riempire da zero due tabell del database partendo da due file txt
    Le tabelle sono:
    - catalog (che si aggiorna a partire dal file catalog.txt)
    - clientes (che si aggiorna a partire dal file claves_clientes.txt)

    Il codice che ho creato (a base di dritte e aiuti) funziona perfettamente online, ma mi da dei problemi con xampp o wamp e ho bisogno che funzioni su un server LAMP che è quello che utilizza il mio cliente.

    Con xampp o wamp la tabella catalog non si aggiorna e restituisce il messaggio "Error:1"

    Vi lascio e allego il codice:

    Codice PHP:
    <?php
    /*
    comando SQL de instalación:

    CREATE TABLE IF NOT EXISTS `catalog` (
      `codigo` int(6) unsigned zerofill NOT NULL,
      `descripcion` varchar(45) NOT NULL,
      `precio` float unsigned NOT NULL,
      `iva` int(10) unsigned NOT NULL,
      `pvf` float unsigned NOT NULL,
      `familia` int(4) unsigned zerofill NOT NULL,
      PRIMARY KEY (`codigo`),
      KEY `descripcion` (`descripcion`,`familia`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    CREATE TABLE IF NOT EXISTS `art_desc` (
      `codigo` int(6) unsigned zerofill NOT NULL,
      `descripcion` varchar(45) NOT NULL,
      `precio` float NOT NULL,
      `iva` int(10) unsigned NOT NULL,
      PRIMARY KEY (`codigo`),
      KEY `producto` (`descripcion`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    CREATE TABLE IF NOT EXISTS `clientes` (
      `codigo_cliente` int(4) unsigned zerofill NOT NULL,
      `nombre` varchar(80) NOT NULL,
      `userid` varchar(80) NOT NULL,
      `password` varchar(80) NOT NULL,
      PRIMARY KEY (`codigo_cliente`),
      KEY `userid` (`userid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    */
        
    include('header.php');

        
    /*    //TODO: Inicia sesion
        if (!isset($_SESSION['autenticado'])) {
            //header('Location: index.php');
            //exit();
        }
        else*/
    {
            if (
    count($_FILES) == 0) {    //muestra plantilla subir archivo
    ?>
        <form method="post" action="actualizar.php" enctype="multipart/form-data">
            <label><span>Archivo (catalog.txt)</span><input name="file" type="file" required="required" accept="text/plain"></label>
            <input name="opt" type="hidden" value="catalog" />
            <input type="submit" value="Subir">
        </form>
        <form method="post" action="actualizar.php" enctype="multipart/form-data">
            <label><span>Archivo (claves_clientes.txt)</span><input name="file" type="file" required="required" accept="text/plain"></label>
            <input name="opt" type="hidden" value="clientes" />
            <input type="submit" value="Subir">
        </form>
    <?php        }
        else{        
            if (
    $_FILES["file"]["error"] > 0)
                echo 
    "Error: " $_FILES["file"]["error"] . "
    "
    ;
            else        
            {
                
    $lines file($_FILES["file"]["tmp_name"]);    //array con 1 producto por linea
                
    include('config.php');    //acceso a la base de datos
                
    $mysqli = new mysqli($db_host,$db_user,$db_pass,$db_name);
                if (
    $mysqli->connect_errno) {
                    echo(
    "Error conectando con la base de datos: {$mysqli->connect_error}");
                    exit;
                }
                
    $mysqli->set_charset("utf8");
                
    $mysqli->query("SET AUTOCOMMIT=0;");
                
    $mysqli->query("START TRANSACTION;");
                if (
    $_POST['opt'] == 'catalog') {
                    
    $mysqli->query("TRUNCATE TABLE catalog");
                    foreach (
    $lines as $line) {
                        
    $codigo intval(substr($line06));
                        
    $descripcion $mysqli->real_escape_string(rtrim(substr($line645)));
                        
    $precio floatval(substr($line516));
                        
    $iva intval(substr($line592));
                        
    $pvf floatval(substr($line666));
                        
    $familia intval(substr($line724));
                        
    $mysqli->query("INSERT INTO catalog (codigo, descripcion,precio,iva,pvf,familia) VALUES ($codigo, '$descripcion',$precio,$iva,$pvf,$familia);");
                    }
                }
                else {    
    //claves_clientes.txt
                
    $mysqli->query("TRUNCATE TABLE clientes");
                    foreach (
    $lines as $line) {
                        
    $datos preg_split("#\?#"$line);
                        
    $codigo intval($datos[0]);
                        
    $nombre $mysqli->real_escape_string(trim($datos[1]));
                        
    $userid $mysqli->real_escape_string(trim($datos[2]));
                        
    $password $mysqli->real_escape_string(trim($datos[3]));
                        
    $mysqli->query("INSERT INTO clientes (codigo_cliente, nombre,userid,password) VALUES ($codigo, '$nombre','$userid','$password');");
                    }
                }
                if (
    $mysqli->query("COMMIT;") === TRUE)
                {
                
    //TODO: Muestra mensaje actualización realizado con exito?>
                

    Base de Datos actualizada</p>
            <?php  }
            else
            {    
                
    //TODO: Muestra mensaje fallo en la actualización
                
    printf("Error: %s\n"$mysqli->error);
            }
            }
        }
        }
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    56
    nessuna idea?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.