Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Passaggio di più di una variabile PHP ad una fuzione JS

    Ciao a tutti, scusate ma sono ore che ci sbatto la testa ma proprio non riesco a capire dove sbaglio. Nella head della mia pagina PHP ho questa funzione JS che riceve due argomenti:

    codice:
    function cancella(id,nome) {
     var domanda = confirm("ATTENZIONE!!\n\nVUOI VERAMENTE ELIMINARE QUESTO UTENTE?");
     var link = "elimina_utente.php?ID=";
      if (domanda === true) {
        location.href = link + id + "&nome=" + nome;  
      }
    }

    Nel body invece ho questo codice che cerca di passare due variabili alla funzione sopra

    codice:
    <table>
    <?php
    $query=mysqli_query($conn, "SELECT * FROM utente ORDER BY nome_utente");
    while ($mag=mysqli_fetch_assoc($query))
       {
     ?>
        <tr>
        <td width="1%"><input type="button" class="BOTTONE" name="elimina_utente" value="ELIMINA" onclick="cancella(<?php echo $mag['ID_utente'],$mag['nome_utente'] ?>)"></td>
        <td><b><?php echo $mag['nome_utente'] ?></b></td></tr>
       <?php   
       }

    In pratica con un ciclo PHP stampo un elenco di tutti gli utenti con accanto ad ognuno il bottone ELIMINA. Cliccandoci sopra parte l'alert che chiede la conferma dell'eliminazione.

    Il problema è tutto nella seconda variabile che mando alla funzione JS. Infatti quel $mag['nome_utente'] è come se venisse rifiutato. Per farmi capire, se lo sostituissi duplicando lo stesso valore che lo procede, ovvero $mag['ID_utente'] oppure mettendo un valore numerico qualsiasi, la funzione non avrebbe problemi. Chiaramente ho verificato con una echo che la variabile sia valida. Ho anche pensato che magari nel nome potevano esserci apici che creavano conflitto (ma questo sarebbe dovuto succedere solo con alcuni e non con tutti) così ho variato la pagina come segue trasformando la variabile con addslashes:

    codice:
    <table>
    <?php
    $query=mysqli_query($conn, "SELECT * FROM utente ORDER BY nome_utente");
    while ($mag=mysqli_fetch_assoc($query))
       {
        $magis=addslashes($mag["nome_utente"]);
    ?>
        <tr>
        <td width="1%"><input type="button" class="BOTTONE" name="elimina_utente" value="ELIMINA" onclick="cancella(<?php echo $mag['ID_utente'],$magis ?>)"></td>
        <td><b><?php echo $mag['nome_utente'] ?></b></td></tr>
       <?php   
       }
    ma nulla... la funzione non da segni di vita.

    P.S.

    Dove sbaglio???

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se devi passare una stringa ad una funzione js, devi metterla tra apici, inoltre come hai scritto tu, non metti la virgola per separate i due parametri

    Codice PHP:
    cancella(<?php echo $mag['ID_utente'?>, '<?php echo $magis ?>')
    Inoltre se pensi che $magis posso contenere caratteri speciali dovresti codificarlo prima:

    codice:
    location.href = link + id + "&nome=" + encodeURI(nome);

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    sicuro che sia tutto a posto nei parametri della funzione javascript?
    io la vedrei meglio così

    codice:
    onclick="cancella(<?php echo $mag['ID_utente'] . ",  '" . $mag['nome_utente'] . "'"; ?>);"

    EDIT: secondo...

  4. #4
    Ragazzi sono perfette entrambe... tra le decine di prove che ho fatto (ho messo virgolette e apici in tutti i modi) queste mi mancavano

    Siete mitici. Grazie per la celerità.

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.