Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    84

    query ??? vuota o con errore

    Ciao a tutti

    ho un problema e non riesco a venirne a capo...

    (premesso che non sono un veterano di php)

    ho una query (questo è il risultato in echo):



    SELECT dipendenti.id_dip, dipendenti.matricola, dipendenti.cognome, dipendenti.nome, dipendenti.ore_ordinarie, presenze.stato_presenza, presenze.ore_assenza, presenze.ore_presenza,presenze.con_ticket FROM dipendenti LEFT JOIN presenze ON (dipendenti.id_dip = presenze.id_dip AND presenze.giorno = 19 AND presenze.mese = 5 AND presenze.anno = 2008) WHERE dipendenti.id_dip = 4 AND ((UNIX_TIMESTAMP('2008-5-19') - UNIX_TIMESTAMP( dipendenti.`data_fine_rapp` )) <=0) OR (UNIX_TIMESTAMP( dipendenti.`data_fine_rapp`) =0)



    di logica dovrebbe selezionarmi il dipendente con ID = 4 se lo richiamo per visualizzarlo con:



    while ($linea = fetch_array($risultato, MYSQL_ASSOC))
    {
    //Riga dei dati
    $id_dip = $linea["id_dip"];



    etc etc



    dove $risultato è una funzione

    mi da errore:



    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programmi\easyphp\www\gestione_dipendenti\funct ions\db_functions.php on line 33

    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\Programmi\easyphp\www\gestione_dipendenti\funct ions\db_functions.php on line 63


    dove le righe sono queste...



    31 function fetch_array($risultato)
    32 {
    33 return mysql_fetch_array($risultato);
    34 }



    61 function chiudi_recordset($risultato)
    62 {
    63 mysql_free_result($risultato);
    64 }




    Qualcuno può aiutarmi? ho cercato ne forum ma no ho trovato nulla



    grazie!

  2. #2
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    domanda: se tu su phpMyAdmin (o simile )
    testi questa:

    SELECT dipendenti.id_dip, dipendenti.matricola, dipendenti.cognome, dipendenti.nome, dipendenti.ore_ordinarie, presenze.stato_presenza, presenze.ore_assenza, presenze.ore_presenza,presenze.con_ticket FROM dipendenti LEFT JOIN presenze ON (dipendenti.id_dip = presenze.id_dip AND presenze.giorno = 19 AND presenze.mese = 5 AND presenze.anno = 2008)

    cioè senza WHERE, funzia?

  3. #3
    Ciao,
    a colpo d'occhio direi che quei 3 AND nella stringa SQL:

    ON (dipendenti.id_dip = presenze.id_dip AND presenze.giorno = 19 AND presenze.mese = 5 AND presenze.anno = 2008)
    li hai copiati e incollati nel posto sbagliato... sei sicuro che la query funzioni? Mi sa tanto che dovrebbero stare piuttosto nella clausola "WHERE"...
    In effetti per la left join hai bisogno solo di collegare gli indici delle due tabelle quindi

    codice:
    ON (dipendenti.id_dip = presenze.id_dip)

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    84

    grazie della risposta

    Ciao

    si la query funzia su sql sia con che senza il where ma rilascia tutti i risultati non filtra l'ID_DIP

    per la seconda risp sì funziona anche così

    SELECT dipendenti.id_dip, dipendenti.matricola, dipendenti.cognome, dipendenti.nome, dipendenti.ore_ordinarie, presenze.stato_presenza, presenze.ore_assenza, presenze.ore_presenza,presenze.con_ticket FROM dipendenti LEFT JOIN presenze ON (dipendenti.id_dip = presenze.id_dip) WHERE dipendenti.id_dip = 1 AND ((UNIX_TIMESTAMP('2008-5-19') - UNIX_TIMESTAMP( dipendenti.`data_fine_rapp` )) <=0) OR (UNIX_TIMESTAMP( dipendenti.`data_fine_rapp`) =0) AND presenze.giorno = 19 AND presenze.mese = 5 AND presenze.anno = 2008

    ps prima di copiare cerco di capire e se non ci riesco chiedo

  5. #5
    Bene,
    allora io proverei con un bel

    codice:
    mysql_query ('SELECT * FROM dipendenti) or die ('Errore_dipendenti: '.mysql_error ());
    mysql_query ('SELECT * FROM presenze) or die ('Errore_presenze: '.mysql_error ());
    Almeno l'errore sarà più chiaro, magari hai solo il nome di un campo scritto male...

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    84

    già fatto

    risponde una meraviglia listando tutti i record

    ARGH!

  7. #7

    Re: già fatto

    Originariamente inviato da linno
    risponde una meraviglia listando tutti i record

    ARGH!
    Allora al posto degli asterischi metti i nomi dei campi così come li hai scritti nella query con la join ... son quasi convinto che il problema sia un nome campo che hai scritto in modo errato...


  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    84

    niente

    controllati uno a uno niente da fare... il problema deve essere altrove e sarà sicuramente una stupidata

    id_dip
    matricola
    cognome
    nome
    reparto
    id_rep
    data_assunzione
    qualifica
    id_qual
    livello
    mansione
    id_man
    tipo_rapporto
    id_tiporap
    scadenza
    sgravi
    ore_ordinarie
    data_fine_rapp

    id_pres
    id_dip
    matricola
    cognome
    nome
    giorno
    mese
    anno
    stato_presenza
    ore_assenza
    ore_presenza
    con_ticket

  9. #9
    Forse è meglio se posti il codice completo, almeno gli diamo un'occhiata ...


  10. #10
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    84

    codice

    questo è il body

    <?php
    include('functions/funzioni.php');

    //Query
    //$query = "Select id_dip, matricola,cognome, nome,ore_ordinarie from dipendenti order by matricola";
    $query = "SELECT dipendenti.id_dip, dipendenti.matricola, dipendenti.cognome, dipendenti.nome,
    dipendenti.ore_ordinarie, presenze.stato_presenza, presenze.ore_assenza, presenze.ore_presenza,presenze.con_ticket
    FROM dipendenti LEFT JOIN presenze ON ( dipendenti.id_dip = presenze.id_dip
    AND presenze.giorno = $giorno
    AND presenze.mese = $mese
    AND presenze.anno = $anno)";
    $query = $query . " WHERE ((UNIX_TIMESTAMP('$anno-$mese-$giorno') - ";
    $query = $query . " UNIX_TIMESTAMP( dipendenti.`data_fine_rapp` )) <=0)";
    $query = $query . " OR (UNIX_TIMESTAMP( dipendenti.`data_fine_rapp` ) =0)";
    $query = $query . " order by dipendenti.matricola";


    //Aggiungo il pulsante per il default....
    $arg = $HTTP_SERVER_VARS['REQUEST_URI'];
    $str = "";

    //Spaziatura
    $str = $str . " <tr>\n </tr>\n";
    $str = $str . " <tr>\n </tr>\n";
    $str = $str . " <tr>\n </tr>\n";

    //Apertura della riga nella quale è contenuta
    //la tabella per il form d'inserimento
    $str = $str . " <tr>\n";

    //Apertura del form per l'inserimento delle presenze
    $str = $str . " <form name='inserisci_presenze' method='post' action='ins_pres_exec.php'>\n";

    //Apre la tabella
    $str = $str . " <table border='0' width='630px'>\n";

    //Intestazione della tabella
    $str = $str . " <tr>\n";
    $str = $str . " <td width='10px' class='testa'>Maticola</td>\n";
    $str = $str . " <td class='testa'>Cognome</td>\n";
    $str = $str . " <td class='testa'>Nome</td>\n";
    $str = $str . " <td width='10px' class='testa'>Ore Ordinarie</td>\n";
    $str = $str . " <td width='10px' class='testa'>Stato</td>\n";
    $str = $str . " <td width='40px' class='testa'>Ore di presenza</td>\n";
    $str = $str . " <td width='40px' class='testa'>Ore di Assenza o Straordinario</td>\n";
    $str = $str . " <td width='40px' class='testa'>Con Ticket</td>\n";
    $str = $str . " </tr>\n";

    //Dati della tabella (lista dei dipendenti)
    $conn = apri_connessione();
    $risultato = crea_recordset($query);

    while ($linea = mysql_fetch_array($risultato, MYSQL_ASSOC))
    {
    //Riga dei dati
    $id_dip = $linea["id_dip"];

    $stato_presenza = $linea['stato_presenza'];
    if($stato_presenza=='')
    $stato_presenza = 'NOT_SET';
    $stato_presenza_reale = $linea['stato_presenza'];
    if($stato_presenza_reale=='')
    $stato_presenza_reale = 'NOT_SET';

    if($stato_presenza=='NOT_SET')
    $str = $str . " <tr class='corpo_non_set'>\n";
    else
    $str = $str . " <tr class='corpo'>\n";

    //scorro l'array $linea per salvare il valore del campo
    $str = $str . " <td>" . $linea['matricola'] . "</td>\n";
    $str = $str . " <td>" . $linea['cognome'] . "</td>\n";
    $str = $str . " <td>" . $linea['nome'] . "</td>\n";
    $str = $str . " <td>" . $linea['ore_ordinarie'] . "</td>\n";

    if(($_GET['stato_default']!='') && ($stato_presenza=='NOT_SET'))
    $stato_presenza = $_GET['stato_default'];

    //Disegno l'input box per lo stato e per le ore di assenza
    $str = $str . "<td>".html_optionbox_presenze('stato',$id_dip ,
    $stato_presenza,$linea['ore_ordinarie'])."</td>";
    //Campo ore presenza
    $str = $str . " <td>\n";
    $str = $str . " <input type='text' name='presenza" . $id_dip . "' id='testo" . $id_dip . "' ";
    $str = $str . "value='" . ore_pres_dip($stato_presenza,$linea['ore_presenza'],$linea['ore_ordinarie']) . "' size='10'></input>\n";
    $str = $str . " </td>\n";

    //Campo ore assenza
    $disabilitato = "";
    if($stato_presenza=='PRESENTE')
    $disabilitato = 'disabled';

    $str = $str . " <td>\n";
    $str = $str . " <input $disabilitato type='text' name='assenza" . $id_dip . "' id='aaaa" . $id_dip . "' ";
    $str = $str . "value='" . ore_ass_dip($linea['ore_assenza']) . "' size='10'></input>\n";
    $str = $str . " </td>\n";

    //Fine riga dei dati
    //Campo verifica ticket
    if($stato_presenza_reale=='NOT_SET')
    $con_ticket = 'checked';
    else
    {
    if($linea['con_ticket']=='1') $con_ticket = 'checked';
    else $con_ticket = '';
    }

    $str = $str . " <td>\n";
    $str = $str . " <input type='checkbox' name='conticket" . $id_dip . "' id='conticket" . $id_dip . "' ";
    $str = $str . "value='1' $con_ticket/>\n";
    $str = $str . " </td>\n";
    $str = $str . " </tr>\n";
    }

    //Spaziatura
    $str = $str . " <tr>\n </tr>\n";
    $str = $str . " <tr>\n </tr>\n";
    $str = $str . " <tr>\n </tr>\n";

    //Bottone submit
    $str = $str . " <tr>\n";
    $str = $str . " <td><input type='submit' name='Esegui' value='Applica'></td>\n";
    $str = $str . " </tr>\n";

    //Chiusura della tabella
    $str = $str . " </table>\n";

    //Passo come parametro anche la data
    $str = $str . "<input type='hidden' name='gg' value='" . $giorno . "'>";
    $str = $str . "<input type='hidden' name='mm' value='" . $mese . "'>";
    $str = $str . "<input type='hidden' name='aaaa' value='" . $anno . "'>";

    //Chiusura del form
    $str = $str . " </form>\n";

    //Chiusura della riga nella quale è contenuta
    //la tabella per il form d'inserimento
    $str = $str . " </tr>\n";
    $str = $str . " </table>\n";
    $str = $str . "</tr>\n";
    $str = $str . "</table>";

    chiudi_recordset($risultato);
    chiudi_connessione($conn);

    echo $str;
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.