PHP - Nuevo en PHP

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por xabier (5 intervenciones) el 10/08/2018 11:48:26
Muy buenas,

en primer lugar gracias por darme la oportunidad de estar en este foro, me han hablado muy bien de el y donde se que la gente te enseña y ayuda mucho.

Soy nuevo en este mundo y estoy aprendiendo, lo hago por hobbie porque es algo que me gusta mucho.

Tengo una página web sobre temas de aviación, sobre pilotos ya que estoy en ese gremio y entre unos amigos tenemos datos de vuelos etc

uno de los datos que tenemos es el ratio de aterrizaje en un vuelo y ponemos una lista con los usuarios que mejor ratio tienen, siendo el valor 0 el mejor y de ahí hasta menos infinito:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<div class="portlet-body">
    <table class="table table-striped table-bordered">
        <thead>
            <tr>
                <th>#</th>
                <th>Pilot</th>
                <th>Rate</th>
            </tr>
        </thead>
        <tbody>
            @php $i = 1 @endphp
            @foreach($stats['alltime']['landing_rates'] as $a)
                <tr>
                        <td>@if ($i === 1)
                        <img src="img/gold.png">
                        @php $i++ @endphp
                        @elseif ($i === 2)
                        <img src="img/silver.png">
                        @php $i++ @endphp
                        @elseif ($i === 3)
                        <img src="img/bronze.png">
                        @php $i++ @endphp
                        @else
                        {{ $i++ }}.
                        @endif
                    </td>
                    <td>
                        <a href="{{ route('pilots.show', $a->id) }}">{{ $a->pilot->firstname }} {{ $a->pilot->lastname }}
                            DAL{{$a->pilot->callsign}}</a></td>
                    <td>{{ round($a->landingrate) }} ft/min</td>
                </tr>
            @endforeach
        </tbody>
    </table>
</div>

teniendo en cuenta que "landingrate" es un dato numérico que va de 0 a - infinito, lo que me gustaría saber es como crear una lista donde solo apareciesen los usuarios que han logrado un "landingrate" exacto de -150.

De verdad que me encantaría que alguien me pueda ayudar.
Muchas gracias de verdad.

Saludos a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Raúl
Val: 20
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por Raúl (4 intervenciones) el 10/08/2018 15:42:38
Hola Xabier.

Podrías hacer algo como (sin medallas):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<table class="table table-striped table-bordered"><thead>
<tr><th>#</th>
<th>Pilot</th>
<th>Rate</th>
</tr>
</thead>
<tbody>
@php $i = 1 @endphp
@foreach($stats['alltime']['landing_rates'] as $a)
@if ($a == -150)
<tr>
<td>
{{ $i++ }}.
</td>
<td>
<a href="{{ route('pilots.show', $a->id) }}">{{ $a->pilot->firstname }} {{ $a->pilot->lastname }}
DAL{{$a->pilot->callsign}}</a></td>
<td>{{ round($a->landingrate) }} ft/min</td>
</tr>
@endif
@endforeach
</tbody>
</table>

Para compartir código de mejor manera, dale clic al boton </> que es para insertar código :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por xabier (5 intervenciones) el 10/08/2018 16:28:47
Hola,

muchas gracias por ayudarme, de verdad.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
@extends('layouts.app')
@section('content')
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/chartist/0.11.0/chartist.min.css" />
    <!-- BEGIN CONTENT BODY -->
    <div id="page-content" class="page-content">
        <div class="row">
        <div class="col-md-12">
            <div class="leader leader-danger">
                    <p><strong>ALL TIME -150 FT/MIN LANDING RATES</strong></p>
                </div>
            </div>
        </div>
    <!-- BEGIN PAGE HEADER-->
    <!-- BEGIN PAGE BAR -->
    <!-- END PAGE BAR -->
    <!-- END PAGE HEADER -->
    <!-- BEGIN CONTENTS -->
    <div class="row">
      <div class="col-md-12">
        <div class="portlet light">
            <div class="portlet-title">
                <div class="caption">
                    <span class="caption-subject bold uppercase"> TOP PILOTS</span>
                </div>
            </div>
            <div class="portlet-body">
              <table class="table table-striped table-bordered"><thead>
                  <tr>
                      <th>#</th>
                      <th>Pilot</th>
                      <th>Rate</th>
                  </tr>
                  </thead>
                  <tbody>
                      @php $i = 1 @endphp
                      @foreach($stats['alltime']['landing_rates'] as $a)
                      @if (round($a->landingrate) == -150)
                      <tr>
                          <td>
                              {{ $i++ }}.
                          </td>
                          <td>
                              <a href="{{ route('pilots.show', $a->id) }}">{{ $a->pilot->firstname }} {{ $a->pilot->lastname }}
                                  DAL{{$a->pilot->callsign}}</a></td>
                          <td>{{ round($a->landingrate) }} ft/min</td>
                      </tr>
                      @endif
                      @endforeach
                  </tbody>
                </table>
            </div>
        </div>
    </div>
