Visualizzazione risultati 1 fino 24 di 24

Discussione: modifica di un valore del db tramite campo select automatica

  1. #1
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Exclamation modifica di un valore del db tramite campo select automatica

    Buonasera
    Vi chiedo un aiuto con un codice che onestamente non so nemmeno se sia fattibile

    In poche parole la mia situazione è questa:

    Ho una pagina "dettagli_utente.php" che contiene il seguente codice:
    Codice PHP:

    $risultato = mysql_query ('SHOW COLUMNS FROM permessi');
    while ( $asse_y = mysql_fetch_array($risultato) ){
    $i="1";
    $asse_x = $asse_y [0];



    switch($asse_y [0]){
    case "1":
    ...
    break;
    case "2":
    ...
    break;
    default:

    $query_permessi_utente = "SELECT * FROM permessi WHERE client_name='".$_GET['client_name']."' && client_surname='".$_GET['client_surname']."' && client_DNS='".$_GET['client_DNS']."' && client_domain='".$_GET['client_domain']."' && client_port='".$_GET['client_port']."' ";
    $risultato_permessi_utente = mysql_query($query_permessi_utente);
    $numero_risultati_permessi_utente = mysql_num_rows($risultato_permessi_utente);

    $asse_y [0]=mysql_result($risultato_permessi_utente,0,$asse_y [0]);


    ?>



    <tr class="odd gradeX">
    <td><?php echo $asse_x ?></td>

    <td>

    <select name="selectdue" id="selectdue">
    <?php
    switch($asse_y [0]){
    case
    "1":
    ?>
    <option value="1" selected><?php echo "Si" ?></option>
    <option value="" ><?php echo "No" ?></option>
    <?php
    break;

    default:
    ?>
    <option value="1" ><?php echo "Si" ?></option>
    <option value="" selected><?php echo "No" ?></option>
    <?php
    break;

    }
    ?>
    </select>
    break;
    }



    break;
    }
    il tutto è organizzato in una tabella formata da 2 colonne
    nella prima riporto $asse_x e nella seconda il campo select.

    a me servirebbe un codice che mi permettesse che al variare della selezione nel seclect (che da Si venga settato su No e viceversa) il value del nuovo valore della selezione venga aggiornato nel mio db in maniera automatica senza chiedere conferme.

    è fattibile ciò?
    se si come?

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

    Predefinito

    Le funzioni mysql_* sono deprecate, è meglio sostituirle con mysqli o PDO.
    Con quel codice sei vulnerabile a SQL injection, problema che si risolve facilmente usando i prepared statement (con mysqli o PDO).

    Per fare quello che chiedi puoi utilizzare AJAX, ovvero creare una pagina PHP che riceva (ad esempio tramite POST) la richiesta per il cambio del valore, quindi nella pagina contenente la select usare JavaScript (meglio ancora tramite jQuery) per inviare una richiesta alla pagina PHP.

    Ad esempio:
    Codice HTML:
    <select name="selectdue" id="selectdue">
      <option value="1"></option>
      <option value="" >No</option>
    </select>
    ...
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
    $('#selectdue').change(function () {
      $.post('pagina_php.php', { 'selectdue': $(this).val() });
    });
    </script>
    pagina_php.php
    Codice PHP:
    $mysqli = new mysqli(...); // connessione alla base di dati
    $query = "UPDATE my_table SET ..."; // query per la modifica
    $result = $mysqli->query($query);

    if (!
    $result) {
    echo
    "Errore nella query: " . $mysqli->error;
    }

  3. #3
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    Purtroppo per vari motivi sono costretto ad usare mysql normale

    Se ti posto l’intero codice mi riesci a fare un esempio?
    JavaScript e jQuery non ho nemmeno idea di come aprirli 😭

    Il mio problema è anche su come strutturare la quary di update, nel senso che io non posso scrivere in maniera esplicita il nome della colonna ma mi deve essere passato dalla pagina A, quindi volendo potrei creare un forum, con un input type=“text” dove gli scrivo il nome della colonna e la passo tramite get alla pagina B che mi fa una query del tipo:

    Update permessi SET $_GET[‘permesso’]=‘“.$_GET[‘selectdue’]
    Ultima modifica di fabiovergotti : 12-04-2018 alle ore 12.40.41

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

    Predefinito

    Purtroppo per vari motivi sono costretto ad usare mysql normale
    Male .
    Fai presente a chiunque ti abbia imposto questo vincolo che, se poi ci sono problemi di sicurezza, la responsabilità sarà sua

    Se ti posto l’intero codice mi riesci a fare un esempio?
    Certo!

    Il mio problema è anche su come strutturare la quary di update [...]
    Ho riguardato bene il codice che hai mostrato.
    Sei sicuro che la tabella permessi debba essere strutturata in quel modo?
    Da quanto hai scritto sembra ci siano 5 + n colonne, dove le prime 5 rappresentano
    • client_name
    • client_surname
    • client_DNS
    • client_domain
    • client_port

    e le restanti n i permessi.
    A occhio questa tabella va normalizzata separando le informazioni sul client da quelle sui permessi, creando una tabella client:
    Codice:
    +----+------+---------+-----+--------+------+
    | id | name | surname | DNS | domain | port |
    +----+------+---------+-----+--------+------+
    E la tabella permessi diventa quindi:
    Codice:
    +-----------+------------+------------+-----+------------+
    | client_id | permesso_1 | permesso_2 | ... | permesso_n |
    +-----------+------------+------------+-----+------------+
    A questo punto è sufficiente che alla pagina PHP arrivino le informazioni:
    • client_id
    • lista di permessi da modificare

    Il client_id è facile, lo mandi come parametro (o lo leggi dalla sessione, se disponibile). La lista è altrettanto semplice, puoi usare un vettore associativo (dando per scontato che non ci siano permessi con lo stesso nome):
    Codice PHP:
    $modifiche_permessi = [
    'permesso_1' => 1,
    'permesso_5' => 0,
    'permesso_3' => 12
    ];
    In questo modo puoi costruire l'interrogazione semplicemente con:
    Codice PHP:
    $query = "UPDATE permessi SET";
    foreach (
    $modifiche_permessi as $nome => $valore) {
    $query .= " $nome = $valore";
    }
    $query .= " WHERE client_id = $client_id";

    Personalmente non userei una tabella con i permessi "cablati" sulle colonne, non è flessibile (qualora dovessi aggiungere o rimuove tipi di permessi dovresti alterare la tabella...), userei piuttosto una tabella fatta in questo modo:
    Codice:
    +-----------+-----------------+------------------+
    | client_id | permission_name | permission_value |
    +-----------+-----------------+------------------+
    |         5 |      permesso_1 |                1 |
    |         5 |      permesso_3 |                0 |
    |         5 |      permesso_4 |                1 |
    |        42 |      permesso_3 |                1 |
    |       ... |             ... |              ... |
    +-----------+-----------------+------------------+
    o una sua variante a seconda della natura dei permessi, ad esempio (se tutti i permessi sono binari), memorizzerei solo i nomi di permessi per cui il valore è uguale ad 1, assumendo che se un permesso non è presente abbia valore 0.

  5. #5
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    Ci sono già due tabelle

    Una client dove ho nome cognome e mole altre info
    Poi la tabella permessi che gestisce i permessi individuali di ogni singolo utente

    Deve essere strutturata così perché io avrò il richiamo di nome, cognome etc. E dopo una serie di 1 o null in base se l’utente ha accesso a quel permessi o meno

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

    Predefinito

    Deve essere strutturata così perché io avrò il richiamo di nome, cognome etc.
    Attento a basarti su nome e cognome. Parlo per esperienza: conosco personalmente 8 miei omonimi

    Comunque è chiaro. La base di dati strutturata in questo modo non è "ottimale" ma è comunque sufficiente per permetterti di ottenere ciò di cui hai bisogno.

    Il codice precedente resta valido, resta da chiarire come inviare i dati. Direi molto semplicemente con una select per ciascuno dei permessi (più le informazioni necessarie ad identificare il client):
    Codice HTML:
    <form id="my_form" action="my_page.php" method="POST">
      <select name="permesso_1">
        <option value="1"></option>
        <option value="">No</option>
      </select>
      
      <select name="permesso_2">
        <option value="1"></option>
        <option value="">No</option>
      </select>
      
      ...
      
      <select name="permesso_n">
        <option value="1"></option>
        <option value="">No</option>
      </select>
      
      <input type="hidden" name="client_name" value="...">
      <input type="hidden" name="client_surname" value="...">
      ...
    </form>
    Così alla pagina PHP arrivano i dati (quasi) nel formato di cui parlavamo:
    Codice PHP:
    $_POST = [
    'permesso_1' => "1",
    'permesso_2' => "",
    ...
    'permesso_n' => "12",
    'client_name' => "...",
    'client_surname' => "...",
    ...
    ];
    devi solo prestare attenzione a convertire le stringhe vuote in NULL ed ignorare le informazioni sul client quando costruisci la stringa per la query dei permessi.

    Altra osservazione non fondamentale: se i permessi sono binari, cioè ammettono come valori unicamente o no, potresti valutare l'uso di una checkbox anziché una select. Inoltre, non dovresti usare NULL per rappresentare il no, è più corretto usare 0 e servirsi di NULL solo per indicare l'assenza di informazione, che andrà gestita di conseguenza.
    Ultima modifica di mzanella : 13-04-2018 alle ore 08.34.55

  7. #7
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    Per farti capire ti allego di seguito lo screen della tabella del db: http://prntscr.com/j4oh3k

    Passando alla questione quary
    ok il passaggio dei dati ma per far si che la mia query di update venga eseguita automaticamente al cambio del valore del mio select?

    per farti capire meglio la mia situazione ti ho creato un account nel mio pannello così puoi accedere:
    Nome: N
    Cognome: zanella
    DNS: zanella
    password: n1x5m0v2o4
    porta: 9990
    Link: http://pannello.sharkhosting.it/

    Pagina problematica: http://pannello.sharkhosting.it/pann...er-listing.php (una volta effettuato l'accesso lo trovi nel menù "More Pages"


    Come vedi dalla pagina other-user-listing.php ho un una tabella con i dati dei singoli utenti, alla pressione nel tasto "permessi utente" la pagine dettagli_utente.php mi riporta una tabella con tutti i select per ogni permesso con SI (che ha value 1) e No(che ha value "")

    il mio scopo è che al cambio da si o no ci sia una query che mi aggiorni il db con il nuovo valore senza però mostrarmi altre pagine
    Tieni conto che i dati dell'utente selezionato non sono salvati in nessuna sessione ma se necessario non sarebbe un grosso problema salvarli

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

    Predefinito

    Non è necessaria una sessione, è sufficiente inviare (tramite un campo hidden) almeno il client_id.

    Il primo passo è sicuramente dare nomi ed id appropriati alle select, dando a ciascuna il nome del permesso che modifica (anziché "selectdue" a tutte). Gli id non sono necessari in questo contesto ma, se decidi di assegnarli loro, devono essere necessariamente diversi. Un accorgimento utile è assegnare a ciascuna select la stessa classe, ad esempio change_permission.
    Puoi scegliere se strutturare tutto come un unico form che invia tutte le informazioni sui permessi, modificati e non, insieme, oppure se considerare ciascuna select un form a parte, quindi inviando solo le informazioni sulle modifiche.

    In ogni caso, il secondo passo è usare AJAX in maniera analoga all'esempio del primo post:
    Codice HTML:
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
    $('select.change_permission').change(function () {
      // Leggi le informazioni di cui hai bisogno dal form e/o dalla singola select
      var dati_letti_dal_form_o_select = { ... };
      $.post('my_page.php', dati_letti_dal_form_o_select);
    });
    </script>
    Per la documentazione puoi guardare jQuery.post().

  9. #9
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    dati_letti_dal_form_o_select = { ... };
    In questa sezione però come posso automatizzare il passaggio del nome del campo select?
    my_page.php indica la pagina uno o quella dove sarà presente la query?

    tutto ciò mi serve perchè la tabella della prima pagina (quella dove ho l'elenco dei permessi è autocompilante
    nel senso che se io aggiungo un permesso alla tabella in db in automatico mi si aggiunge li
    il mio scopo è quello di non dover più mettere mano al codice ma rendere tutto automatico

    Scusa se ti sto assillando ma è il mio primissimo approccio ad AJAX
    Ultima modifica di fabiovergotti : 13-04-2018 alle ore 12.50.07

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

    Predefinito

    In questa sezione però come posso automatizzare il passaggio del nome del campo select?
    Tramite jQuery, quando imposti la funzione di callback per ogni select, hai accesso a tutti i dati contenuti nella select, in particolare al name ed al valore impostato:
    Codice HTML:
    $('select.change_permission').change(function () {
      var select = $(this);  // Rappresenta l'oggetto select
      var name = select.attr('name');  // Il name associato alla select
      var value = select.val();  // Il valore selezionato, "1" oppure ""
    
      // Parametri da inviare nella richiesta POST
      var params = {};
      params[name] = value;
      params['client_id'] = ...; // Devi leggerlo da qualche parte ;)
    
      // Richiesta POST
      $.post('my_page.php', params);
    });
    Per quanto riguarda il client_id (e in generale altri parametri che non dipendono dal permesso) devi tenerli da qualche parte per poterli leggere, ad esempio un input hidden con id = client_id:
    Codice HTML:
    <input type="hidden" name="client_id" id="client_id" value="...">
    ...
    <script>
    ...
    params['client_id'] = $('#client_id').val();
    </script>
    my_page.php indica la pagina uno o quella dove sarà presente la query?
    La pagina che contiene la query.

  11. #11
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    ok ci sto provando
    ed ho riscontrato due perplessità
    1)
    dalla pagina della query come richiamo le variabili?
    cioè il $_POST['xxxxx']
    per avere il nome del select ed il params['client_id']

    2)
    nella 1° pagina
    ho strutturato il codice così:
    Codice PHP:
    <form id="my_form" action="my_page.php" method="POST">

    <tr class="odd gradeX">


    <td><?php echo $asse_x ?></td>

    <td>




    <select name="<?php echo $asse_x ?>" class="change_permission">
    <?php
    switch($asse_y [0]){
    case
    "1":
    ?>
    <option value="1" selected><?php echo "Si" ?></option>
    <option value="" ><?php echo "No" ?></option>
    <?php
    break;

    default:
    ?>
    <option value="1" ><?php echo "Si" ?></option>
    <option value="" selected><?php echo "No" ?></option>
    <?php
    break;

    }
    ?>
    </select>
    <br>



    <!--<input type="hidden" name="client_id" id="client_id" value="<?php echo $asse_x ?>"> -->
    <input type="text" name="asse_x" id="asse_x" value="<?php echo $asse_x ?>"> <br>
    <input type="text" name="client_name" id="client_name" value="<?php echo $_GET['client_name'] ?>"> <br>
    <input type="text" name="client_surname" id="client_surname" value="<?php echo $_GET['client_surname'] ?>"> <br>
    <input type="text" name="client_port" id="client_port" value="<?php echo $_GET['client_port'] ?>" >

    </td>

    </tr>



    </form>

    <?php






    break;
    }



    }


    ?>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
    $('select.change_permission').change(function () {
    var select = $(this); // Rappresenta l'oggetto select
    var name = select.attr('name'); // Il name associato alla select
    var value = select.val(); // Il valore selezionato, "1" oppure ""

    // Parametri da inviare nella richiesta POST
    var params = {};
    params[name] = value;
    params['client_name'] = $('#client_name').val();
    params['client_surname'] = $('#client_surname').val();
    params['client_port'] = $('#client_port').val();

    // Richiesta POST
    $.post('my_page.php', params);



    });
    </script>
    la seconda pagina (chiamata "my_page.php") ho messo un semplice winwos <body onUnLoad="window.alert('Esempio di messaggio di avviso in uscita dalla pagina.')"> per vedere se la pagina viene caricata ma questo non avviene, mentre se io il window.allert lo metto nello scrit iniziale questo si esegue al cambio nel select....è possibile che la pagina non venga . caricata?
    Ultima modifica di fabiovergotti : 14-04-2018 alle ore 10.34.01

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

    Predefinito

    Il parametro client_id si chiama, appunto, client_id, quindi puoi accedervi con
    Codice PHP:
    $_POST['client_id'];
    Per il nome del permesso, che non è fissato a priori, puoi usare la stessa strategia vista in un messaggio precedente, con l'accorgimento di "scartare" parametri come client_id:
    Codice PHP:
    foreach ($_POST as $nome => $valore) {
    if (
    $nome == 'client_id') {
    continue;
    }

    echo
    "Nome permesso: $nome, valore: $valore";
    }

  13. #13
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    Citazione Originalmente inviato da fabiovergotti Visualizza messaggio
    ok ci sto provando
    ed ho riscontrato due perplessità
    1)
    dalla pagina della query come richiamo le variabili?
    cioè il $_POST['xxxxx']
    per avere il nome del select ed il params['client_id']

    2)
    nella 1° pagina
    ho strutturato il codice così:
    Codice PHP:
    <form id="my_form" action="my_page.php" method="POST">

    <tr class="odd gradeX">


    <td><?php echo $asse_x ?></td>

    <td>




    <select name="<?php echo $asse_x ?>" class="change_permission">
    <?php
    switch($asse_y [0]){
    case
    "1":
    ?>
    <option value="1" selected><?php echo "Si" ?></option>
    <option value="" ><?php echo "No" ?></option>
    <?php
    break;

    default:
    ?>
    <option value="1" ><?php echo "Si" ?></option>
    <option value="" selected><?php echo "No" ?></option>
    <?php
    break;

    }
    ?>
    </select>
    <br>



    <!--<input type="hidden" name="client_id" id="client_id" value="<?php echo $asse_x ?>"> -->
    <input type="text" name="asse_x" id="asse_x" value="<?php echo $asse_x ?>"> <br>
    <input type="text" name="client_name" id="client_name" value="<?php echo $_GET['client_name'] ?>"> <br>
    <input type="text" name="client_surname" id="client_surname" value="<?php echo $_GET['client_surname'] ?>"> <br>
    <input type="text" name="client_port" id="client_port" value="<?php echo $_GET['client_port'] ?>" >

    </td>

    </tr>



    </form>

    <?php






    break;
    }



    }


    ?>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
    $('select.change_permission').change(function () {
    var select = $(this); // Rappresenta l'oggetto select
    var name = select.attr('name'); // Il name associato alla select
    var value = select.val(); // Il valore selezionato, "1" oppure ""

    // Parametri da inviare nella richiesta POST
    var params = {};
    params[name] = value;
    params['client_name'] = $('#client_name').val();
    params['client_surname'] = $('#client_surname').val();
    params['client_port'] = $('#client_port').val();

    // Richiesta POST
    $.post('my_page.php', params);



    });
    </script>
    la seconda pagina (chiamata "my_page.php") ho messo un semplice winwos <body onUnLoad="window.alert('Esempio di messaggio di avviso in uscita dalla pagina.')"> per vedere se la pagina viene caricata ma questo non avviene, mentre se io il window.allert lo metto nello scrit iniziale questo si esegue al cambio nel select....è possibile che la pagina non venga . caricata?
    Scusa veramente

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

    Predefinito

    Non dimenticarti che stai usando AJAX!

    Una chiamata AJAX (o AJAJ, o possibili varianti) invia dei dati ad una pagina e ne riceve l'eventuale output come risposta. Tutto ciò che potrebbe avvenire nella pagina chiamata (alert, animazioni JavaScript o CSS...) viene "ignorato". Puoi vedere il sistema come due processi paralleli che comunicano tramite scambio di messaggi unicamente attraverso i propri input ed output. Generalmente, infatti, le pagine PHP chiamate tramite AJAX non contengono alcuna istruzione HTML, JavaScript o CSS.

    Se vuoi iniziare creando una paginetta di test per vedere quali dati stanno arrivando, puoi scrivere my_page.php in questo modo:
    Codice PHP:
    <?php
    header
    ('Content-Type: application/json');
    echo
    json_encode($_POST, JSON_PRETTY_PRINT);
    ?>
    e, nella chiamata, aggiungere una funzione di callback che mostri la risposta della pagina PHP (nella console del browser):
    Codice HTML:
    $.post('my_page.php', params, function (data) {
      console.log(data);
    });

  15. #15
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    anche così continua a non caricare la pagina my_page.php :(

    Codice PHP:

    <tr class="odd gradeX">


    <td><?php echo $asse_x ?></td>

    <td>
    <form id="my_form" action="my_page.php" method="POST">



    <select name="<?php echo $asse_x ?>" class="change_permission">
    <?php
    switch($asse_y [0]){
    case
    "1":
    ?>
    <option value="1" selected><?php echo "Si" ?></option>
    <option value="" ><?php echo "No" ?></option>
    <?php
    break;

    default:
    ?>
    <option value="1" ><?php echo "Si" ?></option>
    <option value="" selected><?php echo "No" ?></option>
    <?php
    break;

    }
    ?>
    </select>
    <br>



    <!--<input type="hidden" name="client_id" id="client_id" value="<?php echo $asse_x ?>"> -->
    <input type="text" name="permesso" id="permesso" value="<?php echo $asse_x ?>"> <br>
    <input type="text" name="client_name" id="client_name" value="<?php echo $_GET['client_name'] ?>"> <br>
    <input type="text" name="client_surname" id="client_surname" value="<?php echo $_GET['client_surname'] ?>"> <br>
    <input type="text" name="client_port" id="client_port" value="<?php echo $_GET['client_port'] ?>" >
    </form>
    </td>

    </tr>





    <?php






    break;
    }



    }


    ?>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
    $('select.change_permission').change(function () {
    var select = $(this); // Rappresenta l'oggetto select
    var name = select.attr('name'); // Il name associato alla select
    var value = select.val(); // Il valore selezionato, "1" oppure ""

    // Parametri da inviare nella richiesta POST
    var params = {};
    params[name] = value;
    params['client_name'] = $('#client_name').val();
    params['client_surname'] = $('#client_surname').val();
    params['client_port'] = $('#client_port').val();
    params['permesso'] = $('#permesso').val();

    // Richiesta POST


    $.post('my_page.php', params, function (data) {
    console.log(data);
    });

    });


    </script>


    Codice PHP:
    <?php
    header
    ('Content-Type: application/json');
    echo
    json_encode($_POST, JSON_PRETTY_PRINT);
    ?>

    Prova tu stesso con le credenziali che ti ho passato nel messaggio

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

    Predefinito

    Ho provato ad accedere e a modificare il valore di qualche select, sembra funzionare tutto.

    Ogni volta che modifico un permesso leggo, nella console del browser, il JSON restituito dalla pagina PHP, ad esempio:
    Codice:
    {
      Accendi_server: "1",
      client_name: "n",
      client_surname: "zanella",
      client_port: "9990",
      permesso: "Accendi_server"
    }
    Il che indica che la pagina PHP sta ricevendo i dati in questo formato:
    Codice PHP:
    $_POST = [
    'Accendi_server' => "1",
    'client_name' => "n",
    'client_surname' => "zanella",
    'client_port' => "9990",
    'permesso' => "Accendi_server"
    }
    Ho notato che hai aggiunto un campo permesso: non è un errore, ma così facendo stai aggiungendo informazione ridondante.

  17. #17
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    Ok
    Ma perchè allora la pagina my_page.php non mi fa l’echo che mi hai suggerito
    e come posso a questo punto strutturare la query?

    ho provato a farla così:
    Codice PHP:
    <?php
    $_POST
    = [
    'Accendi_server' => "1",
    'client_name' => "n",
    'client_surname' => "zanella",
    'client_port' => "9990",
    'permesso' => "Accendi_server"
    ];


    $query = "UPDATE permessi SET";
    foreach (
    $_POST as $nome => $valore) {
    $query .= " $nome = $valore";
    }
    $query .= " WHERE client_name = '".$_POST['client_name']."' ";


    ?>
    ma non funziona :'(

    ho provato anche così ma nulla

    Codice PHP:
    <?php


    $query
    = "UPDATE permessi SET";
    foreach (
    $_POST as $nome => $valore) {
    $query .= " $nome = $valore";
    }
    $query .= " WHERE client_name = '".$_POST['client_name']."' ";


    ?>
    Ultima modifica di fabiovergotti : 14-04-2018 alle ore 13.31.59

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

    Predefinito

    Ma perchè allora la pagina my_page.php non mi fa l’echo che mi hai suggerito
    Come no? È esattamente quella che viene restituita nella risposta e che vedi nella console del browser :)

    e come posso a questo punto strutturare la query?
    A questo punto gli ingredienti ci sono tutti, e stanno dentro $_POST:
    Codice PHP:
    <?php
    $client_name
    = $_POST['client_name'];
    $client_surname = $_POST['client_surname'];
    $client_port = $_POST['client_port'];
    $permission_name = $_POST['permesso'];
    $permission_value = $_POST[$permission_name];

    $query = "UPDATE permessi SET $permission_name = $permission_value"
    . " WHERE client_name = $client_name AND client_surname = $client_surname AND client_port = $client_port";
    // ...

  19. #19
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    sono perplesso
    la query continua a non funzionare

    l'intero contenuto della pagina my_page.php è il seguente:
    Codice PHP:
    <?php

    session_start
    ();
    include(
    "aggancio_db.php");




    $client_name = $_POST['client_name'];
    $client_surname = $_POST['client_surname'];
    $client_port = $_POST['client_port'];
    $permission_name = $_POST['permesso'];
    $permission_value = $_POST[$permission_name];

    $query = "UPDATE permessi SET '".$permission_name."'='".$permission_value."' WHERE client_name='".$client_name."' AND client_surname='".$client_surname."' AND client_port='".$client_port."'";

    ?>

    e della pagina aggancio_db.php il seguente:
    Codice PHP:
    $link = mysql_connect('***', '***', '***')
    or die(
    'Could not connect: ' . mysql_error());
    mysql_select_db('pannello_nuovo') or die('impossibile selezionare il database database');

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

    Predefinito

    Se il codice è solo quello che hai mostrato, la query non funziona semplicemente perché non la stai eseguendo.
    Se, invece, c'è anche il codice per l'esecuzione ma non l'hai mostrato, allora dovresti anche controllare il valore di ritorno di mysql_query e, in caso di errore, restituire il messaggio d'errore alla pagina chiamante:
    Codice PHP:
    $result = mysql_query($query);
    if (!
    $result) {
    echo
    "Errore nella query: " . mysql_error();
    }

  21. #21
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    anche così:
    Codice PHP:
    <?php

    session_start
    ();
    $link = mysql_connect('***', '***', '***')
    or die(
    'Could not connect: ' . mysql_error());
    mysql_select_db('pannello_nuovo') or die('impossibile selezionare il database database');



    $client_name = $_POST['client_name'];
    $client_surname = $_POST['client_surname'];
    $client_port = $_POST['client_port'];
    $permission_name = $_POST['permesso'];
    $permission_value = $_POST[$permission_name];

    $query = "UPDATE permessi SET '".$permission_name."'='".$permission_value."' WHERE client_name='".$client_name."' AND client_surname='".$client_surname."' AND client_port='".$client_port."'";
    $result = mysql_query($query);
    if (!
    $result) {
    echo
    "Errore nella query: " . mysql_error();
    }
    ?>
    non funziona

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

    Predefinito

    Ok. E qual'è il messaggio d'errore che viene restituito?

  23. #23
    fabiovergotti non è connesso Utente
    Data registrazione
    18-02-2013
    Messaggi
    249

    Predefinito

    CI SONO RIUSCITO A SISTEMARLOOO

    Grazie davvero infinitamente
    Ultima modifica di fabiovergotti : 15-04-2018 alle ore 10.42.00

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

    Predefinito

    Ben fatto!

Regole di scrittura

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