Foros del Web » Programando para Internet » PHP »

Ayuda por favor Urge! bucles

Estas en el tema de Ayuda por favor Urge! bucles en el foro de PHP en Foros del Web. Hola, gracias. Tengio que mostrar unos productos, de los cuales algunos están activos y otros no. Muestro todos los productos en un orden específico, y ...
  #1 (permalink)  
Antiguo 31/10/2003, 07:42
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
Ayuda por favor Urge! bucles

Hola, gracias.

Tengio que mostrar unos productos, de los cuales algunos están activos y otros no. Muestro todos los productos en un orden específico, y tengo que ir diciendo cuales son activos y cuales no.

Tengo la matriz $servicios[] que tiene ordenados los servicios, y la matriz que he pillo de la BBDD es $row.

Ahora hago un bucle por todos los servicios en el orden preestablecido y voy diciendo di están activos o no. Mi problema es que no avanza la matriz de $row.

Ayuda por favor que tengo que entregarlo o me matan jejej

Código PHP:
for($i=0;$i<=$totservicios;$i++) {
 
$ahora=$row[servicio];
 if(
$servicios[$i]==$ahora):
   
//está activo , osea que pinta formato entrar  y next($row);
   
printf("Activo servicio $servicios[$i] - $ahora <br>");
   
next($row[]);
 else:
   
printf("No activo servicio $servicios[$i] - $ahora <br>");
 endif;

Muchas gracias ;)
__________________
Pancho - Consultor de usabilidad
  #2 (permalink)  
Antiguo 31/10/2003, 07:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas Base de datos .. y tu $row viene de un mysql_fetch_arraY() te vendría mejor hacer un:

Código PHP:
$resultado=mysql_query("SELECT * FROM tabla");

while(
$row=mysql_fecht_array($resultado)){

// aqui lo que quieras con tus $row['campo']


Y si esos "servicios" es un campo de esa tabla .. Ordenalos ahí mismo .. en la consulta SQL:

Código PHP:
$resultado=mysql_query("SELECT * FROM tabla ORDER BY servicio"); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 31/10/2003, 07:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si la consulta te devuelve los productos activos en el mismo orden que tienes el array, seria sustituir el

next($row[]);

por

$row=mysql_fetch_array($result); // o de la forma que carges $row

Esto suponiendo que $row solo contiene la fila actual. Que es lo que parece por $row[campo].

Si no estan en el mismo orden, tendrias que cambiar la logica. En ese caso lo haria al reves, recorriendo los registros devueltos, y usando un array de tantos elementos como servicios, con valores por defecto 0, que se actualizaria en funcion del resultado de array_search() (www.php.net/array_search), marcando con 1 el indice correspondiente. Luego recorrerias el array de servicios y este ultimo array, mostrando el mensaje en funcion si el nuevo array tiene un 0 o un 1.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 31/10/2003, 08:27
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
Gracias a ambos ;)

josemi, he decidido cambiar la lógica por la que me indicas, creando una matriz que teng todos los servicios s no y que cambien.

sería esto no??

Código PHP:
$resultado=mysql_query($sql);
while(
$row=mysql_fecht_array($resultado)){
    
$clavearray_search ($row[servicio],$servicios[]);
    
$chupi[$clave]="si";
}


? ?
__________________
Pancho - Consultor de usabilidad
  #5 (permalink)  
Antiguo 31/10/2003, 08:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Creo recordar que en el array_search() el array va sin []. Revisalo en el manual.

Pero si, por encima me parece que esta bien. Sera cuestion de que pruebes, por si hay algun problema. Prueba los casos limite, como 0 activos, todos activos, 1 activo, todos menos 1 activos y un numero cualquiera activo. Creo que estos son todos los casos posibles, asi que si te funcionan estas pruebas, es que esta bien.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 31/10/2003, 08:53
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
Josemi no te molesto más pero por favor dime porque conio me da este error :

Fatal error: Call to undefined function: mysql_fecht_array() in /home/mdo3/webmasters/index.php on line 172



Código PHP:
$resultado=mysql_query($sql);
printf($sql);
while(
$row=mysql_fecht_array($resultado)){
    
$kk=$row[servicio];
    
$clavearray_search($kk,$servicios);
    
$chupi[$clave]="si";

__________________
Pancho - Consultor de usabilidad
  #7 (permalink)  
Antiguo 31/10/2003, 09:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Es debido a que a veces a los dedos se les ocurre pensar por su cuenta y escriben mal las cosas

mysql_fecht_array() no existe. mysql_fetch_array() si existe.

Saludos.

PD: No te atormentes, todos hemos tenido (y tendremos) errores de ese tipo. Por eso ante cualquier error de una funcion lo primero es revisar nuestra "ortografia" con el manual delante.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 31/10/2003, 09:09
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
jejeje ;)

funciona!!!!!!!!!!!!!!!!!!!!!!!!!!!!

GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!!
__________________
Pancho - Consultor de usabilidad
  #9 (permalink)  
Antiguo 31/10/2003, 09:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Jejej... el error en principio fué mio .. puse msyql_fecht_array() en lugar de lo correcto: mysql_fetch_array() .. (Antonito hizo el "cut-and-paste" y no se percató ¬¬)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 31/10/2003, 11:21
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
jeje claro, copié el tuyo!!!

me vuelvo un poco vago...
__________________
Pancho - Consultor de usabilidad
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 09:04.