</div>
 
 
 
 
@endsection

He puesto lo que me has dicho y me da el siguiente error:




43f2bcba34fd2e4930393737c4a00b73

Gracias una vez mas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Raúl
Val: 20
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por Raúl (4 intervenciones) el 13/08/2018 16:59:06
Veo que usas Laravel Blade, te recomiendo que calques tal cual tu página de aterrizajes y que sólo agregues la modificación que le hicimos, incluso podrías probar este código en la página original, sólo comenta el código anterior ¿usas modelo-vista-controlador?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por Mauro (1031 intervenciones) el 15/08/2018 18:48:52
Agregaría que si recién estás arrancando con PHP te convendría dar un pasito para atrás y aprender bien las bases del lenguaje antes de meterte con algo complejo como Laravel.

Te será más simple avanzar si tienes un basamento sólido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por xabier (5 intervenciones) el 17/08/2018 13:41:20
SI, tienes toda la razón y de echo estoy empezando a hacer cursos online en Udemy. Preguntaba esta duda puntual porque nuestro proyecto realizado por un profesional está basado en Laravel y quería modificar algunas cosillas y añadir cosillas al proyecto. Aún así gracias por el consejo y te aseguro que lo voy a seguir.

Por cierto, ya que estáis demostrando tanta amabilidad me gustaría preguntaros lo siguiente:

1
2
3
4
5
6
7
8
$stats['week']['flights'] =
            \App\Pilot::select('pilots.id', 'pilots.callsign', 'firstname', 'lastname', \DB::raw('count(pireps.id) as fcount'))
                      ->leftJoin('pireps', 'pilots.id', '=', 'pireps.pilot_id')
                      ->where('pireps.created_at', '>=', $formatted_date)
                      ->groupBy('pilots.id')
                      ->orderBy('fcount', 'desc')
                      ->take(25)
                      ->get();

Como puede hacer esto mismo pero en vez de semanal anual.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por xabier (5 intervenciones) el 17/08/2018 13:44:57
Y lo solucione, muchas gracia spor tu ayuda, eres un crack
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por xabier (5 intervenciones) el 17/08/2018 14:04:41
Vamos lo que quiero poner es que me muestre los resultados de el año activo desde una fecha determinada::

1
2
3
4
5
6
7
8
$stats['yearly']['flights'] =
            \App\Pilot::select('pilots.id', 'pilots.callsign', 'firstname', 'lastname', \DB::raw('count(pireps.id) as fcount'))
                ->leftJoin('pireps', 'pilots.id', '=', 'pireps.pilot_id')
                ->whereYear('pireps.created_at', '=', date('y'))
                ->groupBy('pilots.id')
                ->orderBy('fcount', 'desc')
                ->take(25)
                ->get();


Lo que pasa que aquí digo de todo el año pero cuando lo activo solo me muestra desde lo que se ha hecho desde hoy hasta finales de este año: Lo que me gustaría es decirle desde una fecha en concreto.

Esto estaría bien?

>whereYear('01/07/2018t', '=', date('y'))

Creo que pero haber si me enseñais

GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Nuevo en PHP

Publicado por Mauro (1031 intervenciones) el 17/08/2018 15:11:17
Hola xabier:

¿Cómo estás? No conozco mucho de Laravel (Yo me manejo con Symfony), pero por lo que veo diría que cambies el WhereYear por WhereDate. Fijate en https://laravel.com/docs/5.6/queries.

Según entiendo debería ser:

1
2
3
4
5
6
7
8
$stats['yearly']['flights'] =
            \App\Pilot::select('pilots.id', 'pilots.callsign', 'firstname', 'lastname', \DB::raw('count(pireps.id) as fcount'))
                ->leftJoin('pireps', 'pilots.id', '=', 'pireps.pilot_id')
                ->whereDate('pireps.created_at', date('Y-m-d'))
                ->groupBy('pilots.id')
                ->orderBy('fcount', 'desc')
                ->take(25)
                ->get();

Con eso debería darte los resultados de la fecha de hoy, si quieres cambiar por otra fecha cualquiera deberías usar algo como:

1
2
3
4
5
6
7
8
$stats['yearly']['flights'] =
            \App\Pilot::select('pilots.id', 'pilots.callsign', 'firstname', 'lastname', \DB::raw('count(pireps.id) as fcount'))
                ->leftJoin('pireps', 'pilots.id', '=', 'pireps.pilot_id')
                ->whereDate('pireps.created_at', '1977-12-22')
                ->groupBy('pilots.id')
                ->orderBy('fcount', 'desc')
                ->take(25)
                ->get();

Yo te recomendaría igual usar objetos DateTime más que la función date, pero bueno... depende de que tengas buenos conocimientos de POO.

Te dejo un par de referencias que te pueden ser útiles:

1. https://openwebinars.net/blog/fechas-en-php-como-tratarlas/
2. Un pequeño videito para ver si te tientas con Symfony :)

Exitos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar