• Home
  • Forum
  • Fare Web
  • PHP

Planner con tabella in PHP

  • Creatore Discussione Creatore Discussione neo996sps
  • Data di inizio Data di inizio 1 Ago 2011

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
  • 1 Ago 2011
  • #1
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?
 

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
  • 2 Ago 2011
  • #2
non c'è nessuno che mi sappia aiutare?
 
T

tiberi72

Nuovo Utente
29 Apr 2011
16
0
0
  • 2 Ago 2011
  • #3
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
  • 2 Ago 2011
  • #4
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?
 
T

tiberi72

Nuovo Utente
29 Apr 2011
16
0
0
  • 2 Ago 2011
  • #5
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
  • 2 Ago 2011
  • #6
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.
 
T

tiberi72

Nuovo Utente
29 Apr 2011
16
0
0
  • 2 Ago 2011
  • #7
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
  • 2 Ago 2011
  • #8
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
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

N
Alternativa valida e gratuita allo keyword planner di Google Adwords ?
  • Neo_Web_Master
  • 29 Set 2016
  • SEO e Posizionamento
Risposte
0
Visite
1K
SEO e Posizionamento 29 Set 2016
Neo_Web_Master
N
U
FinancialPlanner!
  • ufo
  • 4 Gen 2007
  • Presenta il tuo Sito
Risposte
2
Visite
638
Presenta il tuo Sito 5 Gen 2007
ufo
U
M
Record con stato diverso
  • Max61
  • 9 Set 2025
  • PHP
Risposte
0
Visite
988
PHP 9 Set 2025
Max61
M
F
errore file creato con ps 2025
  • fabry1707
  • 22 Mar 2025
  • Photoshop
Risposte
0
Visite
427
Photoshop 22 Mar 2025
fabry1707
F
A
callback functions con chiamate multiple
  • ANS1966
  • 2 Gen 2025
  • jQuery
Risposte
0
Visite
2K
jQuery 2 Gen 2025
ANS1966
A
R
Sviluppo Marketplace in Europa: Espandi il Tuo Business Online con VendereOnline.org!
  • rudygaffo
  • 19 Dic 2024
  • E-Commerce
Risposte
0
Visite
2K
E-Commerce 19 Dic 2024
rudygaffo
R
D
Sono una SEO copywriter, content writer e ghostwriter con esperienza pluriennale. Cerco lavoro da remoto
  • Daniela83
  • 2 Dic 2024
  • Annunci servizi di Social Media Marketing
Risposte
0
Visite
857
Annunci servizi di Social Media Marketing 2 Dic 2024
Daniela83
D
S
Utilizzare MySql con maschere Access
  • staiul
  • 27 Nov 2024
  • MySQL
Risposte
0
Visite
800
MySQL 27 Nov 2024
staiul
S
D
Scrittrice di contenuti digitali con esperienza pluriennale
  • Daniela83
  • 26 Nov 2024
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
396
Offerte e Richieste di Lavoro e/o Collaborazione 26 Nov 2024
Daniela83
D
S
Vendesi Sito Web di Intrattenimento con 1600 Articoli Pubblicati
  • Susanna1986
  • 16 Set 2024
  • Compravendita siti e domini
Risposte
0
Visite
317
Compravendita siti e domini 16 Set 2024
Susanna1986
S
[Cerco][Gratuito] Articolisti per Sito Web con tema la tecnologia
  • sviluppomania
  • 3 Set 2024
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
1
Visite
620
Offerte e Richieste di Lavoro e/o Collaborazione 29 Gen 2025
alainscilly
A
I
problemi con thunderbird
  • ilprincipiante
  • 9 Lug 2024
  • Posta Elettronica
Risposte
0
Visite
3K
Posta Elettronica 9 Lug 2024
ilprincipiante
I
M
Vba maschera con campi da più tabelle salvataggio in un'unica tabella
  • motoranocchio
  • 9 Giu 2024
  • MS Access
Risposte
0
Visite
3K
MS Access 9 Giu 2024
motoranocchio
M
Problema in Shopify con Pixel Facebook
  • voldemort
  • 27 Mag 2024
  • E-Commerce
Risposte
1
Visite
3K
E-Commerce 27 Mag 2024
m.pittini
M
I
salvare con ajax user_id name msg
  • Imperor
  • 21 Mag 2024
  • PHP
Risposte
0
Visite
2K
PHP 21 Mag 2024
Imperor
I
V
Quanti GB per una telecamera con sim card?
  • vitomaso
  • 20 Mag 2024
  • IP Cam e Videosorveglianza
Risposte
0
Visite
3K
IP Cam e Videosorveglianza 20 Mag 2024
vitomaso
V
F
access ricerca record con apostrofo.
  • futty
  • 28 Mar 2024
  • MS Access
Risposte
0
Visite
2K
MS Access 28 Mar 2024
futty
F
F
Cerco Hosting con VECCHIE versioni di php
  • frk
  • 4 Mar 2024
  • Hosting
Risposte
0
Visite
2K
Hosting 4 Mar 2024
frk
F
C
Come ricreare questo calcolatore di prezzi a step con woocommerce?
  • calmabubbasst
  • 20 Feb 2024
  • WordPress
Risposte
0
Visite
3K
WordPress 20 Feb 2024
calmabubbasst
C
C
Segnalo barra laterale di navigazione ASSENTE con Chrome
  • calmabubbasst
  • 19 Feb 2024
  • Comunicazioni dallo Staff
Risposte
5
Visite
3K
Comunicazioni dallo Staff 20 Feb 2024
calmabubbasst
C
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?