Visualizzazione risultati 1 fino 12 di 12

Discussione: [PHP] Array di Checkbox con POST

  1. #1
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito [PHP] Array di Checkbox con POST

    Salve!
    Non riesco a risolvere un problema.
    Ho una lista di input checkbox con l'attributo name todel[] in modo da creare un array contenente ogni suo valore.

    Codice HTML:
    <form action="action.php?action=cat&amp;do=delete" method="post">
    <input type="checkbox" name="todel[]" value="News">News<br />
    <input type="checkbox" name="todel[]" value="Altro">Altro<br />
    <input type="submit" value="Elimina Selezionati" />
    E poi con php:

    Codice PHP:
    //lo switch l'ho inserito prima non l'ho postato per non postare codice a vanvera
    case "cat":
    switch(
    $_GET["do"]) {
    case
    "add":
    $cat = htmlentities(str_replace("&", "&amp;", $_POST["cat"]), ENT_COMPAT);
    $msg = $admin->add_cat($cat) ? "Categoria ". html_entity_decode($cat, ENT_COMPAT) . " aggiunta con successo." : "Errore nella creazione della categoria.";
    break;
    case
    "delete":
    //$msg = $admin->delete_cat($cat) ? "Categoria ". html_entity_decode($cat, ENT_COMPAT) . " rimossa con successo." : "Errore nell'eliminare la categoria.";
    print_r($_POST["todel"]); exit();
    break;
    }
    echo
    $msg. " Rendirizzamento fra 3 secondi!";
    header("Refresh: 3; URL = categories.php");
    break;

    default:
    echo
    "Specifica una azione!";
    }
    ?>
    Ma ricevo questo errore:

    Codice:
    Notice: Array to string conversion in /membri/mycarlo/admin/action.php on line 17
    Array
    Non capisco il motivo di tale errore :shocked:.
    Magari qualcuno di voi riesce ad individuarlo e gentilmente potrebbe correggerlo?

    Grazie mille!

  2. #2
    Guest

    Predefinito

    non ne capisco molto, ma non dovresti dirci la riga 17 qual' è?

  3. #3
    Guest

    Predefinito

    no so dirti di quello che ho capito prova cosi^^

    default:
    echo "Specifica una azione!";
    break;
    e prova a levare
    questo
    echo $msg. " Rendirizzamento fra 3 secondi!";
    header("Refresh: 3; URL = categories.php");
    break;<----

    ma fai switch nello switch..
    Ultima modifica di zappi : 12-10-2009 alle ore 18.19.03

  4. #4
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    La riga n° 17:
    Codice PHP:
    print_r($_POST["todel"]); exit();
    @zappi: perchè dovrei levare quelle righe di codice se mi servono???
    Comunque non credo sia un errore fare switch negli switch.

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Quello che ricevi non e' un messaggio di errore, ma un "Notice", che ancor meno di un warning. Sono prove che stai facendo fuori da altervista?

    In ogni caso, potrebbe essere la funzione print_r stessa che lo genera, mentre ti mostra l'array. Comunque verifica aggiungendo a monte un print_r($_POST);, per vedere che ti arrivi tutto, e a posto.

  6. #6
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Io lavoro sempre in remoto (su AV)
    Se effettuo print_r($_POST)

    Codice PHP:
    array([todel] => Array)
    E pure print_r dovrebbe stampare indice e valore di ogni array...
    In pratica trasforma l'array in una stringa.
    Infatti se stampo $_POST["todel"][0] il risultato è "A" quindi $_POST["todel"][1] sarà "r" e così via...

    Non sò più cosa fare

    P.S. Lo dice anche var_dump
    Codice PHP:
    string(5) "Array"
    Ultima modifica di mycarlo : 12-10-2009 alle ore 19.37.33

  7. #7
    Guest

    Predefinito

    Non capisco perchè devi avere per forza tutti i valori in un'array, potresti dargli nomi diversi e raggrupparli in un'array via php.

  8. #8
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Perchè è il metodo più semplice e più performante dato che quello che sto facendo è tutto dinamico.

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Boh, l'errore non e' quindi in quella riga. Ci sono altri punti prima di quello dove lavori su $_POST, leggi, scrivi o controlli qualcosa?

  10. #10
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Leggo sempre via $_POST dei dati per creare un articolo, modificarlo e cancellarlo e qualche altra cosa.

    Vabbè posto tutto il codice:

    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    require(
    "./../config.inc.php");
    require(
    ABS_PATH . "class/admin.class.php");
    require(
    ABS_PATH . "class/xml.class.php");
    $admin = new Admin;
    $admin->check_login();


    $id = isset($_GET["id"]) && is_numeric($_GET["id"]) ? trim($_GET["id"]) : null;

    if(!empty(
    $id)) {
    $xml = new Xml($id);
    }

    foreach(
    $_POST as &$val) {
    $val = trim(stripslashes($val));
    }

    switch(
    trim($_GET["action"])) {
    case
    "post":
    echo
    $xml->post($_POST["titolo"], $_POST["autore"], $_POST["tags"], $_POST["cat"], $_POST["testo"]) ? "Articolo pubblicato con successo!" : "Si &egrave; verificato un errore nel salvataggio del file!";
    break;

    case
    "delete":
    echo
    $xml->delete() ? "Articolo N&deg; {$id} cancellato con successo!" : "Articolo N&deg; {$id} inesistente!";
    break;

    case
    "update":
    echo
    $xml->update($_POST["titolo"], $_POST["autore"], $_POST["tags"], $_POST["cat"], $_POST["testo"]) ? "Articolo N&deg; {$id} modificato con successo!" : "Si &egrave; verificato un errore nel salvataggio del file!";
    break;

    case
    "settings":
    $file = <<<php
    <?php
    define("ADMIN_USER", "
    {$_POST["admin"]}");
    define("ADMIN_PASS", "
    {$_POST["pass"]}");
    define("ABS_PATH", "
    {$_POST["path"]}");
    define("TPL_PATH", "
    {$_POST["template"]}");
    ?>
    php;
    echo
    $admin->save_config($file) ? "Il file di configurazioni &egrave; stato salvato correttamente!" : "Si &egrave; verificato un errore nel salvataggio del file!";
    break;

    case
    "cat":
    switch(
    $_GET["do"]) {
    case
    "add":
    $cat = htmlentities(str_replace("&", "&amp;", $_POST["cat"]), ENT_COMPAT);
    $msg = $admin->add_cat($cat) ? "Categoria ". html_entity_decode($cat, ENT_COMPAT) . " aggiunta con successo." : "Errore nella creazione della categoria.";
    break;
    case
    "delete":
    //$msg = $admin->delete_cat($cat) ? "Categoria ". html_entity_decode($cat, ENT_COMPAT) . " rimossa con successo." : "Errore nell'eliminare la categoria.";
    print_r($_POST["todel"]);
    exit();
    // interrompo lo script solo per adesso, quando il problema sarà risolto lo tolgo :D!
    break;
    }
    echo
    $msg. " Rendirizzamento fra 3 secondi!";
    header("Refresh: 3; URL = categories.php");
    break;

    default:
    echo
    "Specifica una azione!";
    }
    ?>

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Codice PHP:
    foreach($_POST as &$val) {
    $val = trim(stripslashes($val));
    }
    Potessi scommetterci degli AC, ce li scommetterei. Applichi stripslashes a degli array, ed ovviamente li smangi. Prova a sostituire con
    Codice PHP:
    $parametri = array_map( 'stripslashes', $_POST );
    e vedi se questa lavora in modo ricorsivo, altrimenti ce n'e' una versione da copiare fra gli esempi di array_map()
    Ultima modifica di dreadnaut : 12-10-2009 alle ore 20.02.45

  12. #12
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Ma lo sai che appena l'ho visto ho dubitato anch'io!!!

    Finalmente posso dire che funziona!!!
    Grazie mille!

    P.S.
    Siccome quella parte di codice mi è necessaria ho fatto così:

    Codice PHP:
    foreach($_POST as &$val) {
    if(!
    is_array($val)) {
    $val = trim(stripslashes($val));
    }
    }
    Almeno per i dati passati direttamente ($_POST["index"])!

    Saluti!
    Ultima modifica di mycarlo : 12-10-2009 alle ore 20.05.45

Regole di scrittura

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