Foros del Web » Programando para Internet » PHP »

Buscador e inserción múltiple

Estas en el tema de Buscador e inserción múltiple en el foro de PHP en Foros del Web. Buenos días a todos! Estoy intentando hacer un buscador php para que tras seleccionar una palabra clave y aparecer aquellas líneas con la información que ...
  #1 (permalink)  
Antiguo 07/08/2014, 00:52
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Buscador e inserción múltiple

Buenos días a todos!

Estoy intentando hacer un buscador php para que tras seleccionar una palabra clave y aparecer aquellas líneas con la información que busco, me inserte una línea en todas las tablas que tienen esa información en una BBDD mysql. He hecho ya uno que tiene botones individuales para cada fila encontrada y hacemos en una un otra fila todo lo que necesitamos (borrar tabla, subir contenido...).

En este caso el buscador selecciona toda aquella información de usuario que tenga el mismo nombre de empresa, y lo que busco es, que solamente con un botón, se suba el mismo contenido en todas las tablas que poseen el mismo nombre de empresa.

El problema es, que tengo dos phps, uno en el que se recoge mediante post la empresa que escriba y que me dice que me muestre la info mientras la tabla tenga ese nombre de empresa, y la otra a la que apunta el botón subir archivos. Debido a esto, no se cómo decirle en el segundo php que me inserte dentro de cada una de las tablas que tengo creadas los ficheros que selecciono, ya que el criterio de búsqueda solo puede estar en un php y en este caso es en el primero, y ponerlo todo en un mismo php me es imposible, ya que tengo ese botón de subir archivos que nevesita tener ese otro php.

Alomejor es más sencillo de lo que parece pero la verdad es que estoy bloqueada...si podeis echarme una mano...muchas gracias!
  #2 (permalink)  
Antiguo 07/08/2014, 03:03
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 4 meses
Puntos: 8
Respuesta: Buscador e inserción múltiple

No entiendo muy bien lo que quieres hacer.... pero ¿no podrías almacenar en una variable de SESION el valor/dato que necesitas usar en el otro archivo PHP?

Guarda en $_SESSION['dato_buscador1'] lo que necesites... y si es necesario una vez lo uses en el 2º fichero, vacia el valor con $_SESSION['dato_buscador1']='';

Saludos.
__________________
Follow me on twitter @franbedia
  #3 (permalink)  
Antiguo 07/08/2014, 04:18
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Buscador e inserción múltiple

Alomejor me he alargado mucho, pero creo que aún así si que me has entendido ;)

Tengo un buscador en un php, meto un nombre de empresa y me muestra la info necesaria por filas y un botón común de 'subir ficheros'. Quiero que ese botón me suba el contenido en todas las tablas de mi base de datos que me han salido como resultado en la búsqueda.

El problema es que, se recoge la búsqueda en el primer php y no puedo volver a recogerla en el php del botón, con lo que no puedo hacer la consulta correctamente. Espero haberme explicado así mejor.

Nunca he utilizado sesiones...de esa forma podría utilizar la variable q recoge la búsqueda en un segundo php, en este caso el que sube el contenido????

Muchas gracias!
  #4 (permalink)  
Antiguo 07/08/2014, 05:21
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 4 meses
Puntos: 8
Respuesta: Buscador e inserción múltiple

Bueno... si publicases el código quizás seria mas fácil ayudarte.

Lo que podrías hacer, es en el primer fichero PHP, según vas mostrando los resultados ir guardando los IDs en una variable de sesión con formato de array... De esta forma, tendrás todos los IDs en una variable.
Despues, en el segundo PHP vas recorriendo la variable de sesion y metiendo en cada ID el archivo.

Ejemplo:

Código PHP:
Ver original
  1. <?php
  2. //inicio el uso de sesiones
  3.  
  4. //hago la query
  5. $consulta = mysqli_query($link,"SELECT id, nombre FROM empresas WHERE nombre LIKE '%$busqueda%' ");
  6.  
  7. $indice=0;
  8.  
  9. //recorro los resultados de busqeda
  10. while($row=mysqli_fecth_array($consulta)) {
  11.  
  12. //aqui voy pintando los resultados
  13. echo "EMRESA: ".$row[1];
  14.  
  15. //voy almacenando los IDs
  16. $_SESSION['ids_busqueda'][$indice]=$row[0];
  17. $indice++;
  18.  
  19. }
  20.  
  21. //en otra variable de session guardo el total de los resultados
  22. $_SESSION['total_ids']=mysqli_num_rows['$consulta'];
  23. ?>

