Foros del Web » Programando para Internet » PHP »

if(condicion)

Estas en el tema de if(condicion) en el foro de PHP en Foros del Web. Hola de nuevo foreros, le estoy cogiendo gustillo a php y voy haciendo programillas, pero claro soy muy novatilla aun y necesito vuestra ayuda. Os ...
  #1 (permalink)  
Antiguo 23/02/2010, 03:32
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 11 meses
Puntos: 3
if(condicion)

Hola de nuevo foreros, le estoy cogiendo gustillo a php y voy haciendo programillas, pero claro soy muy novatilla aun y necesito vuestra ayuda.

Os pongo el codigo que tengo primero y a continuacion explico un pco
Código PHP:
<?php
session_start
();
require (
'db_connect.php');
require (
'functions.php');
connectar_imc();
?>
<form action = "m5.php" method = "post">
<?php
   
    
    
echo "<select name=\"year\" id=\"year\">";
    for(
$i=date(Y);$i>=2005;$i--) {
        echo 
"<option value=\"".$i."\"";
        if(
$_POST['year']==$i) echo " selected";
        echo 
">".$i."</option>";
    }
    echo 
"</select>";
    echo 
"&nbsp;<input id=\"button\" name=\"enviar\" class=\"boton\" type=\"submit\" value=\"Ver\" ";
?>
    </form>

<?php
if( $_POST ){      
    
    echo 
"<table border='1'>";
    echo 
"<tr><td><b>Distribuidores</b></td><td><b>Enero</b></td><td><b>Febrero</b></td><td><b>Marzo</b></td><td><b>Abril</b></td><td><b>Mayo</b></td><td><b>Junio</b></td><td><b>Julio</b></td><td><b>Agosto</b></td><td><b>Septiembre</b></td><td><b>Octubre</b></td><td><b>Noviembre</b></td><td><b>Diciembre</b></td></tr>";

    echo 
"<tr>";

    echo 
"<td>";
        
$query_dis=("SELECT id_distributor, distributor_name FROM distributor WHERE deleted_distributor = '0' order by distributor_name");
        
$result_dis=(mysql_query($query_dis));
        
        while (
$rows mysql_fetch_row($result_dis)){
        
            echo 
"<b>$rows[1]</b><br><br>";
            echo 
"<hr>";
            }

    
    echo 
"</td>";
    
    for(
$i=1;$i<=12;$i++) {
        if(
$i<10$mes="0".$i;
        else 
$mes $i;
        
$desde $_POST['year']."-".$mes."-01";
        
$hasta $_POST['year']."-".$mes."-31";    

        echo 
"<td>";
        echo 
"<b>ALTAS NO DEMO:</b><br>";
        
$query=("SELECT COUNT(client_name), registration_date, SUM(contracted_space/1073741824),id_distributor, id_pay_method, type_of_client, id_client FROM client WHERE id_distributor = '".$_POST['distributor']."'  AND registration_date >= '".$desde."' and registration_date <= '".$hasta."' and demo_account = '0' order by count(client_name)");
        
$resultmysql_query($query) or die (mysql_error());
             while(
$row=mysql_fetch_array($result)) {

                if(
$row[0]==0){
                 echo 
"No hay altas en ".$mes."-".$_POST['year']."<br><br>";
                }else{
                    echo   
"Clientes:&nbsp;" .$row[0]."<br>".
                    
"Espacio:&nbsp;".$row[2]."&nbsp;GB<br><br>";
                    
                    }
        
            }    
        echo 
"</td>";
        
    }
        
echo 
"</tr>";
       
}
?>
Os explico un poco lo que quiero hacer, porque con el titulo no queda muy claro porque no tenia ni idea de que poner.

El codigo que os he puesto tiene un textbox con los años(2009,2010..) y un submit que me lo envia. Una vez envio recojo el valor seleccionado digo que me muestre una tabla con todos los meses y una de los distribuidores. Para poner los distribuidores lo he hecho atraves de una consulta mysql y mostrar el resultado. Luego como podeis ver tengo un for para los meses, eso es para que me los vaya metiendo cada uno en su respectivo mes. Y lo siguiente la consulta de lo que quiero mostrar en cada mes.
(esto es una idea)Ahora bien nose como hacer para que reconozca que el id_distributor de la primera consulta es igual al de la seguna consulta.
Es decir para que me muestre los distribuidores en la primera columna y respectivamente en sus meses la segunda consulta pero que sea de ese distribuidor.

No se si habra quedado muy claro, para cualquier duda aquí estoy!
MIL GRACIAS!
  #2 (permalink)  
Antiguo 23/02/2010, 03:54
Avatar de Midal  
Fecha de Ingreso: febrero-2010
Ubicación: Valencia
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 9
Respuesta: if(condicion)

Muy claro no queda, al menos para mi xD.

La fila de la primera consulta la guardas en $rows, y la de la segunda en $row, no? Y lo que quieres comparar es la columna id_distributor de $rows con la columna id_distributor de $row, no?

No sé si simplemente te valdrá con esto
Código PHP:
if($rows['id_distributor'] == $row['id_distributor']){
    echo 
"Iguales";
}else{
    echo 
"diferentes";

  #3 (permalink)  
Antiguo 23/02/2010, 04:05
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: if(condicion)

jajaj pues para no haberte quedado muy claro lo has entendido bien :P

quiero hacer una comparacion como la que tu me has dicho(esa es la idea que tengo, pero si hay algo mejor, bienvenido sea).

Lo que quiero conseguir con eso es que me muestre los datos de la segunda consulta en la fila donde coincida el id_distribuidor del distribuidor que estoy mostrando en la 1ª columna con el id_distribuidor de la segunda consulta para mostrar.

El codigo que me han facilitado a ser lo que necesito, donde lo tendria que poner en mi codigo??
Gracias por tu respuesta
  #4 (permalink)  
Antiguo 23/02/2010, 04:13
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Respuesta: if(condicion)

A mi sigue sin quedarme claro. Cuando vi la respuestade Midal creí que lo tenía claro, pero luego leí tu mensaje y me volví a quedar con el culo torcido.

Necesitas que id_distribuidor se consulte en la bd?
Código PHP:
Ver original
  1. $query=("SELECT COUNT(client_name), registration_date, SUM(contracted_space/1073741824),id_distributor, id_pay_method, type_of_client, id_client FROM client WHERE id_distributor = '".$rows['distributor']."'  AND registration_date >= '".$desde."' and registration_date <= '".$hasta."' and demo_account = '0' order by count(client_name)");
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #5 (permalink)  
Antiguo 23/02/2010, 04:28
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: if(condicion)

Buah es que segun los pienso yo es facil, pero al explicarlo es un poco lio.
Mira pongo una imagen para que veais lo que tengo ahora.

edito--> por motivo profesionales quito la imagen.


Ahora tengo en la columna distribuidores 3(distribuidores) y en la columna de los meses solo me sale el resultado de una consulta. Pues yo quiero que la consulta me la haga tantas veces como distribuidores hay, por lo tanto la consulta se tiene que hacer de los distribuidores, es decir me tendria que salir 3 veces no hay resultas. Y para hacer eso supongo que es comparando el id_distributor de los distribuidores con el id_distributor de los datos n?

a ver si a la 3º va la vencida xD

Última edición por marinesky; 23/02/2010 a las 05:05
  #6 (permalink)  
Antiguo 23/02/2010, 04:31
Avatar de Midal  
Fecha de Ingreso: febrero-2010
Ubicación: Valencia
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 9
Respuesta: if(condicion)

Yo me he vuelto a perder también. Ahora no se muy bien que se pides.


Quizás es mejor que nos digas como será la tabla. Mi idea mental es que quieres algo así


Código:
Distribuidores | Enero | Febrero | Marzo | Abril  |...
---------------------------------------------------
Pepito         |   X   |        |        |        | 
----------------------------------------------------
Andres         |       |        |    X   |        | 
----------------------------------------------------
Y se marcaría una X en el mes que dicho distribuidor se dio de alta.


Así pues me imagino que la primera tabla de la BD almacenará una relación de nombres de distribuidores con sus ID, algo así


Código:
Nombre tabla: distributor


id_distributor   |   distributor_name |
1                |   Pepito             |
-----------------------------------------
2                |   Andrés             |
Y en la segunda tabla imagino que tiene una relacion de id_distributor con los diferentes meses en los que se dieron de alta

Nombre tabla: client
Código:
id_distributor   |   registration_date |
1                |   1            |
-----------------------------------------
2                |   3             |

No se si será algo así, a ver si nos puedes sacar de dudas


PD: Vaya por dios, dos horas escribiendo esto y mientras lo escribia has adjuntado tu una imágen xD
  #7 (permalink)  
Antiguo 23/02/2010, 04:50
Avatar de Midal  
Fecha de Ingreso: febrero-2010
Ubicación: Valencia
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 9
Respuesta: if(condicion)

Lo primero es que no tienes bien echa la tabla, es decir... Tu lo que ahora haces es imprimir primero un listado de distribuidores separados por lineas, lo que deberías hacer es separarlos en diferentes celdas y de igual forma los demas datos por que si no luego no te va a cuadrar nada.

Así pues la consulta

Código PHP:
$query_dis=("SELECT id_distributor, distributor_name FROM distributor WHERE deleted_distributor = '0' order by distributor_name"); 
        
$result_dis=(mysql_query($query_dis)); 
Deberás hacerla una vez por cada distribuidor, así que deberás meterla en el bucle que muestra los distribuidores.


Vamos al lío

Código PHP:
<?php 
session_start
(); 
require (
'db_connect.php'); 
require (
'functions.php'); 
connectar_imc(); 
?> 
<form action = "m5.php" method = "post"> 
<?php 
    
     
    
echo "<select name=\"year\" id=\"year\">"
    for(
$i=date(Y);$i>=2005;$i--) { 
        echo 
"<option value=\"".$i."\""
        if(
$_POST['year']==$i) echo " selected"
        echo 
">".$i."</option>"
    } 
    echo 
"</select>"
    echo 
"&nbsp;<input id=\"button\" name=\"enviar\" class=\"boton\" type=\"submit\" value=\"Ver\" "
?> 
    </form> 

<?php 
if( $_POST ){       
     
    echo 
"<table border='1'>"
    echo 
"<tr><td><b>Distribuidores</b></td><td><b>Enero</b></td><td><b>Febrero</b></td><td><b>Marzo</b></td><td><b>Abril</b></td><td><b>Mayo</b></td><td><b>Junio</b></td><td><b>Julio</b></td><td><b>Agosto</b></td><td><b>Septiembre</b></td><td><b>Octubre</b></td><td><b>Noviembre</b></td><td><b>Diciembre</b></td></tr>"


        
$query_dis=("SELECT id_distributor, distributor_name FROM distributor WHERE deleted_distributor = '0' order by distributor_name"); 
        
$result_dis=(mysql_query($query_dis)); 
         
        while (
$rows mysql_fetch_row($result_dis)){ 
            echo 
"<tr>"
        
            echo 
"<td>";          
            echo 
"<b>$rows[1]</b><br><br>"
            echo 
"</td>";
            
            
            for(
$i=1;$i<=12;$i++) { 
                if(
$i<10$mes="0".$i
                else 
$mes $i
                
$desde $_POST['year']."-".$mes."-01"
                
$hasta $_POST['year']."-".$mes."-31";     
        
                echo 
"<td>"
                echo 
"<b>ALTAS NO DEMO:</b><br>"
                
$query=("SELECT COUNT(client_name), registration_date, SUM(contracted_space/1073741824),id_distributor, id_pay_method, type_of_client, id_client FROM client WHERE id_distributor = '".$_POST['distributor']."'  AND registration_date >= '".$desde."' and registration_date <= '".$hasta."' and demo_account = '0' order by count(client_name)"); 
                
$resultmysql_query($query) or die (mysql_error()); 
                while(
$row=mysql_fetch_array($result)) { 
                        if(
$row[0]==0){ 
                            echo 
"No hay altas en ".$mes."-".$_POST['year']."<br><br>"
                        }else{ 
                            echo   
"Clientes:&nbsp;" .$row[0]."<br>"
                            
"Espacio:&nbsp;".$row[2]."&nbsp;GB<br><br>";      
                        } 
                 
                }     
                echo 
"</td>";      
            }
            
            echo 
"</tr>"
        }        
        

?>

Así, sin posibilidad de probarlo ni nada es algo complicado hacerlo bien a la primera, pero para que lo entiendas básicamente lo que hace es hacer la consulta cada vez que se muestra un distribuidor, para ello he metido tu consulta, con el bucle que muestra los distintos meses dentro del bucle que muestra la lista de distribuidores
  #8 (permalink)  
Antiguo 23/02/2010, 05:03
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: if(condicion)

dios creia que seria imposible solucionarlo xD
De verdad no sabes lo que te lo agradezco, eres un crack!
Porque no puedo elegir la cantidad de karma, que sino...... :)
Enserio muchismas gracias.
Y sigue asi que vales para esto :P
  #9 (permalink)  
Antiguo 23/02/2010, 05:09
Avatar de Midal  
Fecha de Ingreso: febrero-2010
Ubicación: Valencia
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 9
Respuesta: if(condicion)

He de deducir que te ha servido la respuesta
No tienes que dar las gracias, ya te pediré yo algo algún día, seguro!

Me alegro mucho y tranquilo que con el tiempo se va cogiendo soltura en esto y lo harás sin pensar.
  #10 (permalink)  
Antiguo 23/02/2010, 05:12
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: if(condicion)

mm perdon que te moleste otra vez, pero mirando ahora el resultado, si veo que me lo muestra por cada distribuidor, pero esta haciendo la comprovacion de que coincida el id_distributor?
Porque mirando otro codigo que es casi igual, por ejemplo en enero me tendria q salir resultado y no me salen :s
Alomejor no paranoias mias. Soy muy retorcida no ?xD
  #11 (permalink)  
Antiguo 23/02/2010, 05:34
Avatar de Midal  
Fecha de Ingreso: febrero-2010
Ubicación: Valencia
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 9
Respuesta: if(condicion)

Sí, puede ser, vamos que tienes hasta razón, es que tienes en el WHERE esto.

Código PHP:
WHERE id_distributor '".$_POST['distributor].
Así que pense que hacías un filtrado del distribuidor, si no no tiene sentido


Cambia esto:

Código PHP:
$query=("SELECT COUNT(client_name), registration_date, SUM(contracted_space/1073741824),id_distributor, id_pay_method, type_of_client, id_client FROM client WHERE id_distributor = '".$_POST['distributor']."'  AND registration_date >= '".$desde."' and registration_date <= '".$hasta."' and demo_account = '0' order by count(client_name)"); 
Por esto
Código PHP:
$query=("SELECT COUNT(client_name), registration_date, SUM(contracted_space/1073741824),id_distributor, id_pay_method, type_of_client, id_client FROM client WHERE id_distributor = '".$rows[0]."'  AND registration_date >= '".$desde."' and registration_date <= '".$hasta."' and demo_account = '0' order by count(client_name)"); 

Así cada vez que ejecutas la consulta haces que solo rastree los datos que coinciden con el id_distributor que por el que va.
  #12 (permalink)  
Antiguo 23/02/2010, 05:36
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: if(condicion)

Ahora definitivamente si que si!!!!
Gracias de nuevo, y perdona si he sido muy pesada :P
  #13 (permalink)  
Antiguo 24/02/2010, 02:17
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: if(condicion)

Hola, soy de nuevo la pesada! xD

He estado pensando en añadirle otra fila a la tabla donde me pongo debajo de cada mes cual es el client o distribuidor(esque aun nose cual d los dos poner) que mas GB lleva.

Si me has entendido se te ocurriria alguna manera de hacerlo?? aunque no sea como yo te lo he propuesto.

Un saludo
  #14 (permalink)  
Antiguo 24/02/2010, 06:01
Avatar de Midal  
Fecha de Ingreso: febrero-2010
Ubicación: Valencia
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 9
Respuesta: if(condicion)

No sé como está diseñada tu base de datos, así que me limitaré a orientarte el como debes hacerlo.

Entiendo alguna tabla guardas una columna con el espacio consumido por cada uno durante el mes

Una vez has salido de bucle puedes hacer una consulta con esta condicion

Código PHP:
WHERE mes='Enero' ORDER BY espacioConsumido DESC LIMIT 1 

Esta consulta la harías 12 veces, una por cada mes, cambiando 'Enero' por los distintos meses, o en caso de que lo guardes con el número de mes en lugar del nombre pondrías 1, 2, 3... etc.

Cada vez te devolverá una línea con el cliente que mas ha consumido ese mes.

También debes cambiar donde dice espacioConsumido por el nombre de la columna donde guardas el espacio que ha consumido.
  #15 (permalink)  
Antiguo 25/02/2010, 04:45
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: if(condicion)

Buscando en el foro encontre este codigo,me serviria?
pues lo he intentado ejecutar pero no me va, nose si no estare poniendo bien los valores o algo.

Código PHP:
SELECT quiencountbp.barradepan 
FROM barrasdepan bp
GROUP BY bp
.quien
HAVING count
bp.barradepan ) = ( 
SELECT countbarradepan total
FROM barrasdepan
GROUP BY quien
ORDER BY total DESC 
LIMIT 1 

unicamente tengo dos tablas:

distributor(id_distributor,distributor_name,regist ration_date, address, telephon...)
y
client(id_client, id_distributor, client_name, registration_date, contracted_space, demo_account).

Etiquetas: Ninguno
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 14:44.