Foros del Web » Programando para Internet » PHP »

Install en blanco

Estas en el tema de Install en blanco en el foro de PHP en Foros del Web. Hola! He creado un install.php , el cual debería crear un archivo config. Pero luego de llenar el formulario con los datos de la database, ...
  #1 (permalink)  
Antiguo 29/05/2011, 10:36
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 10 meses
Puntos: 0
Install en blanco

Hola!

He creado un install.php , el cual debería crear un archivo config.
Pero luego de llenar el formulario con los datos de la database, se queda en blanco y no procesa nada. no crea la db ni el archivo config.


Archivo install.php:

Código PHP:
<?php 
 
//Si el archivo config.php existe significa que el sistema ya fue instalado
if (file_exists("config.php")){
    die(
"<strong>El sistema ya esta instalado</strong>");
}
 
//Si se envió el formulario comprobamos que todos los campos estén rellenos
if ($_POST['submit']){
    if (empty(
$_POST["db-host"])){
        echo 
"Debes de rellenar el campo 'Host de la base de datos'<br />";
        
$return 1;
    } 
    if (empty(
$_POST["db-name"])){
        echo 
"Debes de rellenar el campo 'Nombre de la base de datos'<br />";
        
$return 1;
    } 
    if (empty(
$_POST["db-user"])){
        echo 
"Debes de rellenar el campo 'Usuario de la base de datos'<br />";
        
$return 1;
    } 
    if (empty(
$_POST["db-pass"])){
        echo 
"Debes de rellenar el campo 'Contraseña de la base de datos'<br />";
        
$return 1;

    if (empty(
$_POST["nombre"])){
        echo 
"Debes de rellenar el campo 'Nombre'<br />";
        
$return 1;
    }
        if (empty(
$_POST["ulogin"])){
        echo 
"Debes de rellenar el campo 'Usuario'<br />";
        
$return 1;
    }
    if (empty(
$_POST["upass"])){
        echo 
"Debes de rellenar el campo 'Contraseña'<br />";
        
$return 1;
    } 
    if (empty(
$_POST["email"])){
        echo 
"Debes de rellenar el campo 'Correo Electrónico'<br />";
        
$return 1;
    }
    if (
$_POST["upass"] != $_POST["u2pass"]){
        echo 
"Las Contraseñas de usuario no coinciden<br />";
        
$return 1;
    } 
 
    
//En el caso de que algún campo no este relleno no se continua con la instalación
    
if (isset($return)){
        echo 
"<br /><br /><a href=\"install.php\">Volver al Formulario</a>";
    } else {
        echo 
"Comenzando Instalación<br />";
 
        
//Conectamos con la base de datos que el usuario nos ha proporcionado
        
$con=mysql_connect($_POST["db-host"],$_POST["db-user"],$_POST["db-pass"]);
        
mysql_select_db($_POST["db-name"],$con);
        if (!
$con){
            die(
"No se puede establecer conexión con la base de datos, por favor comprueba los datos. <br /><br /><a href=\"install.php\">Volver al Formulario</a>");
        }
 
        
//Definimos las tablas en un array(), creamos roles básicos y usuario admin
        
$db_tables = array(
        
"CREATE TABLE IF NOT EXISTS `ta_pedido_p` (
  `id_pedido_p` int(10) unsigned NOT NULL auto_increment,
  `id_pedido` int(11) unsigned NOT NULL default '0',
  `id_producto` int(11) unsigned NOT NULL default '0',
  `nombre` varchar(120) collate latin1_spanish_ci NOT NULL default '',
  `clase` varchar(60) collate latin1_spanish_ci NOT NULL default 'Verduras',
  `unidad` varchar(60) collate latin1_spanish_ci NOT NULL default 'Kilo',
  `precio` int(11) NOT NULL default '1500',
  `cantidad` double NOT NULL default '0',
  `subtotal` double NOT NULL default '0',
  PRIMARY KEY  (`id_pedido_p`),
  KEY `ix_pedido_producto` (`id_pedido`,`id_producto`)
)"
,
        
"CREATE TABLE IF NOT EXISTS `ta_producto` (
  `id_producto` int(11) unsigned NOT NULL auto_increment,
  `nombre` varchar(120) collate latin1_spanish_ci NOT NULL default '',
  `clase` varchar(60) collate latin1_spanish_ci NOT NULL default 'Verduras',
  `unidad` varchar(60) collate latin1_spanish_ci NOT NULL default 'Kilo',
  `precio` int(11) NOT NULL default '1500',
  `activo` char(1) collate latin1_spanish_ci NOT NULL default 'S',
  PRIMARY KEY  (`id_producto`),
  KEY `nombre` (`nombre`,`clase`,`activo`)
)"
,
        
"CREATE TABLE IF NOT EXISTS `ta_receta` (
  `id_receta` int(11) unsigned NOT NULL auto_increment,
  `titulo` varchar(255) collate latin1_spanish_ci NOT NULL default '',
  `tituloi` varchar(255) collate latin1_spanish_ci NOT NULL default '',
  `ingredi` text collate latin1_spanish_ci NOT NULL,
  `elabora` text collate latin1_spanish_ci NOT NULL,
  `imagen` varchar(255) collate latin1_spanish_ci NOT NULL default '',
  `activo` char(1) collate latin1_spanish_ci NOT NULL default 'S',
  PRIMARY KEY  (`id_receta`)
)"
,
        
"CREATE TABLE IF NOT EXISTS `ta_receta_desa` (
  `id_receta` int(11) unsigned NOT NULL auto_increment,
  `titulo` varchar(255) collate latin1_spanish_ci NOT NULL default '',
  `tituloi` varchar(255) collate latin1_spanish_ci NOT NULL default '',
  `ingredi` text collate latin1_spanish_ci NOT NULL,
  `elabora` text collate latin1_spanish_ci NOT NULL,
  `imagen` varchar(255) collate latin1_spanish_ci NOT NULL default '',
  `activo` char(1) collate latin1_spanish_ci NOT NULL default 'S',
  PRIMARY KEY  (`id_receta`)
)"
,
        