Con el codigo anterior, tendras una variable de sesion que podras usar en cualquier lugar.
Esta variable tendra los IDs de los resultados de busqueda...
Si tu busqueda devolvio 3 empresas por ejemplo tendras:

$_SESSION['ids_busqueda'][0]=131231
$_SESSION['ids_busqueda'][1]=4523452
$_SESSION['ids_busqueda'][2]=34523

Luego en el 2º fichero PHP recorres la variable de sesion y vas haciendo lo que corresponda:

Ejemplo:

Código PHP:
Ver original
  1. <?php
  2.  
  3. for($aux=0;$aux<$_SESSION['total_ids'];$aux++) {
  4.  
  5. mysqli_query("INSERT INTO ..... WHERE id=".$_SESSION['ids_busqueda'][$aux]);
  6.  
  7. }
  8.  
  9. ?>

Espero haberme explicado...
En cualquier caso, esto es solo una opcion... pero seguro hay otra más eficiente y mejor. Si posteas el codigo ayudaria!

Saludos.
__________________
Follow me on twitter @franbedia
  #5 (permalink)  
Antiguo 07/08/2014, 06:04
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Buscador e inserción múltiple

No he publicado el código porque es un poquito largo y no quería liar más, pero ahí va un cacho:

Código del primer .php:
Código PHP:
Ver original
  1. <html>
  2.  
  3. <HEAD>
  4.    
  5. <H2 align = "center">Insertar contenido por nombre de empresa</H2>
  6. <form align = "center" name = "form1" method = "post" action = "buscadorgrupo.php" id = "cdr">
  7. <br><br>
  8. Empresa:
  9. <input align = "center" name = "busca" type = "text" autocomplete = 'off'>
  10. <input type = "submit" name = "submit" value = "Buscar">
  11.  
  12. </HEAD>
  13.  
  14. </form>
  15.  
  16. <body>
  17.  
  18. <?php
  19.  
  20.     $busca = "";
  21.     //recogemos el valor que se mete en el campo de texto mediante post
  22.     $busca = $_POST['busca'];
  23.  
  24.     //Aquí va la conexión a la BBDD
  25.            
  26.     if($busca!=""){
  27.         $busqueda = "SELECT * FROM ordenadores WHERE nombre_de_la_empresa LIKE '".$busca."'";
  28.         $result = mysql_query($busqueda);
  29.                
  30.         while($fila = mysql_fetch_array($result)){
  31.  
  32.             echo "<table align = 'center' cellspacing='2' cellpadding='2' border='1'>";
  33.  
  34.             echo "<tr>";
  35.    
  36.             echo "<TH>Id</TH>";
  37.             echo "<TH>Dispositivos</TH>";
  38.             echo "<TH>Empresa</TH>";
  39.  
  40.             echo "</tr>";
  41.  
  42.             echo "<tr>";
  43.            
  44.             echo "<td align = 'center'>$fila[id]</td>";
  45.             echo "<td align = 'center'>$fila[Dispositivos]</td>";
  46.             echo "<td align = 'center'>$fila[nombre_de_la_empresa]</td>";
  47.  
  48.             echo "</tr>";
  49.  
  50.             echo "</table>";
  51.  
  52.         }
  53.     }
  54.  
  55.     echo "<br><br>";
  56.    
  57.     echo "<table align = 'center' cellspacing='2' cellpadding='2' border='1'>";
  58.  
  59.     echo "<tr>";
  60.            
  61.     echo "<td align = 'center'>";
  62.     echo "<form action = 'insertar_contenido1_g.php' method = 'post' enctype = 'multipart/form-data'>";
  63.     echo "<input type = 'file' name = 'cliente[]' multiple/><br/>";
  64.     echo '<input type = "hidden" name = "mac_address" value = "'.$fila['id'].'">';
  65.     echo '<input type = "hidden" name = "var_id" value = "'.$fila['id'].'" />';
  66.     echo '<input type = "hidden" name = "var_MAC" value = "'.$fila['Dispositivos'].'" />';
  67.     echo '<input type = "submit" name = "enviar" value = "Subir"/><br/>';
  68.     echo "</form>";
  69.  
  70.     echo "</tr>";
  71.    
  72.     echo "</table>";
  73. ?>

