MRW.it Forum
  • Home
  • Forum
  • Fare Web
  • Javascript
  • jQuery

Pubblicazione dati su calendario settimanale

  • Creatore Discussione Creatore Discussione armando31
  • Data di inizio Data di inizio 15 Ago 2015
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
criric

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 30 Ago 2015
  • #21
Ciao, mi fa piacere vedere che stai andando avanti bene, io purtroppo causa lavoro ho pochissimo tempo.
La soluzione che hai trovato per i minuti va bene, tutte le soluzioni che funzionano vanno sempre bene.
Esiste in php la funzione str_pad() e nel tuo caso potresti usarla così
PHP:
echo $ore . ":" . str_pad($minuti, 2, '0', STR_PAD_LEFT) . " --- " . $lezione . "<br/>", "Durata " . $durata . " Minuti";
La funzione simplexml_load_file() mettila dopo aver verificato che il file esista altrimenti genera dei Warning php.

Per la somma devi inizializzarla fuori dal ciclo e incrementarla ad ogni iterazione
PHP:
$durataTotale = 0;
foreach ($xml->xpath("/Root/OrarioLezioni/Lezioni") as $value) {
            $durataTotale += $value->Durata;
}
 
Ad
A

armando31

Nuovo Utente
15 Ago 2015
21
0
1
  • 31 Ago 2015
  • #22
Ciao criric,

:crying::crying:......è da metà pomeriggio, fino ad ora che provo e riprovo.....ho provato ad inserirla pressochè ovunque!! ....spostando la parentesi graffa di chiusura in altrettante posizioni!!!....Ottengo i risultati più bizzarri...e nella migliore delle ipotesi un errore nella colonna riferita al primo giorno per cui il file non esiste!!!!

Dove devo inserire la variabile e la funzione per il calcolo della somma ?.....non ce la posso fare....mi daresti ancora un'aiuto????

ti riposto il codice del file tabella_calendario:

Grazie in anticipo.....mi salvi dal T.S.O. se mi dai una mano!!:confused:

" Commentata trovi anche la funzione nella posizione dove....a logica....credevo andasse scritta "

Codice:
Codice:
<table class="weektable">
    <thead>
	<tr>
            <?php
            	
	    foreach (getDaysOfWeek() as $date) {
                
	        $current = $date == date("Y-m-d") ? "class='current'" : "";

		echo "<th $current>" . formatDay($date) . "</th>";
            }
            ?>
        </tr>
    </thead>
    <tbody>
        <?php

        foreach (getDaysOfWeek() as $date) {
            $current = $date == date("Y-m-d") ? "class='current'" : "";
            echo "<td $current>";
            $file = $date . ".xml";
	    $durataTotale = 0;

$xml = simplexml_load_file($file);

/*foreach ($xml->xpath("/Root/OrarioLezioni/Lezioni") as $value) {
            $durataTotale += $value->Durata;   
print $durataTotale;
}*/
if (file_exists($file))

foreach ($xml->xpath("/Root/OrarioLezioni/Lezioni") as $value ) {
		
		$ora = $value->Ore;
		$minuti = $value->Minuti;
		$lezione = $value->Lezione;
		$durata = $value->Durata;
	
	if ($minuti<29)								
		 echo $ora.":".$minuti."0 --- ".$lezione."<br></br>","Durata ".$durata." Minuti";		
										
	else									
		echo $ora.":".$minuti." --- ".$lezione."<br></br>","Durata ".$durata." Minuti";			   		 
          	
$fr = fopen($file, 'r');
while (!feof($fr))
$riga = fgets($fr);
echo $riga . "<p class='separa'></p>";
       
}  
fclose($fr);
 
            echo "</td>";

}

 ?>
    </tbody>
</table>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 31 Ago 2015
  • #23
