Visualizzazione risultati 1 fino 8 di 8

Discussione: Ajax e php con if ed else

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito Ajax e php con if ed else

    Ciao a tutti

    Ho strutturato un codice (tramite suggerimento) compososto da datatables + Ajax + php

    Il codice funziona, carica le pagine velocemente in base alla richiesta grazie ad Ajax, il problema risiede nella struttura condititional (statement) if else, in pratica dovrei aggiungere questo codice per controllare la differenza tra il campo data_webe la data corrente e se i giorni rientrano nel ciclo di 7 days visualizzare l'icona New.

    codice da inserire

    Codice PHP:

    $originalDate
    = $row['data_web'];
    $newDateweb = date("Y-m-d", strtotime($originalDate));

    // visualizza l'icona new_icon per 7 day


    if ( (strtotime($newDateweb)+7*86400)>time() ){
    echo
    '<b style="color:green;">' .$newDateweb. '</b>';
    echo
    '&nbsp; &nbsp;' . '<img src="ico/new_icon.gif" />';

    }else{

    echo
    $newDateweb;
    }

    index.php per la chiamata ajax


    Codice:
    $(document).ready(function(){
                $('#empTable').DataTable({
                    'processing': true,
                    'serverSide': true,
                    'serverMethod': 'post',
                    'ajax': {
                        'url':'ajaxfile.php'
                    },
                    "order": [[ 0, "desc" ]],
                    
                    // start columns array
                    'columns': [ 
                        
                        
                        {data: 'id'},
                        
                        {data: 'title'},
                        
                        {data: 'image'},
                        
                        { data: 'cast' },
                        
                        { data: 'data_web,
                        
                        
                    ], 
    
    ....

    ajaxfile.php parziale

    la parte da modificare penso risieda in questa zona

    "data_web"=>$row['data_web'],
    Codice PHP:

    ## Fetch records
    $empQuery = "select * from store WHERE 1 ".$searchQuery." order by ".$columnName." ".$columnSortOrder." limit ".$row.",".$rowperpage;
    $empRecords = mysqli_query($con, $empQuery);
    $data = array();



    while (
    $row = mysqli_fetch_assoc($empRecords)) {
    $data[] = array(
    "id"=>$row['id'],
    "title"=>$row['title'],
    "title"=>'<a href="https://forum.it.altervista.org/member/film.php?id=' . $row['id'] . '" target="_blank"' . '>' . $row['title'] . '</a>',
    "image"=>'<a href="https://forum.it.altervista.org/images/' .$row['image']. '"><img src="https://forum.it.altervista.org/images/' .$row['image']. '" width="50px" class="zoom"/><a>',
    "cast"=>$row['cast'],
    "data_web"=>$row['data_web'],
    "tags"=>$row['tags']
    );
    }



    ## Response
    $response = array(
    "draw" => intval($draw),
    "iTotalRecords" => $totalRecords,
    "iTotalDisplayRecords" => $totalRecordwithFilter,
    "aaData" => $data
    );

    echo
    json_encode($response);
    grazie a tutti per il supporto
    Ultima modifica di blackskyisback : 04-08-2023 alle ore 09.52.47

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

    Predefinito

    Sono molto arrugginito su queste cose, però potresti farti calcolare da mysql la differenza di date in questo modo:

    Codice:
    SELECT *, DATEDIFF(NOW(), data_web)  AS elapsed_days FROM .....
    In questo modo, come leggi data_web puoi leggere elapsed_days che dovrebbe contenere già la differenza tra oggi e "data_web". Ovviamente il nome "elapsed_days" puoi modificarlo a piacere e dargli un nome sensato nel tuo contesto.

    Ciao!
    Ultima modifica di alemoppo : 04-08-2023 alle ore 18.06.50

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao alemoppo


    grazie per il consiglio, avevo anche io in mente questa opzione, infatti avevo la query pronta

    Codice:
    SELECT data_web, STR_TO_DATE(data_web, '%m/%d/%Y') as datawenew from store having STR_TO_DATE(data_web, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAY;
    ho provato cosi con le query a cascata ma non funziona , nessun dato visualizzato

    Codice PHP:

    ## Fetch records
    $empQuery = "select * from store WHERE 1 ".$searchQuery." order by ".$columnName." ".$columnSortOrder." limit ".$row.",".$rowperpage;
    $empQuery = "SELECT data_web, STR_TO_DATE(data_web, '%m/%d/%Y') as datawenew from store having STR_TO_DATE(data_web, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAY;".$empQuery;
    $empRecords = mysqli_query($con, $empQuery);
    $data = array();

    while (
    $row = mysqli_fetch_assoc($empRecords)) {
    $data[] = array(
    "id"=>$row['id'],
    "title"=>$row['title'],
    "title"=>'<a href="https://forum.it.altervista.org/member/film.php?id=' . $row['id'] . '" target="_blank"' . '>' . $row['title'] . '</a>',
    "image"=>'<a href="https://forum.it.altervista.org/images/' .$row['image']. '"><img src="https://forum.it.altervista.org/images/' .$row['image']. '" width="50px" class="zoom"/><a>',
    "cast"=>$row['cast'],
    "data_web"=>$row['data_web'],
    "tags"=>$row['tags']
    );
    }

    ## Response
    $response = array(
    "draw" => intval($draw),
    "iTotalRecords" => $totalRecords,
    "iTotalDisplayRecords" => $totalRecordwithFilter,
    "aaData" => $data
    );

    echo
    json_encode($response);
    Ultima modifica di blackskyisback : 04-08-2023 alle ore 21.25.05

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

    Predefinito

    Non ho capito: ad $empQuery prima gli assegni una query e poi un'altra. In questo modo sei conscio di sovrascrivere la prima con la seconda?

    In ogni caso, ti consiglio prima di provare le query su phpMyAdmin per vedere se funzionano, poi codificare ed integrare la query funzionante in PHP.

    Ciao!

  5. #5
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Non ho capito: ad $empQuery prima gli assegni una query e poi un'altra. In questo modo sei conscio di sovrascrivere la prima con la seconda?

    In ogni caso, ti consiglio prima di provare le query su phpMyAdmin per vedere se funzionano, poi codificare ed integrare la query funzionante in PHP.

    Ciao!
    Rieccomi

    infatti era solo un test quello delle query a cascata, fallimentare come prevedevo e tu hai segnalato qui,
    la query comunque funziona perfettamente, testata su Navicat Premium(molto piu' avanzato di phpMyAdmin)
    il problema e' come strutturare il tutto

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

    Predefinito

    Ho appena visto che concateni le due queries, non mi ero accorto di:
    Codice PHP:
    "...INTERVAL 7 DAY;".$empQuery;
    Il discorso è che mysqlyi_query esegue una sola query. Per eseguire più queries devi usare mysqli_multi_query().

    Ciao!

  7. #7
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Ho appena visto che concateni le due queries, non mi ero accorto di:
    Codice PHP:
    "...INTERVAL 7 DAY;".$empQuery;
    Il discorso è che mysqlyi_query esegue una sola query. Per eseguire più queries devi usare mysqli_multi_query().

    Ciao!
    mysqli_multi_query non funziona nel mio codice, comunque qualcosa sono riuscito a fare

    creato la query prima della'array


    Codice:
    $diff = mysqli_query($con,"SELECT data_web, STR_TO_DATE(data_web, '%m/%d/%Y') as datawenew from store having STR_TO_DATE(data_web, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAY;");
    $newdate = mysqli_fetch_assoc($diff);


    in Repsonse per il json creato

    Codice:
    "datawenew" =>$newdate
    ottengo un risultato,2023-08-07 ed e' corretto



    adesso il problema e' associare i valori delle tabelle (e' strutturato in datatables) all'icona New


    codice modificato

    Codice PHP:
    $diff = mysqli_query($con,"SELECT data_web, STR_TO_DATE(data_web, '%m/%d/%Y') as datawenew from store having STR_TO_DATE(data_web, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAY;");
    $newdate = mysqli_fetch_assoc($diff);


    ## Fetch records
    $empQuery = "select * from store WHERE 1 ".$searchQuery." order by ".$columnName." ".$columnSortOrder." limit ".$row.",".$rowperpage;
    $empRecords = mysqli_query($con, $empQuery);
    $data = array();

    while (
    $row = mysqli_fetch_assoc($empRecords)) {
    $data[] = array(
    "id"=>$row['id'],
    "title"=>$row['title'],
    "title"=>'<a href="https://forum.it.altervista.org/member/film.php?id=' . $row['id'] . '" target="_blank"' . '>' . $row['title'] . '</a>',
    "image"=>'<a href="https://forum.it.altervista.org/images/' .$row['image']. '"><img src="https://forum.it.altervista.org/images/' .$row['image']. '" width="50px" class="zoom"/><a>',
    "cast"=>$row['cast'],
    "data_web"=>$row['data_web'],
    "tags"=>$row['tags'],
    "trailer"=>'<a href="https://forum.it.altervista.org/trailer/' . $row['trailer'] . '" target="_blank"' . '>' . $row['trailer'] . '</a>'
    );
    }

    ## Response
    $response = array(
    "draw" => intval($draw),
    "iTotalRecords" => $totalRecords,
    "iTotalDisplayRecords" => $totalRecordwithFilter,
    "aaData" => $data,
    "datawenew" =>$newdate
    );

    echo
    json_encode($response);
    Ultima modifica di blackskyisback : 07-08-2023 alle ore 12.24.24

  8. #8
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    risolto

Tags for this Thread

Regole di scrittura

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