• Lunes 23 de Diciembre de 2024, 01:39

Autor Tema:  Vaciado de tablas  (Leído 4347 veces)

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Vaciado de tablas
« en: Viernes 26 de Junio de 2009, 06:53 »
0
Hola a todos:

Nuevamente trasnochando junto a PHP, les cuento que gracias a este foro he sacado varios errores o ignorancias por lo que les estoy agradecida. Ahora tengo otro problemita, les cuento, con 2 list distintos recibo 2 datos que me ayudan en la seleccion de unos id luego vacio la tabla con un TRUNCATE y según los id que tengo la lleno con otros datos, pero no me funciona, aquí va el código, a ver si alguien me puede ayudar, gracias  :rolleyes:

              <select size="15" name="jefe" onchange="this.value">
                <option value="?jefe=0">Seleccione.....</option>
                <?
         include("config.inc.php");
         msql_query("TRUNCATE TABLE temp_1",$conexion);
         $sel=mysql_query("INSERT INTO temp_1 SELECT id_emp,id_user,Name_user FROM usuario",$conexion);
            $sql_j1 =mysql_query("SELECT * FROM temp_1 ORDER BY nombre ");
            while($r_j1 = mysql_fetch_array($sql_j1))
            {
            ?>
                <option value="?jefe=<?=$r_j1[0]?>" <? if($jefe==$r_j1[0]){?>selected<?} ?>>
                <?=$r_j1[2]?>
                </option>
                <?
            }
         ?>
                </select>

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #1 en: Viernes 26 de Junio de 2009, 21:21 »
0
Que parte es la que no funciona? la de grabar datos nuevos, la de vaciar la tabla? especificá plz...
No entiendo demasiado el código (lo entiendo, pero está medio raro), pero para verificar las consultas sql siempre te conviene agregar al final de la linea "or die(mysql_error());"

O sea:

msql_query("TRUNCATE TABLE temp_1",$conexion) or die(mysql_error());

Lo que te respondería con un error de mysql si esa consulta no puede realizarse.

Espero haberte ayudado.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #2 en: Sábado 27 de Junio de 2009, 23:11 »
0
Cita de: "Kataky"
Hola a todos:
...
         msql_query("TRUNCATE TABLE temp_1",$conexion);
...

Si ese ses el codigo y usas mysql, lo primero que debes de hacer es reemplazar msql_query por mysql_query  y como te ha comentado chesbor imprime el error que te arroje mysql.


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #3 en: Domingo 28 de Junio de 2009, 00:24 »
0
Hola

Gracias por las observaciones, efectivamente faltaba la y pero aún así no lo hace se ejecuta desde PHP, si lo hago directamente en la base de datos lo hace, no tengo problemas con insertar los registros pero al minuto de limpiar la tabla  para copiarle los nuevos datos no pasa nada, NO me arroja ningún error, solamente no lo hace:

mysql_query("TRUNCATE TABLE temp_1",$conexion) or die ("NO Borro");

De hecho también probé hacer el borrado en la selección anterior y me voy al phpmyadmin y la tabla está con la última selección, por lo tanto no lo borra, ¿no me hará falta un refresh o algo por el estilo?  no manejo mucho las funciones, tal vez es mejor hacerlo con una función.

Gracias,

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #4 en: Domingo 28 de Junio de 2009, 01:52 »
0
Que version utilizas de PHP y cual de MySQL?
en que sistema operativo?


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #5 en: Domingo 28 de Junio de 2009, 03:36 »
0
Puede ser que efectivamente esté haciendo lo que debería pero no sea lo que vos querés que haga? Porque según veo, ese script toma los datos de una tabla, cuyo contenido no modificás... posiblemente el error no esté en ese script sino uno anterior o posterior.
Caso 1 (el error no está en otro script): Si esto es posible, yo te recomendaría que modifiques manualmente (desde phpmyadmin por ejemplo) el contenido de la tabla 'usuario' y revises si el resultado cambia.
Caso 2 (el error está en otro script): Por favor publicá el resto del programa (los archivos relacionados a este error que nos mostras al menos), para que podamos buscar el problema.
(Puedo estar terriblemente equivocado en ambas apreciaciones, pero bueno xD).
Espero que ayude...

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #6 en: Domingo 28 de Junio de 2009, 04:13 »
0
Hola a ambos:

Gracias por las respuestas, en cuanto a las versión, supomgo que son las últimas, aquí van:
phpMyAdmin SQL Dump,  version 3.1.5, Servidor: localhost, Tiempo de generación: 22-06-2009 a las 10:16:57 Versión del servidor: 5.0.81 Versión de PHP: 5.2.9-2[/b], Windows XP

Chesbor, cambie manualmente el contenido de la tabla temp_1 y me dí cuenta que me está seleccionando mal la empresa, toma el id de la primera empresa, voy seguir indagando el porque pero independiente de eso debería hacerlo bien, me queda una noche larga por delante..., disculpen lo largo pero trate de publicarlo de otra forma pero me dice que aún no tengo privilegios.

Conecta.php
<body>
<?
   $_SESSION["Nombre_emp"];
   echo"<div align='right' width='50' style='font-size:10px'>Usuario: <span style='color:#0099CC'>$user</span>";
   if($p == 'edit'){
   $idemp = $_SESSION['idemp'];
   $nombre = nombre_emp($idemp);
   echo"<br/>Empresa: <span style='color:#0099CC'>$nombre</span>";
   }
   echo"</div>";
?>    </th>
<table width="893" border="1"  bordercolor="#CCCCCC"  align="center" cellpadding="10" cellspacing="0">
  <form action='grabaco.php' method='post' name='add_con' id="add_con">
        <tr>
        <td colspan='9' bgcolor="#ECEEF0"><div align='center'>
          <h3>Agregar CONEXIÓN<br/>
            </h3>
        </div>        </td>
        <tr>
          <td width="235">Seleccione Empresa :</td>
          <td colspan="2">
          <select onchange="window.location = this.options[this.selectedIndex].value; return true;" name="idemp">
            <option value="?idemp=0">Seleccione</option>
            <?
         include("config.inc.php");
         $sql_emp = mysql_query("SELECT * FROM empresa ORDER BY Nombre_emp") or die ("NO ENCONTRO");
            while($r_emp = mysql_fetch_array($sql_emp))
            {
            ?>
            <option value="?idemp=<?=$r_emp[0]?>" <? if($idemp==$r_emp[0]){?>selected<?} ?>><?=$r_emp[1]?>
            </option>
            <?
         $nomemp=$r_emp[1];
            }?>
          </select>
          <input name='nomf' value='<? echo $idemp ?>' type='text' />
          </td>
    </tr>
        <tr>
        <td>Seleccione Persona a Evaluar :</td>
        <td colspan="2">
          <select name="idusua" onchange="this.value">
            <option value="?idusua=0">Seleccione</option>
            <?
            $sql_usu = mysql_query("SELECT * FROM usuario WHERE id_emp='$idemp' ORDER BY Name_user ");
            while($r_usu = mysql_fetch_array($sql_usu))
            {
            ?>
            <option value="?idusua=<?=$r_usu[0]?>" <? if($idusua==$r_usu[0]){?>selected<?} ?>><?=$r_usu[1]?>
            </option>
            <?
         $usuario=$r_usu[1];
            }
         ?>
          </select>
          <input name='nomf2' value='<? echo $idusua ?>' type='text' />
          </td>
        </tr>
        <tr>
          <td>Seleccione JEFE :
          <td> Seleccione PARES :</td>
          <td>Seleccione COLABORADORES :</td>
        </tr>
        <tr>
          <td>
            <div align="center">
              <select size="15" name="jefe" onchange="this.value">
                <option value="?jefe=0">Seleccione.....</option>
                <?
         include("config.inc.php");
            $sql_j1 =mysql_query("SELECT * FROM usuario WHERE id_emp=$idemp AND NOT id_user='$idusua'");
            while($r_j1 = mysql_fetch_array($sql_j1))
            {
            ?>
                <option value="?jefe=<?=$r_j1[0]?>" <? if($jefe==$r_j1[0]){?>selected<?} ?>><?=$r_j1[1]?>
                </option>
                <?
            }
         ?>
                </select>
            </div></td>
          <td width="304">
            <div align="center">
              <select multiple="multiple" size="15" name="jefe1" >
                <option value="?jefe1=0">Seleccione.....</option>
                <?
         include("config.inc.php");
            $sql_j11 =mysql_query("SELECT * FROM usuario WHERE id_emp=$idemp");
            while($r_j11 = mysql_fetch_array($sql_j11))
            {
            ?>
                <option value="?jefe1=<?=$r_j11[0]?>" <? if($jefe1==$r_j11[0]){?>selected<?} ?>>
                <?=$r_j11[1]?>
                </option>
                <?
            }
         ?>
                </select>
              </div>
          <td width="286">
            <div align="center">
              <select multiple="multiple" size="15" name="jefe2">
                <option value="?jefe2=0">Seleccione.....</option>
                <?
         include("config.inc.php");
            $sql_j12 =mysql_query("SELECT * FROM usuario WHERE id_emp=$idemp");
            while($r_j12 = mysql_fetch_array($sql_j12))
            {
            ?>
                <option value="?jefe2=<?=$r_j12[0]?>" <? if($jefe2==$r_j12[0]){?>selected<?} ?>>
                <?=$r_j12[1]?>
                </option>
                <?
            }
         ?>
         </select>
                    </div>
    </tr>
        <br/><tr><td colspan='4' align='center' bgcolor="#ECEEF0">
        <a href="crea_emp.php">VOLVER</a></span>&nbsp;&nbsp;&nbsp;&nbsp;<span align="right">
        <input name='Guardar' type='submit' value='Guardar' /></td>
        </tr>
    </form>
</table>

</body>


INSERT INTO `empresa` (`id_emp`, `Nombre_emp`, `Nombre_fan`, `Rut_emp`, `Telefono_emp`, `Direccion_emp`) VALUES
(1, 'Introspectiva', 'INTROSPECTIVA', '702456895-4', '8505363', 'AV. Tabancura #1515'),
(5, 'ACS Asesorias', 'ACS', '78845650-6', '8282828', 'direcion'),
(20, 'Empresa 9', 'Nueve', '88888888-8', '8888888', 'Calle Nueve 99'),
(9, 'prueba2', '', '702456895-4', '8505363', 'AV. Tabancura #1515'),
(10, 'otra', '', '56456123-4', '6456456', 'AV. los leones#1245'),
(11, 'prueba2', '', '45464654-12', '54353453', 'werwerwrwe'),
(18, 'otra', '', '111111111-8', '123456', 'Calle de Prueba 12345'),
(21, 'Empresa Nueva', 'Nueva', '55555555-5', '5555555', '5555555'),
(22, 'Empresa Estrella', 'Estrella Polar', '99999999-9', '99999999', 'Calle Nueve 999');


Tabla usuario

CREATE TABLE IF NOT EXISTS `usuario` (
  `id_user` int(11) NOT NULL auto_increment,
  `Name_user` varchar(200) NOT NULL default '',
  `Pass_user` varchar(200) NOT NULL default '',
  `Tipo_user` varchar(200) NOT NULL default '',
  `rut_usu` varchar(15) NOT NULL,
  `cargo_usu` varchar(25) NOT NULL,
  `tipo_car` varchar(150) NOT NULL,
  `mail_usu` varchar(70) NOT NULL,
  `nombre_emp` varchar(255) NOT NULL,
  `id_emp` int(11) NOT NULL,
  `id_area` int(11) NOT NULL,
  PRIMARY KEY  (`id_user`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=46 ;

--
-- Volcar la base de datos para la tabla `usuario`
--

INSERT INTO `usuario` (`id_user`, `Name_user`, `Pass_user`, `Tipo_user`, `rut_usu`, `cargo_usu`, `tipo_car`, `mail_usu`, `nombre_emp`, `id_emp`, `id_area`) VALUES
(1, 'admin', '21232f297a5', '', '0', '', '', '', 'ACS Asesorias', 5, 0),
(4, 'Usuario 1', 'usuario1', '', '11111111-1', 'Empleado finanza', 'Colaborador', 'carolina@car.com', 'ACS Asesorias', 5, 7),
(5, 'Usuario 2', 'usuario2', '', '22222222-2', 'Contador Gereral', 'Lider', 'usuario3@usu.com', 'ACS Asesorias', 5, 7),
(7, 'Nombre', 'clave', '', '11111111-1', 'Jefe de Planta', 'Lider', 'mail@mail.cl', 'Empresa Estrella', 22, 5),
(9, 'Usuario 1', 'usuario1', '', '11111111-1', 'Gerente Comercial', 'Lider', '11@11', 'ACS Asesorias', 5, 7),
(10, 'Usuario 2', 'usu', '', '22222222-2', 'Empleado finanza', 'Colaborador', '22@22', 'ACS Asesorias', 5, 7),
(11, 'Usuario 3', 'udu', '', '33333333-3', 'Encargado de Comercio Ext', 'Colaborador', '33@33', 'ACS Asesorias', 5, 7);

Tabla temp_1

CREATE TABLE IF NOT EXISTS `temp_1` (
  `idemp` int(11) NOT NULL,
  `idusua` int(11) NOT NULL,
  `nombre` varchar(150) NOT NULL,
  UNIQUE KEY `idusua` (`idusua`),
  UNIQUE KEY `idusua_2` (`idusua`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
« última modificación: Domingo 28 de Junio de 2009, 09:28 por Kataky »

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #7 en: Domingo 28 de Junio de 2009, 08:37 »
0
O sea que tu problema es que siempre te deja seleccionados los que tienen el mismo "id_emp", pero en todo ese código nunca cambiaste la variable $idemp (que es la que usas para seleccionar los usuarios), por lo tanto siempre va a resultar en los mismos campos...
Una cosa que no entiendo son estos valores en el onchange:

onchange="this.value"

onchange="window.location = this.options[this.selectedIndex].value; return true;"

pero yendo al problema en cuestión, yo creo que el problema pasa por no cambiar nunca el valor de $idemp, por lo cual obviamente siempre va a devolver los mismos resultados la consulta...
Tampoco cambiás nunca el valor de $idusua que es el otro factor en una de las consultas, por lo que creo que el script debe andar bien, pero siempre devuelve los mismos resultados por no cambiar el contenido de las variables.
(Nuevamente: puedo estar equivocado obviamente, pero es lo que parece...)

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #8 en: Domingo 28 de Junio de 2009, 09:25 »
0
Hola chesbor

Puede que no estes equivocado, lo más probable es que yo tenga algunos conceptos errados soy nueva con este lenguaje, por favor aclarame unos conceptos;
1. En el select se supone que cualdo el usuario hace una selección, ésta queda almacenada en el name que en el primer caso seria idemp, en el segundo idusua, en el tercero jefe, etc..., siendo así debería poder rescatarlos como variables $idem, $usua, $jefe, etc...
2. La verdad que el evento onchange lo tengo poco claro pero si lo saco no me despliega nada en la segunda lista y menos las posteriones.

En el fondo son selecciones que se deberían ir reduciendo con cada selección Empresa-->Usuario-->Jefe-->Pares-->Colaboradores, de hecho cambie un poco el código, me olvido de la tabla temporal que y la selección la estoy haciendo directa desde la tabla usuario pero se me produce un problema. cuando selecciono la empresa me aparecen inmediatamente todos los usuario en las siguiente cuatro listas y no logro ir reduciendolas, cuando coloco un AND NOT ya no me muestra ningún usuario, y probe directamente en PhpmyAdmin SELECT * FROM usuario WHERE id_emp=$idemp AND NOT id_user=$idusua y me funciona bien.

Por lo tanto creo que tienes razón en que no estoy pasando bien las variables.

Te agradeceria que me aclararas estos conceptos.
PD: Actualicé el código como lo tengo ahora...

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #9 en: Domingo 28 de Junio de 2009, 19:27 »
0
Creo que voy entendiendo lo que querés hacer, pero para hacerlo tenés que usar ajax, porque lo que vos querés hacer es ir modificando el contenido de la web (el contenido de los drop downs por ejemplo) con variables que vas mandando desde html y con contenidos de la base que lees con php, entonces, lo que tendrías que hacer es mas o menos así (y es complicado):
Mostrar el primer dropdown (desde php).
Con un evento onchange llamar una función javascript que se conecte con php mandandole la variable elegida y recibiendo los datos para el segundo drop down.
Escribir ese segundo drop down con javascript.
Con un evento onchange llamar una función javascript que se conecte con php mandandole la variable elegida y recibiendo los datos para el tercer drop down.
Y así sucesivamente.

Es complicado, una forma mas "torpe" en cuanto a programación y uso de hacerlo sería:

Llenar el primer drop down, en el evento onchange llamar una función javascript con el parámetro this.form que haga lo siguiente:
form.target = "_self";
form.action = "Conecta.php";
form.submit();

con eso estarías mandando a la misma página, la variable de la empresa elegida, luego la recibir esa variable, podrías llenar el segundo dropdown y asi sucesivamente.

Traté de hacerte un ejemplo modificando tu código pero está todo muy raro xD... trato de hacer ahora un ejemplito chico y si llego lo posteo.

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #10 en: Lunes 29 de Junio de 2009, 02:15 »
0
Hola chesbor

Gracias, estoy tratando de entender lo que me dices y trataré de avanzar por mi lado, en Visual era muy sencillo, bonito desafío, se me ocurre una idea pero no sé si es posible de hacer, he visto algunas páginas que tienen como varias paginas insertas ¿podrá ser una solución? (una pequeña voladura)

Gracias...

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #11 en: Lunes 29 de Junio de 2009, 03:03 »
0
Supongo que si se podría trabajar con iframes, pero quedaría medio feo y el sistema sería el mismo, solo que en vez de mandar los datos a la misma página tendrías que mandarlo a las páginas que ocupe cada iframe...
Yo creo que trabajando como te dije hoy mas temprano se puede solucionar tranquilamente, con la función "actualizar" para enviar las selecciones y la función "enviar" para grabar el resultado final.

Si lo quisieras con iframes tendrías que hacer varias páginas (una para cada drop down), y la función actualizar debería enviar los datos al iframe correspondiente, por ejemplo:
esta sería la página que contiene el drop down de empresas:
Código: Text
  1.  
  2. actualizar(form, target) {
  3. form.target = target;
  4. form.action = "Conecta.php";
  5. form.submit();
  6. }
  7. <form name="form1" target="_self">
  8. <select name=empresa onchange="actualizar(this.form, 'iframe1')"> options </select>
  9. </form>
  10.  
  11.  

esta sería la de jefe

Código: Text
  1.  
  2. actualizar(form, target) {
  3. form.target = target;
  4. form.action = "Conecta.php";
  5. form.submit();
  6. }
  7. <form name="form2" target="_self">
  8. <select name=jefe onchange="actualizar(this.form, 'iframe1')"> options </select>
  9. </form>
  10.  
  11.  

y luego tendrías una principal que llevaría el diseño:

Código: Text
  1.  
  2. <iframe src="empresas.php" name="iframe0">
  3. <iframe src="jefes.php" name="iframe1">
  4. <form name="principal" target="_self">
  5. <input type="button" name="enviar>
  6. </form>
  7.  
  8.  

obviamente llevarían el código completo, con los while llenando los select, con las consultas sql, etc.
el gravísimo problema, es que tendrías que ir guardando los datos en una tabla temporal, porque luego al enviar desde la página principal, no va a enviar ningún dato porque los select están dentro de las páginas mas chicas.
Yo creo que la solución mas viable sería hacerlo como te dije antes, y si lo querés mas "suelto" y "rapido" tendrías que usar ajax, que comunica en una especie de "tiempo real" el servidor con el cliente.
(muchas comillas no? xD).

La parte que hay que entender de todo esto es la distincion entre lenguajes del lado servidor y del lado cliente (php, asp: servidor / javascript, html: cliente) entonces los datos que ingreses en html (el select) no van a ser tomados en cuenta por php.
Php hace todo su proceso, calcula lo que tiene que calcular y envía un resultado en forma de html, una vez que llega el resultado html la única forma de volver a php es abriendo otro archivo (o el mismo archivo pero abrirlo denuevo) mandando un formulario, o con un link.

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Vaciado de tablas
« Respuesta #12 en: Lunes 29 de Junio de 2009, 04:29 »
0
Gracias chesbor

Lo que sé es  que quede más confundida, lo que me quedo claro es que con iframe no me voy a meter por el momento, voy a tratar de  hacerlo como me dijiste antes, cualquier duda te consulto, nuevamente muchas gracias por tú tiempo y atención, te pasaste.