La funzione print non mi sembra corretta cosi come l'hai scritta.
Non ho i file qui per provare ma la posizione giusta dovrebbe essere questa
PHP:
<table class="weektable">
    <thead>
        <tr>
            <?php
            foreach (getDaysOfWeek() as $date) {
                $current = $date == date("Y-m-d") ? "class='current'" : "";
                echo "<th $current>" . formatDay($date) . "</th>";
            }
            ?>
        </tr>
    </thead>
    <tbody>
        <?php
        foreach (getDaysOfWeek() as $date) {
            $current = $date == date("Y-m-d") ? "class='current'" : "";
            echo "<td $current>";
            $file = $date . ".xml";
            if (file_exists($file)) {
                $xml = simplexml_load_file($file);
                $durataTotale = 0;
                foreach ($xml->xpath("/Root/OrarioLezioni/Lezioni") as $value) {
                    $durataTotale += $value->Durata;
                }
                echo "<p>Totale minuti : $durataTotale </p>";
                foreach ($xml->xpath("/Root/OrarioLezioni/Lezioni") as $value) {

                    $ora = $value->Ore;
                    $minuti = $value->Minuti;
                    $lezione = $value->Lezione;
                    $durata = $value->Durata;
                    echo $ore . ":" . str_pad($minuti, 2, '0', STR_PAD_LEFT) . " --- " . $lezione . "<br/>", "Durata " . $durata . " Minuti";
                    $fr = fopen($file, 'r');
                    while (!feof($fr))
                        $riga = fgets($fr);
                    echo $riga . "<p class='separa'></p>";
                }
                fclose($fr);
            }
            echo "</td>";
        }
        ?>
    </tbody>