"CREATE TABLE IF NOT EXISTS `ts_usuario` (
  `ulogin` varchar(32) collate latin1_spanish_ci NOT NULL default '',
  `upass` varchar(32) collate latin1_spanish_ci NOT NULL default '',
  `nombre` varchar(128) collate latin1_spanish_ci NOT NULL default '',
  `email` varchar(255) collate latin1_spanish_ci NOT NULL default '',
  `id_perfil` smallint(5) unsigned NOT NULL default '0',
  `flogin` datetime NOT NULL default '0000-00-00 00:00:00',
  `caduca` date NOT NULL default '0000-00-00',
  `p_receta` char(1) collate latin1_spanish_ci NOT NULL default 'S',
  `p_producto` char(1) collate latin1_spanish_ci NOT NULL default 'S',
  `p_pedido` char(1) collate latin1_spanish_ci NOT NULL default 'S',
  `r_pedido` char(1) collate latin1_spanish_ci NOT NULL default 'S',
  `r_contacto` char(1) collate latin1_spanish_ci NOT NULL default 'S',
  PRIMARY KEY  (`ulogin`),
  KEY `nombre` (`nombre`),
  KEY `email` (`email`),
  KEY `r_pedidos` (`r_pedido`),
  KEY `r_contacto` (`r_contacto`)
)"
,
    
 
    
"INSERT INTO `ta_pedido` (`id_pedido`, `fecha`, `nombre`, `direccion`, `comuna`, `fonos`, `email`, `forma_pago`, `total`, `atendido`) VALUES (
    '1',
    '2011-05-26 00:00:00',
    'VentaFacil',
    'direccion',
    'comuna', 
    '2545651',
    '[email protected]',
    'efectivo',
    '2011'
    )"
,
    
    
"INSERT INTO `ta_pedido_p` (`id_pedido_p`, `id_pedido`, `id_producto`, `nombre`, `clase`, `unidad`, `precio`, `cantidad`, `subtotal`) VALUES (
    '1',
    '1',
    '1', 
    'VentaFacil', 
    'fruta',
    'unidad', 
    '200, 
    '1',
    '2'
    )"
,
    
    
"INSERT INTO `ta_producto` (`id_producto`, `nombre`, `clase`, `unidad`, `precio`, `activo`) VALUES (
    '1',
    'Ventafacil',
    'fruta', 
    'unidad', 
    '200',
    'si', 
    )"
,
    
"INSERT INTO `ta_receta` (`id_receta`, `titulo`, `tituloi`, `ingredi`, `elabora`, `imagen`, `activo`) VALUES (
    '1',
    'Ventafacil',
    'Ventafacil', 
    'VentaFacil', 
    'Editar',
    '', 
    'si,
    )"
,
"INSERT INTO `ta_receta_desa` (`id_receta`, `titulo`, `tituloi`, `ingredi`, `elabora`, `imagen`, `activo`) VALUES (
    '1',
    'Ventafacil',
    'Ventafacil', 
    'VentaFacil', 
    'Editar',
    '', 
    'si,
    )"
,

