Visualizzazione risultati 1 fino 27 di 27
Like Tree11Likes
  • 1 Post By
  • 1 Post By phollia
  • 1 Post By alemoppo
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By alemoppo
  • 2 Post By alemoppo
  • 1 Post By alemoppo
  • 1 Post By alemoppo

Discussione: estrarre dati in tabella

  1. #1
    Guest

    Predefinito estrarre dati in tabella

    salve a tutti

    ho creato un file php per estrarre i record di una tabella
    Codice HTML:
    <html> 
      <head> 
      <title> Turni</title>
      </head> 
    
      <body> 
      <?php   
        //Connessione  
        $host = 'xxxxxxxxxx'; 
        $user = 'xxxxxxxxx8'; 
        $password = 'xxxxxxxxxxx'; 
        $database = 'a_turni'; 
    
        $db = mysql_connect($host, $user, $password) or die ("Errore critico di Connessione al Database $host"); 
        
    	mysql_select_db($database, $db) or die("Impossibile connettersi al Database $database"); 
    	
    	$query = "select * from a_turni";
    	 $dbResult = mysql_query($query, $db);
    	
    	 print "<table border=\"1\">\n";
    	 while ($line =  mysql_fetch_array($dbResult, MYSQL_NUM)) {
    		  
    		  print "\t<tr>\n";
    		  
    	 foreach ($line as $col_value) {
    		 print "\t\t<td>$col_value</td>\n";
    	 }
    	 print "\t</tr>\n";
    	 }
    	 print "</table>\n";
    	 
    	 mysql_free_result($dbResult);
    	 mysql_close($db);
    	 ?>
         
      </body>  
    </html>
    esce il seguente errore:
    Impossibile connettersi al Database a_turni

    Quale potrebbe essere il problema?
    Grazie a tutti

  2. #2
    Guest

    Predefinito

    Su Altervista puoi usare solo un database che si chiama my_nomeutente (nel tuo caso my_segi)
    segi likes this.

  3. #3
    Guest

    Predefinito

    Sto provando su un server esterno.
    Da cosa potrebbe dipendere?
    Grazie ancora

  4. #4
    phollia non è connesso Utente giovane
    Data registrazione
    05-02-2015
    Messaggi
    68

    Predefinito

    Se lo script gira su AlterVista NON puoi usare database esterni. Devi usare l'unico DB fornito dalla stessa AlterVista.
    segi likes this.

  5. #5
    Guest

    Predefinito

    Gira su server esterno

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    esce il seguente errore:
    Impossibile connettersi al Database a_turni
    Esiste quel database?

    Ciao!
    segi likes this.

  7. #7
    Guest

    Predefinito

    Grazie , si il problema era il nome del database.


    Sto provando ad ottenere il risultato di estrarre le righe filtrando in base al nominativo ed al mese partendo dal seguente scenario.

    Ho una tabella dove sono presenti 130 righe e 365 colonne
    In pratica sono i turni assegnati al personale

    Nella prima colonna ci sono i nominativi dei dipendenti

    Nelle restanti colonne i giorni e cioè dal 01/01/3018 al 31/12/2018.
    Quindi ogni colonna dovrebbe chiamarsi 01/01/2018 02/01/2018 03/01/2018….31/12/2018
    Per ogni giorno è presente il turno di servizio assegnato (mattina, pomeriggio,sera, notte) al nominativo

    Secondo voi può essere fattibile?
    Questo il link http://www.segi.altervista.org/images/turnisegi.php

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    No, non è una buona impostazione.

    Supponi di continuare ad utilizzare questo sistema per i prossimi 10 anni: ti ritroveresti ad avere una tabella con 3650 colonne, molte delle quali non più utilizzate. Oppure a dover cambiare ogni anno la struttura della tabella.

    Il numero di colonne dovrebbe essere 3: identificativo del dipendente, turno assegnato (mattina, pomeriggio, ecc.) e giorno:
    Codice:
    | id dipendente | turno   |   giorno   |
    +---------------+---------+------------+
    |             1 | mattina | 2018-10-03 |
    |             2 | sera    | 2018-03-11 |
    |            15 | mattina | 2018-03-11 |
    ...
    +---------------+---------+------------+
    Ultima modifica di mzanella : 31-03-2018 alle ore 13.31.29
    segi likes this.

  9. #9
    Guest

    Predefinito

    Ciao Mzanella,
    grazie in anticipo per il tuo intervento

    il file che mi viene girato è in formato excel nel modo come in allegato, pertanto dovrei trovare una soluzione rapida a modificare il file excel e renderlo come da te suggerito, facendo solo 3 colonne e nnnn righe e poi lavorarci.
    il file attuale è strutturato nel seguente modo

    https://prnt.sc/iyw8xs

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Dovresti provare a leggere il file excel con una libreria PHP (es. PHP Excel reader, PHPExcel, ma ce ne sono sicuramente anche altre), e da lì inserirlo nella base di dati nel "formato a 3 colonne".
    segi likes this.

  11. #11
    Guest

    Predefinito

    Provo nel forum excel se si riesce a modificare in automatico il file... Ho visto le librerie ma non riesco a metterci le mani... Provo a vedere qualche video tutorial.
    Grazie ancora

  12. #12
    Guest

    Predefinito

    Sono riuscito a automatizzare la tabella come suggerito da Mzanella.

    dopo diversi tutorial e post ho provato ad abbozzare il codice che possa portarmi al risultato di estrarre i dati dalla tabella in base a delle scelte.
    il link http://segi.altervista.org/images/turni.php

    la prima cosa che stocercando di ottenere è la selezione del nominativo dalla casella combinata prelevando i dati dalla tabella a_nominativo, composto dai campi idnominativo e nominativo.

    ho inserito per il momento questo codice
    Codice HTML:
    <html> 
      <head> 
      <title> Turni</title>
      </head> 
    
      <body> 
    
     <?php   
        //Connessione  
        $host = 'xxxxxxxxxxx'; 
        $user = 'xxxxxxxxxxxx'; 
        $password = ''; 
        $database = 'xxxxxxxxxxxxxx'; 
    
        $db = mysql_connect($host, $user, $password) or die ("Errore critico di Connessione al Database $host"); 
        
    	mysql_select_db($database, $db) or die("Impossibile connettersi al Database $database"); 
    	
    	$comando = "select * a_turni";
    	
    	$result = mysql_query($comando);
    	
    	 ?>Nominativo
         
         <select name="nominativo">
    </select>
         <p>
           <?php
     while ($dati = mysql_fetch_assoc($result))
     print "<option value='$dati[idnominativo]'> $dati[nominativo] </option>";
     ?>
    </p>
      <p>dal giorno&nbsp;
      <label> <input name="mydatetime" type="datetime-local" /> </label></p>
    <p>al giorno&nbsp;<input name="mydatetime" type="datetime-local" /></p>
    <p><input type="submit" value="Invia" /></p>
    Grazie ancora

  13. #13
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Non usare le funzioni mysql_* che sono deprecate, passa a mySQLi o PDO.

    la prima cosa che stocercando di ottenere è la selezione del nominativo dalla casella combinata prelevando i dati dalla tabella a_nominativo, composto dai campi idnominativo e nominativo.
    Se ti interessano solo i nominativi ti basta una SELECT nominativo FROM a_nominativo, magari in ordine alfabetico (ORDER BY nominativo ASC).
    Se devi incrociare i dati con la tabella a_turni in cui hai un campo idnominativo avrai bisogno di una JOIN:
    Codice:
    SELECT * FROM a_turni JOIN a_nominativo ON a_turni.idnominativo = a_nominativo.idnominativo
    segi likes this.

  14. #14
    Guest

    Predefinito

    Grazie Mzanella,
    ho provato a sistemare il codice con le nuove funzioni mysqli.

    Ho provato ad inserire la query, la più semplice, per popolare la combobox, ma non funziona.

    Codice HTML:
    <html> 
      <head> 
      <title> Turni</title>
      </head> 
    
      <body> 
    
     <?php   
        //Connessione  
        $host = 'xxxxxxxx'; 
        $user = 'xxxxxxxxxxx'; 
        $password = 'xxxxxxxxxxx'; 
        $database = 'xxxxxxxxxxxxx'; 
    
           
    	$connessione = mysqli_connect($host, $user, $password, $database)or die ("Errore critico di Connessione al Database $host");  
    	
    	
    	$result = mysqli_query($connessione, "Impossibile connettersi al Database $database");  
    	
    	$comando = "SELECT nominativo FROM a_nominativo ORDER BY nominativo ASC";
    	
    	 ?>
         
         Nominativo  <select name="$comando">
    </select>
        
      <p>dal giorno&nbsp;
      <label> <input name="mydatetime" type="datetime-local" /> </label></p>
    <p>al giorno&nbsp;<input name="mydatetime" type="datetime-local" /></p>
    <p><input type="submit" value="Invia" /></p>
    Come dovrebbe essere impostato il codice?
    Grazie ancora

  15. #15
    Guest

    Predefinito

    da un altro post nella rete ho provato ad inserire il seguente codice
    Codice HTML:
    $sql = mysqli_query("SELECT nominativo FROM a_nominativo");
    echo "<select name=\"select\">";
    while ($res = mysqli_fetch_array($sql)){
    echo "<option value=\"".$res['idnominativo']."\">".$res['nominativo']."</option>";
    }
    echo "</select>";
    ?> 
    ma sembra ancora non funzionare.

    Grazie ancora

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    A occhio, il secondo codice dovrebbe funzionare, dopo aver effettuato la connessione al database (da phpMyAdmin ci sono i dati nella tabella?).

    Per il codice precedente, invece:
    Codice PHP:
    $result = mysqli_query($connessione, "Impossibile connettersi al Database $database");

    $comando = "SELECT nominativo FROM a_nominativo ORDER BY nominativo ASC";
    a mysqli_query devi passare $comando perché è quella funzione che esegue la query (comando).

    Ciao!
    segi likes this.

  17. #17
    Guest

    Predefinito

    i dati in phpmyadmin sono presenti come nell'immagine

    https://prnt.sc/j09wjs

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Provalo così:
    Codice PHP:
    <?php
    //Connessione
    $host = 'xxxxxxxx';
    $user = 'xxxxxxxxxxx';
    $password = 'xxxxxxxxxxx';
    $database = 'xxxxxxxxxxxxx';


    $connessione = mysqli_connect($host, $user, $password, $database)or die ("Errore critico di Connessione al Database $host");
    $comando = "SELECT nominativo FROM a_nominativo ORDER BY nominativo ASC"; //assegno la query alla stringa $comando
    $result = mysqli_query($connessione, $comando); //eseguo la query

    //mostro i risultati. Li ricavo riga per riga con la mysqli_fetch_array()
    echo "<select name=\"select\">";
    while (
    $res = mysqli_fetch_array($result)){
    echo
    "<option value=\"".$res['idnominativo']."\">".$res['nominativo']."</option>";
    }
    echo
    "</select>";

    mysqli_close($connessione); //chiudo la connessione
    ?>
    Ciao!
    mzanella and segi like this.

  19. #19
    Guest

    Predefinito

    grazie per la puntuale e precisa risposta, nei commenti, anche se è dura;

    ho provato ad inserire l'altra parte del codice per richiamare i valori presenti nella tabella a_turni.

    in pratica vorrei poter estrarre, in base al nominativo, le relative colonne in una specifica data (inizio e fine)

    questo il codice che attualmente estrae tutti i dati
    Codice PHP:
    <html>
    <head>
    <title> Turni</title>
    </head>

    <body>

    Nominativo <?php
    //Connessione
    $host = 'xxxxxx';
    $user = 'xxxxxxxxxxxxxxx';
    $password = 'xxxxxxxxx';
    $database = 'xxxxxxxxxxx';

    $connessione = mysqli_connect($host, $user, $password, $database)or die ("Errore critico di Connessione al Database $host");

    $comando = "SELECT nominativo FROM a_nominativo ORDER BY nominativo ASC"; //assegno la query alla stringa $comando

    $result = mysqli_query($connessione, $comando); //eseguo la query

    //mostro i risultati. Li ricavo riga per riga con la mysqli_fetch_array()
    echo "<select name=\"select\">";
    while (
    $res = mysqli_fetch_array($result)){
    echo
    "<option value=\"".$res['idnominativo']."\">".$res['nominativo']."</option>";
    }
    echo
    "</select>";

    // mysqli_close($connessione); //chiudo la connessione
    ?>
    <p>dal giorno&nbsp;
    <label> <input name="mydatetime" type="datetime-local" /> </label></p>
    <p>al giorno&nbsp;<input name="mydatetime" type="datetime-local" /></p>
    <p><input type="submit" value="Invia" /></p>
    <p>&nbsp;</p>

    <?php


    $query
    = "select * from a_turni";

    $dbResult = mysqli_query($connessione, $query);

    print
    "<table border=\"1\">\n";
    while (
    $line = mysqli_fetch_array($dbResult, MYSQL_NUM)) {

    print
    "\t<tr>\n";

    foreach (
    $line as $col_value) {
    print
    "\t\t<td>$col_value</td>\n";
    }
    print
    "\t</tr>\n";
    }
    print
    "</table>\n";

    mysqli_free_result($dbResult);
    mysqli_close($db);
    ?>
    Grazie ancora
    Ultima modifica di alemoppo : 03-04-2018 alle ore 20.10.09 Motivo: [html]->[php]

  20. #20
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    La data immagino sia salvata in modalità stringa (char? varchar?).
    Dovresti salvarla in formato DATE per poter fare direttamente operazioni sui dati (come prelevare un certo range di date).

    Ciao!
    segi likes this.

  21. #21
    Guest

    Predefinito

    Grazie alemoppo,
    la data l'avevo impostata varchar.
    Adesso ho modificato in Date.

    Ma non ho proprio l'idea di come proseguire.
    Suppongo occorra creare un form?
    Grazie ancora
    Ultima modifica di segi : 03-04-2018 alle ore 21.36.28

  22. #22
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Ora se è in formato data puoi usare between.

    Ciao!

  23. #23
    Guest

    Predefinito

    in pratica premendo il pulsante invia, dopo aver selezionato le date dovrebbe apparire la tabella con le sole date del nominativo selezionato.
    Provo a vedere, ma sono certo di non farcela


    Grazie ancora
    Ultima modifica di segi : 03-04-2018 alle ore 21.51.30

  24. #24
    Guest

    Predefinito

    ciao a tutti, ho provato a vedere in diversi post la funzione between, ma proprio non riesco.

    penso che bisognerebbe dare dei nomi corretti alle label mydatetime, essendo in questo modo entrambi uguali, per poi effettuare la corretta query.

    qualcuno riescie ad aiutarmi?

    Grazie a tutti voi.

  25. #25
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Fai così: prima cerchi la query adatta e la testi con phpMyAdmin. Dovrebbe essere una cosa tipo:

    Codice:
    SELECT nominativo FROM a_nominativo WHERE giorno BETWEEN '2018/01/01' AND '2018/04/09'
    Puoi farlo anche senza between, così:
    Codice:
    SELECT nominativo FROM a_nominativo WHERE giorno >= '2018/01/01' AND giorno <= '2018/04/09'
    Una volta che hai trovato la query che funziona, devi soltanto "crearla" da PHP, ovvero prelevare le date e scriverle nella stringa della query per poi eseguirla.

    Ciao!
    segi likes this.

  26. #26
    Guest

    Predefinito

    Ciao Alemoppo, grazie ancora,
    sto provando ma davvero ho grandi difficoltà.
    Perdonami se voi moderatori possiate pensare che vorrei solo la pappa pronta, ma garantisco che non è così.
    Occorre sempre creare un ciclo while?
    Grazie ancora

  27. #27
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    No, non occorre un ciclo while.

    Hai provato ad eseuire la query da phpMyAdmin? Funziona? (se non sai come si fa: phpmyadmin->clicchi a destra su my_tuonick->SQL e incolli la query lì e fai esegui.

    Una volta che trovi la query corretta (che fa quel che vuoi), devi implementarla in PHP. All'inizio implementala senza utilizzare le date prelevate lato utente, ma utilizza quelle "statiche" della query. Quando questa cosa funzionerà provvederai a modificare le date prendendo quelle specificate dall'utente.

    Altrimenti, se non hai una granché esperienza di programmazione, ti risulterà difficile fare tutto insieme: procedi a piccoli passi come ti ho indicato.

    Se ad un certo passo trovi difficoltà, chiedi pure ma porta quel che hai provato e che non funziona altrimenti è impossibile aiutarti.

    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •