Foros del Web » Programando para Internet » PHP »

Forma correcta para meter un array en una consulta MySQL.

Estas en el tema de Forma correcta para meter un array en una consulta MySQL. en el foro de PHP en Foros del Web. Buenas gente: Mirar tengo un problemilla del cual no se salir jejeje. Tengo una tabla MySQL con los campos: id,precio,zona,descripcion,codigo, tb. Aparte de esos seis ...
  #1 (permalink)  
Antiguo 08/03/2007, 00:35
 
Fecha de Ingreso: febrero-2007
Mensajes: 73
Antigüedad: 17 años, 2 meses
Puntos: 0
Forma correcta para meter un array en una consulta MySQL.

Buenas gente:

Mirar tengo un problemilla del cual no se salir jejeje.

Tengo una tabla MySQL con los campos:

id,precio,zona,descripcion,codigo, tb.

Aparte de esos seis campos luego tengo 8 más que se llaman: imagen1, imagen2, imagen3, imagen4, imagen5, imagen6, imagen7 e imagen8

Bien, tengo un formulario del cual obtengo el contenido para todos estos campos, pero con una peculiaridad.

Yo me guardo las imágenes que subo del formulario en un array llamado $archivos[]. ¿Donde esta el problema? En que muchas veces este array va a ser diferente a 8, y no va a llenar todos los campos de imágenes...

Mientras lo lógico podría ser:

//$consulta = "INSERT INTO $tabla values ('$id','$precio','$zona','$descripcion','$code','$ tb'".$archivos[0]."','".$archivos[1]."','".$archivos[2]."','".$archivos[3]."','".$archivos[4]."','".$archivos[5]."','".$archivos[6]."','".$archivos[7]."')";

El problema es como bien he comentado antes, que el array no lleg a a 7 y no se como hacer para llenar esos campos.

Mi pregunta es... De que forma lo hago para que no me cree conflictos a la hora de hacer consultas más adelante.

Dejo los campos en blanco..., recorro el array y ¿"hago magia"? xDD es que no se me ocurre que hacer.

Y por último una cosa "algo" relacionada. A la hora de insertar urls en campos de la base de datos, guardo la url completa? h t t p : / / w w w. dominio . c o m. O guardo la url interna?

Muchas gracias y un saludo a todo el mundo.

Última edición por pipep; 08/03/2007 a las 02:52
  #2 (permalink)  
Antiguo 08/03/2007, 04:18
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Forma correcta para meter un array en una consulta MySQL.

Lo mejor sería que tuvieses una tabla aparte (relacionada con clave foránea) donde guardaras los archivos. De este modo, te evitarías esos problemas con los arrays. Tendrás que introducir más código pero tendrás una aplicación mejor estructurada.

Un saludo
  #3 (permalink)  
Antiguo 08/03/2007, 13:46
 
Fecha de Ingreso: febrero-2007
Mensajes: 73
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Forma correcta para meter un array en una consulta MySQL.

jerkan, podrías poner un ejemplo de como harias tu la consulta a la hora de registrar los campos precio, zona, descripcion,codigo y luego las imágenes aparte?

Muchas gracias.
  #4 (permalink)  
Antiguo 08/03/2007, 23:58
Avatar de TheViejo  
Fecha de Ingreso: marzo-2007
Ubicación: Delante de mi Vetusto PC.
Mensajes: 29
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: Forma correcta para meter un array en una consulta MySQL.

Una forma de hacer lo que quieres, es comprobar una a una las entradas del array y si estas no existen créalas y substituirlas por un texto que te indique que ese campo está vacio. Un ejemplo que se me ocurre es este.

Código PHP:

// El total de entradas que esperas que tenga el array + 1
$total 8;

// Definicion del texto vacio o nulo en el array
$Vacio 'vacio';



for (
t=0;$t<total;$t++)    // Recorremos todo el array  
 
if (!isset($archivos[$t]))  // Comprueba que las que existan en el array
  
$archivos[$t] = $Vacio;  // Aquí si la entrada del array no existe la crea y
                                    // llena con el valor de $Vacio 
Es una forma de hacerlo improvisada y rápida, hay otras formas, pero se me ha ocurrido esta, solo debes tener en cuenta el $total del array y no tendrás problemas en un futuro. Si tienes dudas no dudes en darme un toque.

Un saludo.
  #5 (permalink)  
Antiguo 09/03/2007, 02:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 73
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Forma correcta para meter un array en una consulta MySQL.

TheViejo, la verdad es que la forma que me propones me parece bien.

Mi duda viene en como realizaría una consulta MySQL para que me devolvierá otra vez en a un array solo los registros cuyo valor sea diferente de "vacio". Y claro en una row, se puede dar el caso que sean 3, pero en otra 8.

¿Eso no dará problemas?

"Selecciona solo los campos cuyo valor sea diferente de vacio".

SELECT * FROM TABLE .....?

Un saludo y muchas gracias.
  #6 (permalink)  
Antiguo 09/03/2007, 17:09
Avatar de TheViejo  
Fecha de Ingreso: marzo-2007
Ubicación: Delante de mi Vetusto PC.
Mensajes: 29
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: Forma correcta para meter un array en una consulta MySQL.

Hola pipep, una forma de poder recuperar esta información, seria volviendo a recorrer todo el array devuelto de la consulta a la bd y detectando cuales son diferentes de "vacio". Por ejemplo :

Código PHP:
$Sql =' SELECT * FROM .....'// La sentencia SQL para obtener la row

// Definición del texto vacio o nulo en el array
$Vacio 'vacio';
$Resultado False// Donde Guardará los valores diferentes a vacio
$row mysql_fetch_row($result); // Devuelve la linea seleccionada
if (is_array($row)) // Comprobamos que es un array
 
{
  
$Total count($row);
  for (
$t=0;$t<$total;$t++)
    if (
$row[$t] != $Vacio// Comprobamos que es valor sea diferente a "vacio"
      
$Resultado[] = $row[$t];
  }

// Ahora puedes acceder a $Resultado[NUMERO] y recuperar
// su información. 
No si esto te servirá, si me pudieras dar mas datos de como recuperas la información de la bd, sentencia empleada y como manejas las rows(mysql_fetch_row, mysql_fetch_array ...) podría pensar en algo mejor.
  #7 (permalink)  
Antiguo 09/03/2007, 18:31
 
Fecha de Ingreso: febrero-2007
Mensajes: 73
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Forma correcta para meter un array en una consulta MySQL.

Que contiene $result? o querias poner:

$row = mysql_fetch_row($sql)

Un saludo.
  #8 (permalink)  
Antiguo 09/03/2007, 18:40
Avatar de TheViejo  
Fecha de Ingreso: marzo-2007
Ubicación: Delante de mi Vetusto PC.
Mensajes: 29
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: Forma correcta para meter un array en una consulta MySQL.

Lo siento a veces pienso más rápido que lo puedo escribo, esto es más correcto.

Código PHP:
$Sql =' SELECT * FROM .....'// La sentencia SQL para obtener la row
$result mysql_query($Sql); // Hace la consulta a la bd


// Definición del texto vacio o nulo en el array
$Vacio 'vacio';
$Resultado False// Donde Guardará los valores diferentes a vacio
$row mysql_fetch_row($result); // Devuelve la linea seleccionada
if (is_array($row)) // Comprobamos que es un array
 
{
  
$Total count($row);
  for (
$t=0;$t<$total;$t++)
    if (
$row[$t] != $Vacio// Comprobamos que es valor sea diferente a "vacio"
      
$Resultado[] = $row[$t];
  }

// Ahora puedes acceder a $Resultado[NUMERO] y recuperar
// su información. 
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 05:50.