"INSERT INTO `ts_usuario` (`ulogin`, `upass`, `nombre`, `email`, `id_perfil`, `flogin`, `caduca`, `p_receta`, `p_producto`, `p_pedido`, `r_pedido`, `r_contacto`) VALUES(
'"
.$_POST["ulogin"]."',
'"
.md5($_POST["upass"])."',
'"
.$_POST["nombre"]."',
'"
.$_POST["email"]."',
'1', 
'2011-05-17 09:27:50', 
'9999-12-31', 
'S', 
'S',
'S', 
'N', 
'N'
)" 
);}

foreach(
$db_tables as $x){
            
$query mysql_query($x)or die(mysql_error());
        }
 

        
mysql_close($con);
 

            
$config_info "<?php\n/* Archivo config.php generado por el sistema */\n\n\$bdhost = \"".$_POST["db-host"]."\";\n\$bdname = \"".$_POST["db-name"]."\";\n\$bduser = \"".$_POST["db-user"]."\";\n\$bdpass = \"".$_POST["db-pass"]."\";\n?>";
 

        if (
is_writable("./") != 1) {
            echo 
"No se ha podido crear config.php por un problema con los permisos de la carpeta raíz, tu mismo puedes crear el archivo config.php con el siguiente contenido para terminar la instalación, una vez hecho <a href=\"index.php\">Vuelve al Inicio</a>. <br />";
            echo 
"<textarea cols=\"40\" rows=\"10\">".$config_info."</textarea>";
        } else {
 


            
$keys_file fopen("config.php","w");
            
fwrite($keys_file$config_info);
            
fclose($keys_file);
            echo 
"<br />Se ha completado la instalación con éxito<br /><a href=\"index.php\">Volver al Inicio</a>";
        }
    }
 
} else {
 
    
?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <link type="text/css" rel="stylesheet" media="all" href="style.css" />
            <title>Instalador de Ventafacil</title>
        </head>
        <body>
        <div id="install">
            <form action="install.php" method="post">
            <div id="install-title">Instalador</div>
            <table>
                <tr><td colspan="2" class="install-td">Información sobre la Base de datos</td></tr>
                <tr><td>Host de la base de datos:</td><td><input type="text" name="db-host" value="localhost" /></td></tr>
                <tr><td>Nombre de la base de datos:</td><td><input type="text" name="db-name" value="Nombre" /></td></tr>
                <tr><td>Usuario de la base de datos:</td><td><input type="text" name="db-user" value="Usuario" /></td></tr>
                <tr><td>Contraseña de la base de datos:</td><td><input type="password" name="db-pass" /></td></tr>
                <tr><td colspan="2" class="install-td">Información sobre el Administrador</td></tr>
                <tr><td>Nombre</td><td><input type="text" name="nombre" value="Nombre" /></td></tr>
                <tr><td>Usuario:</td><td><input type="text" name="ulogin" value="Ulogin" /></td></tr>
                <tr><td>Contraseña:</td><td><input type="upass" name="upass" /></td></tr>
                <tr><td>Repetir Contraseña:</td><td><input type="upass" name="u2pass" /></td></tr>
                <tr><td>Correo Electrónico:</td><td><input type="text" name="email" value="Email" /></td></tr>
                <tr><td colspan="2" class="install-td"><input type="submit" name="submit" value="Instalar" /></td></tr>
            </table>
            </form>
        </div>
        </body>
    </html>
<?php
}
?>
  #2 (permalink)  
Antiguo 29/05/2011, 11:19
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Install en blanco

Por ahi hay un detalle en el manejo de decisiones.

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (file_exists("config.php")){
  4.     die("<strong>El sistema ya esta instalado</strong>");
  5. }
  6.  
  7. else if($_POST['submit']){
  8.  
  9. .
  10. .
  11. .
  12. .
  13. .
  14.  
  15.  
  16.  
  17. //Dentro de esta misma decisión
  18. $config_info = "<?php\n/* Archivo config.php generado por el sistema */\n\n\$bdhost = \"".$_POST["db-host"]."\";\n\$bdname = \"".$_POST["db-name"]."\";\n\$bduser = \"".$_POST["db-user"]."\";\n\$bdpass = \"".$_POST["db-pass"]."\";\n?>";
  19.  
  20.  $keys_file = fopen("config.php","w");
  21.             fwrite($keys_file, $config_info);
  22.             fclose($keys_file);
  23.             echo "<br />Se ha completado la instalación con éxito<br /><a href=\"index.php\">Volver al Inicio</a>";
  24.  
  25. }
  26.  
  27.  
  28. ?>


El fopen lo estas haciendo bien.
Aunque tu código no está en un error si debes cambiar la forma en la que haces las decisiones para que no se te presenten otros errores.

Por ejemplo, si el archivo ya estaba en el directorio no estabas restringiendo que el usuario ejecutará nuevamente el formulario, aunque restringías que no se mostrará el codigo HTML del formulario.

2.- En la misma linea donde estas creando las bases de datos, puedes crear el archivo config o puedes primero "Validar si las bases de datos fueron creadas.... De ser así crear el archivo config

Saludos
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 29/05/2011, 11:26
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Install en blanco

lo que está pasando es que no ésta ejecutandose el foreach, nuevamente por el uso que tienes en las decisiones.


usa los else y los else if.

Mete el foreach dentro del

Código PHP:
Ver original
  1. }else {
  2.  
  3.  echo "Comenzando la instalcion";
  4.  
  5. ..
  6. ..
  7. ..
  8.  
  9. $db_tables = array( .........);
  10.  
  11. foreach($db_tables as $x){
  12.             $query = mysql_query($x)or die(mysql_error());
  13.         }
  14.  
  15. }//Fin del else

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #4 (permalink)  
Antiguo 29/05/2011, 13:23
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Install en blanco

Ahora me queda la página install en blanco.

Les pongo acá el codigo porque es muy largo forosdelweb
http://ventaprueba.zxq.net/install.txt
  #5 (permalink)  
Antiguo 29/05/2011, 15:04
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Install en blanco

hola amigo mira te lo voy a planear desde 0 vale.

Código PHP:
Ver original
  1. <?php
  2. if(file_exists("config.php")){
  3.    echo "El sistema ya está instalado";
  4. } else {
  5.     //Valido si se preciona el boton del formulario
  6.     if($_POST['submit']){
  7.        //Valido que todos los campos de formulario no esten vacios, por ejemplo:
  8.        if( empty($_POST["db-host"]) || empty($_POST["db-name"]) || empty($_POST["db-user"]) ){ echo "Debes escribir todos los campos"; }
  9.           else{
  10.               //En caso de que los campos no ésten vacios
  11.               echo "Comenzando la instalacion";
  12.              
  13.               $con = mysql_connect($_POST["db-host"],$_POST["db-user"],$_POST["db-pass"]);
  14.               mysql_select_db($_POST["db-name"],$con);
  15.               if (!$con){ echo "Error al conectar con la base de datos"; }
  16.                  else{
  17.                      //En caso de que si se haya conectado con la base de datos
  18.                      //Definimos las tablas en un array(), creamos roles básicos y usuario admin
  19.                         $db_tables = array(
  20.                         "CREATE TABLE IF NOT EXISTS `ta_pedido_p` (
  21.                         `id_pedido_p` int(10) unsigned NOT NULL auto_increment,
  22.                         `id_pedido` int(11) unsigned NOT NULL default '0',
  23.                         `id_producto` int(11) unsigned NOT NULL default '0',
  24.                         `nombre` varchar(120) collate latin1_spanish_ci NOT NULL default '',
  25.                         `clase` varchar(60) collate latin1_spanish_ci NOT NULL default 'Verduras',
  26.                         `unidad` varchar(60) collate latin1_spanish_ci NOT NULL default 'Kilo',
  27.                         `precio` int(11) NOT NULL default '1500',
  28.                         `cantidad` double NOT NULL default '0',
  29.                         `subtotal` double NOT NULL default '0',
  30.                         PRIMARY KEY  (`id_pedido_p`),
  31.                         KEY `ix_pedido_producto` (`id_pedido`,`id_producto`)
  32.                         )", "etc........");
  33.                        
  34.                         //Lo que te comentaba
  35.                         foreach($db_tables as $x){
  36.                         $query = mysql_query($x)or die(mysql_error());
  37.                         }
  38.                      
  39.                      mysql_close($con);
  40.                      
  41.                      $config_info = "<?php\n/* Archivo config.php generado por el sistema */\n\n\$bdhost = \"".$_POST["db-host"]."\";\n\$bdname = \"".$_POST["db-name"]."\";\n\$bduser = \"".$_POST["db-user"]."\";\n\$bdpass = \"".$_POST["db-pass"]."\";\n?>";
  42.  
  43.                      
  44.                     $keys_file = fopen("config.php","w");
  45.                     fwrite($keys_file, $config_info);
  46.                     fclose($keys_file);
  47.                     echo "<br />Se ha completado la instalación con éxito<br /><a href=\"index.php\">Volver al Inicio</a>";
  48.                      
  49.                      
  50.                      }//Fin else linea 16
  51.           }//Fin else linea 9
  52.     } else {
  53.  
  54. ?>
  55. <!-- Si no se ha precionado el boton del formulario y a la vez no está instalado el sistema, muestro el formulario. -->
  56. Parte HTML donde puedo incluir el formulario.
  57.  
  58. <?php
  59.     }//Fin else linea 52
  60. }//Fin else linea 4
  61. ?>

Te muestra en blanco por el manejo de las llaves que estas haciendo.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: install
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:22.