htmLawed.php

htmLawed.php

commediacommedia Posts: 21Questions: 5Answers: 0

Hi!
I use datatables 1.10, but php is still 5.3.

I get this error:
<b>Warning</b>: explode() expects parameter 2 to be string, array given in <b>/Applications/MAMP/htdocs/amministrazione/Datatables/php/Vendor/htmLawed/htmLawed.php</b> on line <b>181</b><br />

I think it's something wrong with my php version as here:

https://datatables.net//forums/discussion/comment/85059/#Comment_85059

I can't update it. How can I do?

Thanks
Pat

Answers

  • allanallan Posts: 63,531Questions: 1Answers: 10,475 Site admin

    Could you say specifically what version of PHP you are using please? 5.3.what?

    Allan

  • commediacommedia Posts: 21Questions: 5Answers: 0

    php 5.3.18

  • allanallan Posts: 63,531Questions: 1Answers: 10,475 Site admin

    And what version of Editor and its PHP libraries?

    Can you also show me the PHP code you are using for Editor please?

    Thanks,
    Allan

  • commediacommedia Posts: 21Questions: 5Answers: 0
    edited February 2017

    DataTables Editor v1.6.1

    // Alias Editor classes so they are easy to use
    use
        DataTables\Editor,
        DataTables\Editor\Field,
        DataTables\Editor\Format,
        DataTables\Editor\Mjoin,
        DataTables\Editor\Upload,
        DataTables\Editor\Validate;
    $data = Editor::inst( $db, 'fromNav_Disponibilita', 'idArticolo' );
    // parametri 1- connessione db 2- tabella 3-chiave primaria di default 'id', se non esiste dà errore
    $data->field( Field::inst( 'fromNav_Disponibilita.idArticolo' )
                    ->validator( 'Validate::unique', array(
                    "required" => true,
                    "message" => "Disponibilità già inserita per agente/prodotto/seme"
                   ) ),
                  Field::inst( 'fromNav_Disponibilita.idAgenteA' ),
                  Field::inst( 'fromNav_Disponibilita.idAgente_persone' ),
                  Field::inst( 'fromNav_Disponibilita.agente_nome' ),
                  Field::inst( 'fromNav_Disponibilita.agente_cognome' ),
                  Field::inst( 'fromNav_Disponibilita.capo_id' ),
                  Field::inst( 'fromNav_Disponibilita.capo_nome' ),
                  Field::inst( 'fromNav_Disponibilita.capo_cognome' ),
                  Field::inst( 'arrProdotti.prodotto' ),
                  Field::inst( 'arrProdotti.name' ),
                  Field::inst( 'fromNav_Disponibilita.idProdottoA' ),
                  Field::inst( 'fromNav_Disponibilita.idSemeA' ),
                  Field::inst( 'fromNav_Disponibilita.idVariante' ),
                  Field::inst( 'fromNav_Disponibilita.dispo' )
                  ->validator( 'Validate::required', array(
                        "empty" => false,
                        "message" => "Campo disponibilità obbligatorio"
                  )),
                  Field::inst( 'fromNav_Disponibilita.non_ordinabile' )
                );
    $data->leftjoin( 'arrProdotti', 'arrProdotti.prodotto', '=', 'fromNav_Disponibilita.idProdottoA' );
    $data->join( Mjoin::inst( 'righe_disponibilita' )
                    ->link( 'fromNav_Disponibilita.idArticolo','righe_disponibilita.idArticolo' )
                    ->fields(   Field::inst( 'idArticolo' ))
                    ->fields(   Field::inst( 'righe_dispo_variante' ))
                    ->fields(   Field::inst( 'righe_dispo_qta' ))
               );
    $data->on('preCreate',function( $editor, $values ) {
      // parametri 
      // 1 jQuery event object
      // 2 JSON data returned from the server
      // 3 The data that will be used to update the row / page
        //var_dump($values);
        $id = $values['fromNav_Disponibilita']['idAgente_persone'];
        $datiAgente = getCodiceF6($id);
        //var_dump($datiAgente);
        $f6 = $datiAgente['ag_codici_sis']; 
        $cognome = $datiAgente['persone_cognome']; 
        $nome = $datiAgente['persone_nome'];
        $CapoArea = $datiAgente['ag_capo_area'];
        // fisso codice F6 agente
        $editor
          ->field( 'fromNav_Disponibilita.idAgenteA' )
          ->setValue( $f6 ); 
        // fisso il nome e cognome agente 
        $editor
          ->field( 'fromNav_Disponibilita.agente_cognome' )
          ->setValue( $cognome ); 
        $editor
          ->field( 'fromNav_Disponibilita.agente_nome' )
          ->setValue( $nome ); 
        // fisso il codice capo area
        $editor
          ->field( 'fromNav_Disponibilita.capo_id' )
          ->setValue( $CapoArea );    
        // fisso il nome e cognome capo area
        $datiCapoArea = getPersona($CapoArea);
        $capo_cognome = $datiCapoArea['persone_cognome'];
        $capo_nome = $datiCapoArea['persone_nome'];
        //var_dump($capo_cognome);
        //var_dump($capo_nome);
        $editor
          ->field( 'fromNav_Disponibilita.capo_cognome' )
          ->setValue( $capo_cognome ); 
        $editor
          ->field( 'fromNav_Disponibilita.capo_nome' )
          ->setValue( $capo_nome ); 
    });
    
    $data->on('preEdit', function( $editor, $json, $data ) {
      // parametri 
      // 1 jQuery event object
      // 2 JSON data returned from the server
      // 3 The data that will be used to update the row / page
        //$codice_completo = "prova".$json;
        //var_dump($codice_completo);
        //var_dump($data);
        global $conn;
        $codice_nuovo = $data['fromNav_Disponibilita']['idArticolo'];
        $disponit = $data['fromNav_Disponibilita']['dispo'];
        $id = $data['fromNav_Disponibilita']['idAgente_persone'];
        $datiAgente = getCodiceF6($id);
        //var_dump($datiAgente);
        $f6 = $datiAgente['ag_codici_sis']; 
        $cognome = $datiAgente['persone_cognome']; 
        $nome = $datiAgente['persone_nome'];
        $CapoArea = $datiAgente['ag_capo_area'];
        // fisso codice F6 agente
        $editor
          ->field( 'fromNav_Disponibilita.idAgenteA' )
          ->setValue( $f6 );
        // fisso nome agente
        $editor
          ->field( 'fromNav_Disponibilita.agente_nome' )
          ->setValue( $nome );
        // fisso cognome agente
        $editor
          ->field( 'fromNav_Disponibilita.agente_cognome' )
          ->setValue( $cognome );
        // fisso codice F6 agente
        $editor
          ->field( 'fromNav_Disponibilita.idAgenteA' )
          ->setValue( $f6 );
        // fisso codice capo area
        $editor
          ->field( 'fromNav_Disponibilita.capo_id' )
          ->setValue( $CapoArea );
        if ($CapoArea != 0 ) {
          $datiCapoArea = getPersona($CapoArea); 
          $cognomeCapo = $datiCapoArea['persone_cognome']; 
          $nomeCapo = $datiCapoArea['persone_nome'];
        } else {
          $cognomeCapo = " "; 
          $nomeCapo = " ";
        }
        // fisso nome capoarea
        $editor
          ->field( 'fromNav_Disponibilita.capo_nome' )
          ->setValue( $nomeCapo );
        // fisso cognome agente
        $editor
          ->field( 'fromNav_Disponibilita.capo_cognome' )
          ->setValue( $cognomeCapo );          
    });
    
    $data->on('postEdit', function( $editor, $json, $data ) {
      global $conn;
      // parametri 
      // 1 jQuery event object
      // 2 JSON data returned from the server
      // 3 The data that will be used to update the row / page
        $codice_precedente = $json; // codice precedente
        $codice_attuale = $data['fromNav_Disponibilita']['idArticolo'];
        //var_dump($codice_precedente);
        //var_dump($codice_attuale); 
        $ordinato = getOrdinato($codice_precedente);
        //var_dump($ordinato);
        if ($ordinato) {
          //var_dump($ordinato);
          $sqlUpdate = "UPDATE righe_disponibilita
            SET idArticolo = NULL 
            WHERE idArticoloFisso = '".$codice_precedente."'";
          if ( $resUpdate = $conn->query($sqlUpdate) ) {
              //echo "tutto ok nullo";
              //echo $resUpdate;
            } else {
              //echo $conn->error;
              }
        }
        $ordinatoAttuale = getOrdinato($codice_attuale);
        $sqlUpdate = "UPDATE righe_disponibilita
          SET idArticolo = '".$codice_attuale."' 
          WHERE idArticoloFisso = '".$codice_attuale."'";
        if ( $resUpdate = $conn->query($sqlUpdate) ) {
            //echo "tutto ok";
            //echo $resUpdate;
          } else {
            //echo $conn->error;
            }        
    });
    
    $out = $data
           ->transaction( false )
           ->process($_POST)
           ->data();
    
      // select agenti
      $agentiLista = $db->selectDistinct( 'persone', 'persone_id, persone_cognome,persone_nome, persone_tipores_id',NULL, 'persone_cognome,persone_nome ASC');
      $out['selectAgenti'] = array();
      while ( $row = $agentiLista->fetch() ) {
        if ($row['persone_tipores_id'] != 1) {
          $persone_id = $row['persone_id'];
          $AgenteF6 = 0;
          $CapoArea = 0;  
          $corrispondente = $db->selectDistinct( 'agenti_f6', 'ag_codici_sis,ag_persone_id,ag_capo_area');
          while ( $rowC = $corrispondente->fetch() ) {
            if ($persone_id == $rowC['ag_persone_id'])  {
              $AgenteF6 = $rowC['ag_codici_sis'];
              $CapoArea = $rowC['ag_capo_area'];
            }  
          }
          if ($AgenteF6 != 0) {  
            $out['selectAgenti'][] = 
                array( "value" => $persone_id, 
                       "label" => $row['persone_cognome']. ' '. $row['persone_nome']. ' -'. $AgenteF6 .'-'
                     );
              }
          }
      }
      // select prodotti dal DB
      $prodottiLista = $db->selectDistinct( 'arrProdotti', 'prodotto, name',NULL,'prodotto ASC');
      $out['selectProdotti'] = array();
      while ( $row = $prodottiLista->fetch() ) {
        if ($row['prodotto'] == '') {
          $codice_prodotto = "ATTENZIONE CODICE F6 MANCANTE";
        } else {
          $codice_prodotto = $row['prodotto'];
        }
        $nome_prodotto = addslashes($row['name']);
          $out['selectProdotti'][] = 
          array( "value" => $row['prodotto'],
                 "label" => $codice_prodotto . ' '. $nome_prodotto
               );
      }
    
    
    if ( isset($_POST['action']) && $_POST['action'] === 'create' ) {
        $ordinato = getOrdinato($_POST['data'][0]['fromNav_Disponibilita']['idArticolo']);
      if ($ordinato) {
        //var_dump($ordinato);
        $idArticoloFisso = $ordinato['idArticoloFisso'];
         $sqlUpdate = "UPDATE righe_disponibilita
          SET idArticolo = '".$idArticoloFisso."' 
          WHERE idArticoloFisso = '".$idArticoloFisso."'";
        if ( $resUpdate = $conn->query($sqlUpdate) ) {
            //echo $resUpdate;
          } else {
            echo $conn->error;
            }
      }
    }
    
    
    echo json_encode( $out );
    
  • commediacommedia Posts: 21Questions: 5Answers: 0

    Hi Allan!
    I made a mistake.
    It was

     ajax: {
                url: "Datatables/php/disponibilita.php",
                type: 'POST'
            },
    

    instead of

     ajax: {
                url: "Datatables/Editor-PHP-1.6.1/php/disponibilita.php",
                type: 'POST'
            },
    

    I used an older version instead of 1.6.1. Now it's ok, but my error is this if i's updated:

    b>Notice</b>: Array to string conversion in <b>/Applications/MAMP/htdocs/sisonweb.com/amministrazione/Datatables/Editor-PHP-1.6.1/php/Database/Driver/Mysql/Query.php</b> on line <b>94</b><br />

    Field::inst( 'fromNav_Disponibilita.non_ordinabile' )
    this is only a boolean field true or false.
    Why is it an array?

    Thanks
    Pat

  • commediacommedia Posts: 21Questions: 5Answers: 0

    Hi Allan!
    I forget

    separator: '',
    

    here:

    {
    name: "fromNav_Disponibilita.non_ordinabile",
    type: "checkbox",
    options: [
            { label: "NON ordinabile", value: 1 }
        ],
    unselectedValue: 0
    },
    

    Is it possible to confim my inline update on this field with enter?

    Bye
    Pat

This discussion has been closed.