Planner con tabella in PHP

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Ciao a tutti,

continuano le mie peregrinazioni con PHP. Stavolta il problema è piuttosto impegnativo e non so come risolverlo. Devo creare un planner per il noleggio di alcuni mezzi. In pratica deve uscirmi una tabella fatta così:

| | 1 | 2 | 3 | .... |31|
| AA000AA| | | | ... | |
| ... | | | | | |
| ZZ000ZZ| | | | | |

La prima colonna ho le targhe relative ai mezzi, in tutte le altre vorrei colorare la cella nel caso la macchina non sia disponibile. Ho quindi creato due tabelle in MySQL di cui questo è il dump:

Codice:
CREATE TABLE IF NOT EXISTS `flotta` (
  `id` bigint(50) NOT NULL auto_increment,
  `targa` varchar(7) default NULL,
  `telaio` varchar(255) default NULL,
  `modello` varchar(150) default NULL,
  `versione` varchar(255) default NULL,
  `colore` varchar(100) default NULL,
  `lungo_periodo` tinyint(1) default NULL,
  `km` varchar(10) default NULL,
  `carburante` varchar(20) default NULL,
  `kw` varchar(10) default NULL,
  `cv` varchar(10) default NULL,
  `cilindrata` varchar(10) default NULL,
  `data_immatricolazione` varchar(10) default NULL,
  `categoria` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `telaio` (`telaio`),
  UNIQUE KEY `targa` (`targa`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `noleggio` (
  `id` bigint(50) NOT NULL auto_increment,
  `contratto` varchar(20) default NULL,
  `data_inizio` date default NULL,
  `data_fine` date default NULL,
  `ragione_sociale` varchar(255) default NULL,
  `mezzo` varchar(255) default NULL,
  `noleggiato` tinyint(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Mentre questo è il codice per il planner:

Codice:
<table width="100%">
<thead>
<tr>
<th style='text-align:center'></th>
<?php
      $mese = mktime( 0, 0, 0, $m, 1, $y ); 
      $numeroDigiorni = intval(date("t",$mese)); 
      for($i=1; $i<=$numeroDigiorni; $i++)
      {
       print("<th width='2%'>".$i."</th>");
      }
?>
</thead>
<?php
$count1 = 0;
$res1 = mysql_query( "SELECT * FROM flotta ORDER BY targa;");
while ( $riga1 = mysql_fetch_array( $res1 ) ) {
		$dateform = explode( '-', $riga1["data"] );
		$datafin = $dateform[2].'.'.$dateform[1].'.'.$dateform[0];
			  
?> 


<tbody>
<?php
$mese = mktime( 0, 0, 0, $m, 1, $y ); 
$numeroDigiorni = intval(date("t",$mese));  
print("<tr>");
print("<td style='text-align:center'><a href='./nuovo_noleggio.php?targa=".$riga1["targa"]."&modello=".$riga1["modello"]."&versione=".$riga1["versione"]."'>".$riga1["targa"]." ".$riga1["modello"]." ".$riga1["versione"]."</a></td>");

      for($i=1; $i<=$numeroDigiorni; $i++)
      { 
      
       print("<td></td>");
      }  
      print("</tr>");
}
?>
</tbody>
</table>

Come potete vedere sono riuscito a creare dinamicamente la tabella incaricata di fare il planner, però non so come scrivere in PHP: se il mezzo AA000AA è legato ad un noleggio tra la data X e la data Y allora colora la cella in rosso, altrimenti lasciala bianca.

Come potrei fare? Avete qualche input da darmi?
 

tiberi72

Nuovo Utente
29 Apr 2011
16
0
0
dovresti fare un'altra select per noleggio cosi' come hai fatto per flotta, solo che sul campo where indichi il campo di riferimento a flotta.
PHP:
<table width="100%">
<thead>
<tr>
<th style='text-align:center'></th>
<?php
      $mese = mktime( 0, 0, 0, $m, 1, $y ); 
      $numeroDigiorni = intval(date("t",$mese)); 
      for($i=1; $i<=$numeroDigiorni; $i++)
      {
       print("<th width='2%'>".$i."</th>");
      }
?>
</thead>
<?php
$count1 = 0;
$res1 = mysql_query( "SELECT * FROM flotta ORDER BY targa;");
while ( $riga1 = mysql_fetch_array( $res1 ) ) {
		$dateform = explode( '-', $riga1["data"] );
		$datafin = $dateform[2].'.'.$dateform[1].'.'.$dateform[0];
			  
?> 


<tbody>
<?php
print("<tr>");
$mese = mktime( 0, 0, 0, $m, 1, $y ); 
$numeroDigiorni = intval(date("t",$mese));  
$res2 = mysql_query( "SELECT * FROM noleggio where mezzo = ".$riga1["targa"].";");
while ( $riga2 = mysql_fetch_array( $res2 ) ) {
  if ($riga2['noleggiato']==0) {
    $mess="<td style='text-align:center; color=red;'><a href='./nuovo_noleggio.php?targa=".$riga1["targa"]."&modello=".$riga1 ["modello"]."&versione=".$riga1["versione"]."'>".$riga1["targa"]." ".$riga1["modello"]." ".$riga1["versione"]."</a></td>";
  } else {
    $mess="<td style='text-align:center; color=blue;'><a href='./nuovo_noleggio.php?targa=".$riga1["targa"]."&modello=".$riga1   ["modello"]."&versione=".$riga1["versione"]."'>".$riga1["targa"]." ".$riga1["modello"]." ".$riga1["versione"]."</a></td>";
}
 print($mess);

      for($i=1; $i<=$numeroDigiorni; $i++)
      { 
      
       print("<td></td>");
      }  
      print("</tr>");
}
?>
</tbody>
</table>
spero di aver capito bene cosa intendi.
personalmente preferisco usare l'istruzione echo anziche' print, ma penso che sia lo stesso.
Sicuramente ci possono essere degli errori di sintassi in quello che ho scritto, ho fatto tutto "a braccio"
 

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Ciao,

allora ho provato il codice e funziona in parte. Infatti mi segna nella prima cella della tabella che creo il noleggio, ma io vorrei che si colorassero le celle interessate: se io noleggio la macchina 1 dal 5 agosto al 15 agosto vorrei che si colorassero di rosso quelle.

Mi sai dare un'altro aiuto?
 

tiberi72

Nuovo Utente
29 Apr 2011
16
0
0
Allora, e' un po' piu' complicato e bisogna chiarire prima di tutto qualcosa a livello di logica:
1) quante righe di noleggio posso avere per lo stesso mezzo? Se ci sono piu' righe di noleggio, sono sicuro che le date di noleggio non si sovrappongono?
2) una volta stabilite le date, devo riuscire a trasformare la data in giorni e devo sempre pensare che posso avere delle date a cavallo del mese (esempio se noleggio dal 25/07 al 05/08 i giorni da colorare in questo caso sarebbero 1, 2 , 3 , 4, 5, 25, 26, 27, 28,29, 30, 31 e mi sembra che crei qualche confusione)
 

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Ciao,

allora, un mezzo può essere noleggiato ad un unico cliente per il periodo che va da X a Y. Per quanto riguarda il "cavallo" tra due mesi sarebbe risolvibile ampilando la tabella a più mesi e facendola scorrevole.
 

tiberi72

Nuovo Utente
29 Apr 2011
16
0
0
prova cosi':
PHP:
<table width="100%"> 
<thead> 
<tr> 
<th style='text-align:center'></th> 
<?php 
      $mese = mktime( 0, 0, 0, $m, 1, $y );  
      $numeroDigiorni = intval(date("t",$mese));  
      for($i=1; $i<=$numeroDigiorni; $i++) 
      { 
       print("<th width='2%'>".$i."</th>"); 
      } 
?> 
</thead> 
<?php 
$count1 = 0; 
$res1 = mysql_query( "SELECT * FROM flotta ORDER BY targa;"); 
while ( $riga1 = mysql_fetch_array( $res1 ) ) { 
        $dateform = explode( '-', $riga1["data"] ); 
        $datafin = $dateform[2].'.'.$dateform[1].'.'.$dateform[0]; 
               
?>  


<tbody> 
<?php 
print("<tr>"); 
$mese = mktime( 0, 0, 0, $m, 1, $y );  
$numeroDigiorni = intval(date("t",$mese));   
$mess="<td style='text-align:center;'><a href='./nuovo_noleggio.php?targa=".$riga1["targa"]."&modello=".$riga1 ["modello"]."&versione=".$riga1["versione"]."'>".$riga1["targa"]." ".$riga1["modello"]." ".$riga1["versione"]."</a></td>"; 
 print($mess); 

      for($i=1; $i<=$numeroDigiorni; $i++) 
      {  

          $res2 = mysql_query( "SELECT * FROM noleggio where mezzo = ".$riga1["targa"].";"); 
          while ( $riga2 = mysql_fetch_array( $res2 ) ) { 
              if ($riga2['noleggiato']==1) and (date("d",$riga2['data_inizio'])>=$i) and (date("d",$riga2['data_fine'])<=$i){ 
                 $mess="<td style=color=red;'$i</td>"; 
              } else { 
                 $mess="<td style=color=blue;'$i</td>"; 
              } 
       
       print($mess); 
      }   
      print("</tr>"); 
} 
?> 
</tbody> 
</table>
forse manca qualòche conversione del tipo data, non saprei..
 

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
mi generava un errore sull'if e allora sono riuscito a risolvere così:

PHP:
<table width="100%">
<thead>
<tr>
<th style='text-align:center'></th>
<?php
      $mese = mktime( 0, 0, 0, $m, 1, $y ); 
      $numeroDigiorni = intval(date("t",$mese)); 
      for($i=1; $i<=$numeroDigiorni; $i++)
      {
       print("<th width='2%'>".$i."</th>");
      }
?>
</thead>
<?php
$count1 = 0;
$res1 = mysql_query( "SELECT * FROM flotta;");
while ( $riga1 = mysql_fetch_array( $res1 ) ) {
        $dateform = explode( '-', $riga1["data"] );
        $datafin = $dateform[2].'.'.$dateform[1].'.'.$dateform[0];
              
?> 


<tbody>
<?php
print("<tr>");
print("<td>".$riga1["targa"]." - ".$riga1["modello"]." - ".$riga1["versione"]."</td>");
$mese = mktime( 0, 0, 0, $m, 1, $y ); 
$numeroDigiorni = intval(date("t",$mese));  
$res2 = mysql_query( "SELECT * FROM noleggio WHERE mezzo = '".$riga1["targa"]."';");
while ( $riga2 = mysql_fetch_array( $res2 ) ) {
if (($riga2['noleggiato']==1) AND (date("d",$riga2['data_inizio'])>=$i) AND (date("d",$riga2['data_fine'])<=$i)){ 
                 $mess="<td style=color=red;'$i</td>"; 
              } else { 
                 $mess="<td style=color=blue;'$i</td>"; 
              } 
       
       print($mess);  

      for($i=1; $i<=$numeroDigiorni; $i++)
      { 
      
       print("<td></td>");
      }  
      print("</tr>");
}   }
?>
</tbody>
</table>

ma ancora non funziona. A sto punto controllerò meglio domani mattina perchè sono cotto. Ragazzi, intanto grazie dell'aiuto. Se avessi ancora problemi posto e vi faccio sapere
 
Discussioni simili
Autore Titolo Forum Risposte Data
N Alternativa valida e gratuita allo keyword planner di Google Adwords ? SEO e Posizionamento 0
F access ricerca record con apostrofo. MS Access 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
C Come ricreare questo calcolatore di prezzi a step con woocommerce? WordPress 0
C Segnalo barra laterale di navigazione ASSENTE con Chrome Comunicazioni dallo Staff 5
G Guadagna dalla Vendita di Articoli Sponsorizzati con GuestPostMax.com! Guadagnare col Sito 0
P Hosting multidominio con Plesk Hosting 0
L Soluzione con INNER JOIN Database 0
S passare un valore da un form a un file .php con metodo post PHP 4
A Redirect 301 genera url statico con variabili Web Server 0
T problemi con dati menu a tendina HTML e CSS 2
T Query con date MS Access 1
F Url dinamiche da cambiare con categoria, subcategoria e title PHP 2
L Aiuto con DataGridView Visual Basic 1
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
M Aggiunta prodotti nel carrello con lo stesso in e varianti diverse PHP 0
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
N Problema con position absolute e overflow HTML e CSS 4
M Estrarre soltanto i prodotti con stessa descrizione PHP 10
felino [Wordpress] Gallery con foto selezionabili dall'utente WordPress 0
G Invio di più valori con la stessa checkbox PHP 4
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
I Form con selettore HTML e CSS 0
G phpmailer e php 8.1 con estensione mysqli PHP 6
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
N Vendo sito web di casino online con 1000 giochi Compravendita siti e domini 0
G form invio multiplo con checkbox PHP 12
L Query e selezione DB con $_POST PHP 2
K [PHP] Problema con variabili concatenate. PHP 1
R Dubbi su siti sviluppati con Wordpress e con codice WordPress 6
B Router e telecamere con pannello solare IP Cam e Videosorveglianza 0
Z Cerco ecommerce gratuito meglio se realizzato con Woocommerce di Wordpress. E-Commerce 0
S [CERCO] scambio di articoli con link Offerte e Richieste di scambio links 0
A Immagine decentrata con sfondo trasparente Photoshop 0
O problema con query PHP 4
Jensen Errore di sintassi con DELETE PHP 3
D Casella di testo con grassetto ecc... HTML e CSS 2
R Aprire maschera con Openform filtrando un campo testuale con un valore recuperato da un'altra maschera MS Access 10
G Query con i giorni della settimana MySQL 10
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
G Il mio sito dopo aver abilitato l'ssl non visualizza le immagini con indirizzi senza ssl HTML e CSS 0
A Connessione a mdb con php7 PHP 1
P errore 404 con javascript Javascript 2
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0

Discussioni simili