Ahora muestro el php al que me lleva el botón para insertar el contenido:

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <LINK REL="stylesheet" HREF="css.css" TYPE="text/css">
  4.     <meta charset = "utf-8"/>
  5. </head>
  6. <body>
  7.  
  8. <?php
  9.  
  10. $v1 = $_POST['var_id'];
  11. $v2 = $_POST['var_MAC'];
  12.  
  13. //Aquí conectamos con la BBDD:
  14.  
  15. $mostrar = mysql_query("show tables like '$v1'");
  16.  
  17. $query = mysql_query("SELECT * FROM info_users WHERE id = '$v1' AND MAC = '$v2'");
  18.  
  19.     if(mysql_fetch_row($query) != 0) {
  20.  
  21.         //Seleccionamos el campo dispositivos de la tabla ordenadores
  22.         $query2 = "SELECT Dispositivos FROM ordenadores where id = '$v1'";
  23.         $resultado = mysql_query($query2);
  24.         $fila = mysql_fetch_array($resultado);
  25.  
  26.         //Seleccionamos un fichero y lo copiamos al servidor.
  27.         $nombreDirectorio = "/home/feria/raspberries/".$fila["Dispositivos"]."/contenido". $sigcarpeta . "/";
  28.         $nombreFichero = $_FILES['cliente']['name'];
  29.         $nombreCompleto = $nombreDirectorio . $nombreFichero;
  30.         //Vamos a querer hora y fecha de la subida de ficheros dentro de la BBDD
  31.         $date = "Fecha_Entrada";
  32.            
  33.         foreach (($_FILES['cliente']['error']) as $key => $error) {
  34.             if ($error == UPLOAD_ERR_OK) {  
  35.                 // Obtienes el nombre de acuerdo al índice $key
  36.                 $nombreFichero = $_FILES['cliente']['name'][$key];
  37.                 $nombreCompleto = $nombreDirectorio . $nombreFichero;
  38.  
  39.                      $tmp_name = $_FILES['cliente']['tmp_name'][$key];  
  40.                      $name = $_FILES['cliente']['name'][$key];
  41.                     //copiamos los ficheros seleccionados en el botón "examinar" a la carpeta destino.
  42.                     if(copy($_FILES['cliente']['tmp_name'][$key], $nombreCompleto)) {
  43.                     } else {
  44.                          echo '<h4>Error moviendo archivo a su destino final.</H4><br/>';
  45.                     }
  46.  
  47.             } else if($error == 4) {
  48.                 echo '<H4>No seleccionaste un archivo para subir.</H4>';
  49.             }else {
  50.                 echo "<H4>No se ha podido subir el fichero.</H4><br>";
  51.                 echo '<H4><a href = "index3.php" style = "text-decoration:none;color:#808080;>Insertar nuevo contenido.</H4><br></a>';
  52.             }  
  53.         }
  54.        
  55.     }
  56.  
  57. ?>
  58. </body>
  59. </html>

(el primer php está puesto íntegro, el segundo he quitado cosas que no son necesarias aquí para entender lo que hace y de esta forma agilizo un poco la cosa)

EL php del botón funciona perfecto en la otra parte de la interfaz, como se ve está escrito para darle dinamismo a la interfaz, pero en este caso, tal y como dije, quiero que se inserten a la vez.

Voy a probar lo que me aconsejas, mil gracias.
  #6 (permalink)  
Antiguo 08/08/2014, 05:48
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Buscador e inserción múltiple

Hola fbedia,

llevo desde ayer mirando el tema de las sesiones, para entenderlas un poco, ya que como comenté no había trabajado nunca con ellas.

He decidido hacerlo de la primera forma que me dijiste, teniendo en cuenta el nombre de la empresa y diciendo en la consulta, que me inserte el contenido en las tablas cuyo nombre de empresa sea el escrito en el campo de texto búsqueda. Dicha búsqueda se recoge bien en el php del botón 'insertar contenido', ya que he puesto un echo y aparece la empresa una vez que he 'subido' el contenido. Y digo 'subido' porque no me hace lo que me gustaría, y me aparece el popular Warning: "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in", ya que por lo que he podido ver en numerosos sitios a lo largo de la creación de esta interfaz, este warning quiere decir que el código está mal escrito, y teniendo en cuenta que el mismo código me funciona perfectamente sin sesiones...supongo que el fallo está en mi consulta. Pongo el código para aclara más y ver si puedes echarme una mano:

Código php de la búsqueda:
Código PHP:
Ver original
  1. <?
  2.     session_start();
  3. ?>
  4.  
  5. <html>
  6.  
  7. <HEAD></HEAD>
  8.  
  9. <H2 align = "center">Insertar contenido por nombre de empresa</H2>
  10. <form align = "center" name = "form1" method = "post" action = "buscadorgrupo.php" id = "cdr">
  11. <br><br>
  12. Empresa:
  13. <input align = "center" name = "busca" type = "text" autocomplete = 'off'>
  14. <input type = "submit" name = "submit" value = "Buscar">
  15. <br><br>
  16. <br><br>
  17.  
  18. </form>
  19.  
  20. <body>
  21.  
  22. <?php
  23.  
  24. error_reporting(E_WARNING);
  25.  
  26.     $_SESSION["busca"] = "";
  27.     //recogemos el valor que se mete en el campo de texto mediante post
  28.     $_SESSION["busca"] = $_POST['busca'];
  29.  
  30.     //Aquí iría la conexión a la bbdd
  31.            
  32.     if(isset($_SESSION["busca"])){
  33.  
  34.         $busqueda = "SELECT * FROM raspberries WHERE nombre_de_la_empresa LIKE '".$_SESSION["busca"]."'";
  35.         $result = mysql_query($busqueda);
  36.  
  37.         //$indice = 0;
  38.  
  39.         //Recorro los resultados de la búsqueda, mientras existan que me haga lo siguiente:            
  40.         while($fila = mysql_fetch_array($result)){
  41.  
  42.             echo "<table align = 'center' cellspacing='2' cellpadding='2' border='1'>";
  43.  
  44.             echo "<tr>";
  45.    
  46.             echo "<TH>Id</TH>";
  47.             echo "<TH>Dispositivos</TH>";
  48.             echo "<TH>Empresa</TH>";
  49.  
  50.             echo "</tr>";
  51.  
  52.             echo "<tr>";
  53.            
  54.             echo "<td align = 'center'>$fila[id]</td>";
  55.             echo "<td align = 'center'>$fila[Dispositivos]</td>";
  56.             echo "<td align = 'center'>$fila[nombre_de_la_empresa]</td>";
  57.  
  58.             echo "</tr>";
  59.  
  60.             echo "</table>";
  61.  
  62.         }
  63.        
  64.     }
  65.  
  66.     echo "<br><br>";
  67.    
  68.     echo "<table align = 'center' cellspacing='2' cellpadding='2' border='1'>";
  69.  
  70.     echo "<tr>";
  71.            
  72.     echo "<td align = 'center'>";
  73.     echo "<form action = 'insertar_contenido1_g.php' method = 'post' enctype = 'multipart/form-data'>";
  74.     echo "<input type = 'file' name = 'cliente[]' multiple/><br/>";
  75.     echo '<input type = "hidden" name = "mac_address" value = "'.$fila['id'].'">';
  76.     echo '<input type = "hidden" name = "var_id" value = "'.$fila['id'].'" />';
  77.     echo '<input type = "hidden" name = "var_MAC" value = "'.$fila['Dispositivos'].'" />';
  78.     echo '<input type = "submit" name = "enviar" value = "Subir"/><br/>';
  79.     echo "</form>";
  80.  
  81.     echo "<td align = 'center'>";
  82.     echo "<form action = '' method = 'post'>";
  83.     echo '<input type = "hidden" name = "prueba2" value = ""/><br/>';
  84.     echo "</form>";
  85.  
  86.     echo "</tr>";
  87.    
  88.     echo "</table>";
  89.  
  90.  
  91.     echo "<TABLE align = 'center'>";
  92.             echo "<TR>";
  93.                 echo "<TD><H4><a href = 'vacio.html' style = 'text-decoration:none;color:#808080;'><br>Volver a la página principal</a></H4></TD>";
  94.             echo "</TR>";
  95.     echo "</TABLE>";
  96.  
  97. ?>
  98.  
  99. </body>
  100. </html>

Ahora muestro la parte del php del botón que sube el contenido en la que aparecen sesiones.

Código PHP:
Ver original
  1. echo $_SESSION["busca"];
  2.  
  3. //En medio de estas dos líneas de código van otras consultas y líneas que crean carpetas en directorios (alguna se muestran en el código que añadí en mi anterior intervención) en las que no uso sesiones, así que supongo que no influyen en el fallo
  4.  
  5. mysql_query("INSERT INTO `{$v1}` VALUES ('$v1', '$fila[Dispositivos]','$puertos[Puerto]','$puertos[Puerto_ssh]', '$nombreDirectorio', now(), '$SI', '$NO', '', '$empresa2[nombre_de_la_empresa]') WHERE nombre_de_la_empresa=".$_SESSION["busca"]);

Como ya he dicho, con el echo efectivamente se muestra la empresa que introduzco en el php, así que no se si me falta alguna línea en la que añadir sesión o si la consulta está mal hecha...si pudieras ayudarme un poquillo, te lo agradecería...

Etiquetas: buscador, inserción, múltiple, mysql, tabla
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 12:11.