</table>
Tutte le funzioni relative al file xml devono stare dentro la condizione di verifica del file
PHP:
if (file_exists($file)) {
 
A

armando31

Nuovo Utente
15 Ago 2015
21
0
1
  • 1 Set 2015
  • #24
P E R F E T T O ! ! !

Tutto sembra funzionare alla perfezione!!! .....GRAZIE Infinite!!!
L'idea che avevo riguardo la realizzazione di questo "mini-progetto"...sembra ormai definirsi nella sua forma ultima!!!...e questo non avrei potuto farlo senza il tuo PREZIOSISSIMO aiuto.

Definisco un po meglio la visualizzazione del tutto e ,appena pronta, posto la visualizzazione finale del calendario....

Ancora grazie

Buonanotte
 
A

armando31

Nuovo Utente
15 Ago 2015
21
0
1
  • 3 Set 2015
  • #25
Ciao criric....come va?....spero tutto ok!

Come promesso, ecco qui la visualizzazione definitiva del calendario delle lezioni...Onestamente credo fosse dovuto mostrartela, visto che , di fatto, il calendario è figlio tuo.

Ecco il link: web1105.altervista.org/Calendario_criric_ins_dati/calendario.php

Ora però ,come denuncia la mia indole da inguaribile appassionato e bramoso di sperimentazione, non ho potuto impedirmi di testare anche la soluzione con archiviazione dei dati su DB ( ti ricordi? se ne parlava ad inizio discussione)

Ho fatto tutto quello che c'era da fare: Ho creato il DB (MySql di altervista) con i relativi campi , preparato lo scipt .php che preleva i dati dai tag xml e li inserisce all' interno del DB, ed infine lo script che successivamente va a prendere i dati dal DB per visualizzarli all'interno del calendario.

Chiaramente però ....ho un problema....NON CAPISCO COME FARE PER INCOLONNARE I DATI NELLA COLONNA CONTENENTE IL RIFERIMENTO ALLA DATA CORRETTA....MA spiego meglio la situazione:

Questo è il DB:


Come vedi, il campo data è di tipo TEXT . Viene compilato dal tag [CDATA] del file .xml con formato MM/DD/YYYY
--------------------

Questo è lo script con il quale vado a popolare il DB:

PHP:
<?php
// Apro la connessione al DB
// ------
// ------

$host = 'localhost';
$user = 'armando31';
$pass = 'armando31psw';
$db = 'my_armando31';
$con = mysql_connect($host,$user,$pass) or die (mysql_error());
$sel = mysql_select_db($db) or die (mysql_error());

// Recupero il file
$file = "Lezioni.xml";
$xml = simplexml_load_file($file);
	
	// Controllo tutti i tag "Lezioni"
	foreach( $xml->xpath("/Root/OrarioLezioni/Lezioni") as $value ) {
		// Recupero tutti i campi da ogni tag "Lezioni"
		$data = $value->Giorno;
		$ora = $value->Ora;
		$minuti = $value->Minuti;
		$lezione = $value->Lezione;
		
$sql="INSERT INTO Lezioni (data,ora,minuti,lezione) VALUES ('$data','$ora','$minuti','$lezione')";		

		$rssql = mysql_query( $sql );
		
		// Controllo che l'importazione sia avvenuta con successo
		echo ( $rssql ) ? "Importazione avvenuta con successo" : "Errore nella query o connessione al DB mancante";
	
}

//else
//	echo "Nessun file inserito";

?>

L'importazione funziona correttamente! Lo script non prevede nessun form di inserimento dati perchè intendo lanciare l'importazione manualmente semplicemente inserendo il link allo script all'interno del browser e dando l'invio.
Questo perchè l'idea è quella di automatizzare poi la cosa con un'operazione pianificata.
-----------------------

Questa è invece la modifica al file originario "tabella_calendario.php" contenente la SELECT dal DB:

PHP:
<?php

function getDaysOfWeek() {
    $monday = date('Y-m-d', strtotime(date('Y', strtotime('+' . (int) $_REQUEST['week'] . ' Week')) . 'W' . date("W", strtotime('+' . (int) $_REQUEST['week'] . ' Week'))));
    $daysOfWeek = array($monday);
    list($year, $month, $day) = explode("-", $monday);
    for ($days = 1; $days < 7; $days++) {
        $daysOfWeek[] = date("Y-m-d", mktime(0, 0, 0, $month, $day + $days, $year));
    }
    return $daysOfWeek;
}

function formatDay($date) {
    list($year, $month, $day) = explode("-", $date);
    $days = array("Domenica", "Luned&igrave;", "Marted&igrave;", "Mercoled&igrave;", "Gioved&igrave;", "Venerd&igrave;", "Sabato");
    $months = array(1, 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto',
        'Settembre', 'Ottobre', 'Novembre', 'Dicembre');
    $numberDay = date('w', mktime(0, 0, 0, $month, $day, $year));
    return $days[$numberDay] . " " . $day . " " . $months[(int) $month];
}

?>
<div id="infoweek">
    <?php
    list($week, $year) = explode("-", date('W-Y', strtotime(date('Y', strtotime('+' . (int) $_REQUEST['week'] . ' Week')) . 'W' . date("W", strtotime('+' . (int) $_REQUEST['week'] . ' Week')))));
    echo (int) $week . "&deg; settimana $year &nbsp;";
    ?>
</div>
<table class="weektable">
    <thead>

<th class='CalVisite' colspan="7">		       		             
             								       
		Calendario Lezioni Settimanali                                                                                                 
</th>                                                                         

<tr>
            <?php
            foreach (getDaysOfWeek() as $date) {
                $current = $date == date("Y-m-d") ? "class='current'" : "";
                echo "<th $current>" . formatDay($date) . "</th>";
            }
            ?>
        </tr>
    </thead>
 <tbody>
        <?php 


	foreach (getDaysOfWeek() as $date) {
            $current = $date == date("Y-m-d") ? "class='current'" : "";  
	    echo "<td $current>";	    
    
    $client = "localhost"; 
    $nome = "armando31"; 
    $password = "armando31pwd"; 
    $directory = "my_armando31"; 
    $tabella = "Lezioni"; 

    $connessione=mysql_connect($client,$nome,$password); //connessione database 
    mysql_select_db("my_informatica360", $connessione) or die();  

    $sqlquery = "SELECT * FROM $tabella"; 
    $result = mysql_query($sqlquery); 
		
while($r = mysql_fetch_array($result)) 
	    
	echo $r['ora'].":".str_pad($r['minuti'],2, '0' , STR_PAD_LEFT)." --- ".$r['ingressi']."<br/>"; 
 
mysql_close($connessione);

}
fclose($fr);

            echo "</td>";

        ?>
    </tbody>
</table>

Anche questo script funziona, recuperando correttamente le informazioni richieste dal DB.

Il problema è che non essendoci alcuna impostazione di "vincolo" tra il giorno del calendario ed il contenuto del campo "TEXT" data del DB.....il risultato è che l'orario delle lezioni presente nel DB (attualmente riportante i valori riferiti ad un solo giorno) viene stampato per tutti i giorni del calendario!!!

.....Come fare a legare il giorno del calendario a quello del campo data del DB ?...considerando che lo script ragiona per formato data Y-M-D ... mentre il campo del DB (oltre ad essere un TEXT) è in formato MM/DD/YYYY ?????

A I I U U U T T T O O O! ! !.....da solo rischio l'aneurisma!

Altro dilemma è la "famosa" somma della durata delle singole lezioni .... .... dilemma!!

Inutile dire che ho già fatto tutte le prove ed i Test del caso....non tralasciando neanche il consueto tour in giro per il web....dal quale ne sono uscito frastornato da mille e mille chiacchiere....e molto poco di concreto.!!

Spero anche questa volta nel tuo buon cuore e voglia di diffondere conoscenza...che mi hai già ampiamente dimostrato.

Un saluto e ....spero....A presto

Buona giornata
 
Ultima modifica di un moderatore: 4 Set 2015

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 5 Set 2015
  • #26
Ciao, puoi semplicemente trasformare la data nel formato che ti serve con explode()
PHP:
$data = "2015-09-05";
$d = explode("-", $data);
$dataperquery = $d[1] . "/" . $d[2] . "/" . $d[0];
echo "SELECT * FROM tabella WHERE data = '" . $dataperquery . "'";
anche se io preferisco salvare le date nel formato DATE di mysql (YYYY-MM-DD) visto che mettono a disposizione numerose funzioni per lavorare sulle date. Vedi qui.
 
A

armando31

Nuovo Utente
15 Ago 2015
21
0
1
  • 5 Set 2015
  • #27
Ciao,
Quindi, immagino, $data = 2015-09-05 sarebbe da indicare come ...$data = Y-m-d
Giusto ?....altrimenti la cosa funzionerebbe solo per il giorno dichiarato nella variabile $data......o sbaglio?

Ho dato un'occhiata al link....molto interessante!!!!
Ma come posso salvare in un campo DATE il valore prelevato da un tag xml <[CDATA]> nel formato che serve a me ??....é possibile secondo te ?.....considera che io non ho possibilitá di modificare l'xml.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 7 Set 2015
  • #28
Non serve modificare l'xml, immagino che hai un file che fa le INSERT sul database, prima di inserire la riga formatti la data nel formato di mysql, più o meno il contrario di quello che ti ho postato.
 
A

armando31

Nuovo Utente
15 Ago 2015
21
0
1
  • 13 Set 2015
  • #29
Ciao criric,

scusa il ritardo con cui ti rispondo ma....è stata una latitanza giustificata.....Il mio nipotino di 4 anni ha voluto sperimentare se una macchinina appoggiata sulla tastiera del portatile potesse passare attraverso il coperchio (chiudendolo di botto)........ESPERIMENTO FALLITO !!!!.....ma è stato necessario sostituire l'LCD per poter tornare ad utilizzare il pc

...
...

Comunque , come al solito , le tue dritte si sono dimostrate infallibili ed anche la versione con DB del calendario è perfettamente funzionante.

Nello specifico:

Per la conversione della data dell'xml e successivo inserimento all'interno di un campo date del DB ho utilizzato (come da te suggeritomi)

Codice:
$d = explode("/", $data);

$dataperdb = $d[2]. "/" .$d[0] . "/" .$d[1];

Per visualizzare i dati all'interno della colonna corretta:

Codice:
$sqlquery = "SELECT * FROM $tabella WHERE data = '".$date."'"; 						
$result = mysql_query($sqlquery);

Ed ,in fine, per la somma automatica:
Codice:
$sql = "SELECT SUM(durata) as somma FROM $tabella WHERE data = '".$date."'";					
$sqlT = mysql_query($sql);											
list($somma) = mysql_fetch_array($sqlT);

Anche in questo caso devo dire che senza i tuoi suggerimenti....non sarei arrivato lontano.

Devo dire che più vado avanti più PHP/MySQL mi piace ed appassiona....
Vedremo quali saranno i prossimi sviluppi....sperando di poter contare ancora sui tuoi consigli

Ciao
 
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
Devi accedere o registrarti per poter rispondere.

Discussioni simili

[PHP] Rimuovere pubblicazione nome pagina ... aiuto!
  • Michelebozzo
  • 23 Set 2019
  • PHP
Risposte
7
Visite
2K
PHP 29 Set 2019
Max 1
P
Pubblicazione app store gioco alcolico
  • peppecondor
  • 23 Ago 2019
  • Sviluppo app per iOS
Risposte
1
Visite
4K
Sviluppo app per iOS 19 Lug 2020
NEUROCT
N
E
Pubblicazione App
  • Ermanno82
  • 20 Ott 2017
  • Sviluppo app per iOS
Risposte
5
Visite
2K
Sviluppo app per iOS 21 Ott 2017
Ermanno82
E
6
Errore pubblicazione sito con Muse
  • 6lucio
  • 15 Apr 2016
  • Webdesign e Grafica
Risposte
0
Visite
2K
Webdesign e Grafica 15 Apr 2016
6lucio
6
L
Pubblicazione automatica Post su pagina Facebook
  • lorenzo84
  • 26 Gen 2016
  • PHP
Risposte
3
Visite
2K
PHP 1 Feb 2016
filomeni
Conoscere la data di pubblicazione di un sito web
  • felino
  • 19 Mar 2015
  • WordPress
Risposte
1
Visite
13K
WordPress 23 Mar 2015
Ueben
C
[Vendo Software]Autopubblicazione con pagine e autocancellazione
  • C.Darkness
  • 8 Nov 2014
  • Annunci servizi di Social Media Marketing
Risposte
0
Visite
1K
Annunci servizi di Social Media Marketing 8 Nov 2014
C.Darkness
C
I
Nuova Legge per pubblicazione di siti
  • Ilaria93
  • 13 Mar 2014
  • Webdesign e Grafica
Risposte
0
Visite
1K
Webdesign e Grafica 13 Mar 2014
Ilaria93
I
Blocco database a seguito della pubblicazione di un post sulla webapp
  • dvdscr
  • 30 Gen 2014
  • MySQL
Risposte
3
Visite
2K
MySQL 3 Feb 2014
flameseeker
A
Input di pubblicazione testo, come fare?
  • ahmadpour
  • 24 Dic 2013
  • PHP
Risposte
12
Visite
2K
PHP 29 Dic 2013
edin
T
problema pubblicazione sito in flash
  • Tonio Calabrese
  • 11 Ott 2013
  • Flash
Risposte
4
Visite
2K
Flash 17 Ott 2013
Tonio Calabrese
T
R
Problema pubblicazione automatica post su pagina facebook
  • Raffaele Chinaski
  • 24 Mag 2013
  • PHP
Risposte
6
Visite
9K
PHP 27 Mag 2013
Raffaele Chinaski
R
Z
Pubblicazione video
  • Z0MB13
  • 21 Apr 2013
  • PHP
  • 2
Risposte
20
Visite
3K
PHP 30 Apr 2013
borgo italia
R
Problema pubblicazione di MAGENTO sul mio hosting
  • Rohd Marchiotti
  • 25 Mar 2013
  • Magento
Risposte
0
Visite
2K
Magento 25 Mar 2013
Rohd Marchiotti
R
W
Problema nella pubblicazione programmata di un articolo
  • wicked87
  • 31 Gen 2013
  • WordPress
Risposte
1
Visite
2K
WordPress 31 Gen 2013
WpStyle
W
PlugIn pubblicazione automatica social network
  • wicked87
  • 29 Gen 2013
  • WordPress
Risposte
2
Visite
2K
WordPress 30 Gen 2013
wicked87
W
T
[Vendo] Servizio di pubblicazione Article marketing su PR-3 vari temi!
  • touristsoft
  • 5 Ott 2012
  • Offerte e Richieste di scambio links
Risposte
0
Visite
2K
Offerte e Richieste di scambio links 5 Ott 2012
touristsoft
T
F
Problema pubblicazione sito wordpress
  • Fabio90
  • 17 Giu 2012
  • WordPress
Risposte
2
Visite
3K
WordPress 18 Giu 2012
Fabio90
F
M
[HTML] Chiarimenti nella pubblicazione FRONT PAGE
  • masdefi
  • 25 Mag 2012
  • HTML e CSS
Risposte
0
Visite
2K
HTML e CSS 25 Mag 2012
masdefi
M
S
problemi sulla pubblicazione del mio sito
  • saragatt
  • 28 Feb 2012
  • HTML e CSS
Risposte
3
Visite
2K
HTML e CSS 5 Mar 2012
saragatt
S
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • Javascript
  • jQuery
  • 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?