Visualizzazione risultati 1 fino 9 di 9

Discussione: checkbox per selezionare articoli da cancellare

  1. #1
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito checkbox per selezionare articoli da cancellare

    Ciao

    Vorrei implementare una funzionalità alla mia pagina php dove è anche possibile cancellare gli articoli stampati.

    In pratica per ogni (riga) articolo visualizzare a fianco un checkbox (quello per inserire o meno un segno di spunta
    per intenderci) attraverso il quale l'utente può selezionare l'articolo per poi con un bottone "Cancella selezionati"
    cancellare tutti gli articoli selezionati in un'unica operazione come avviene ad esempio per i programmi di posta elettronica online.
    Per il momento stampo a lato di ogni record visualizzato un link che invia anche l'id alla funzione di eliminazione, ma la cosa è abbastanza scomoda perchè se l'utente vuole cancellare più articoli è costretto a ripetere l'operazione N volte e ancor prima ri-visualizzare la pagina.

    Si può fare una cosa del genere in php?

    Grazie e buon NATALE

  2. #2
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    avevo fatto un qualcosa di simile qui :
    http://eurosalute.altervista.org/rotating_banner/

    per le immagini dei banner, funzionante....
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  3. #3
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    avevo fatto un qualcosa di simile qui :
    http://eurosalute.altervista.org/rotating_banner/

    per le immagini dei banner, funzionante....

    E' solo javascript e html il codice di quella pagina o c'è anche del php?
    Mi interessa.
    Nel frattempo ho risolto diversamente però ho un altro problema:

    qui viene stampato il checkbox per ogni record

    Codice PHP:


    ................

    <
    img border=\"0\" alt=\"Modifica Record\" src=\"stili/edit.gif\"/></a></td>
    <td height=\"30\" width=\"7%\" align=\"center\" id=\"row7\"><form name=\"form1\" method=\"post\" action=\"fornitori.php?task=dom_delete\">
    <input name=\"checkbox[]\" type=\"checkbox\" value=\"
    $id\"</td>



    //viene richiamata dallo switch la funzione di controllo per confermare l'intenzione
    di cancellar i record

    .....
    case 'dom_delete':
    dom_delete();
    break;
    .....


    .....................


    // per il momento solo un semplice controllo
    function dom_delete(){

    $check = $_POST['checkbox'];


    foreach (
    $check as $key => $m_id)
    {
    echo "
    Hai selezionato la checkbox: $key con valore: $m_id<br />";
    }

    echo "
    Sei sicuro di voler cancellare i fornitori <b>?<br /><br />
    <
    a href=\"fornitori.php?task=delete&ide=$check\"><img src=\"stili/si.gif\" border=\"0\" alt=\"Sì\"></a>
    <a href=\"javascript:history.back()\"> <img src=\"stili/no.gif\" border=\"0\" alt=\"No\"></a>"
    ;

    }


    //ancora parte dello switch:

    case 'delete':
    delete($_REQUEST['ide']);
    break;


    //la funzione che dovrebbe poi avviare la query di delete
    // per il momento controllo ancora con gli echo se è tutto ok col passaggio dei //dati


    function delete($ide) {


    if(
    is_array($ide))
    {
    foreach (
    $ide as $key => $m_id2)
    {
    echo
    "Hai selezionato la checkbox: $key con valore: $m_id2<br />";
    }
    }
    Allora

    Nel primo passaggio dell'array alla funzione dom_delete()
    non ci sono problemi i valori vengono passati e visualizzati con l'echo

    La seconda funzione delete() non mi stampa niente invece.
    Se faccio un echo di $ide mi restituisce array..quindi qualcosa viene inviato..ma il foreach non funziona, non mi stampa niente.
    Non ho capito quale possa essere il problema. Ci sto sbattendo la testa da un giorno.

    Puoi aiutarmi?
    Grazie

  4. #4
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    allora per il codice che ho utilizzato...ho ommesso le parti di codice che non interessavano:

    come puoi vedere ho utilizzato la funzione setCheckboxes(the_form, do_check) per selezionare tutti i checkbox(o deselezionarli).
    con la funzione conferma() confermo oppure no l'azione richiesta(cancellare i file o meno).

    Codice PHP:
    <html>
    <head>

    <script type="text/javascript">
    //<![CDATA[

    function setCheckboxes(the_form, do_check)
    {
    var elts = (typeof(document.forms[the_form].elements['check[]']) != 'undefined')
    ? document.forms[the_form].elements['check[]']
    :0;
    var elts_cnt = (typeof(elts.length) != 'undefined')
    ? elts.length
    : 0;
    if (elts_cnt) {
    for (var i = 0; i < elts_cnt; i++) {

    if (document.forms[the_form].checkall.checked==true) elts[i].checked = true;
    else elts[i].checked = false;


    }
    } else {
    elts.checked = do_check;
    }
    return true;
    }

    function conferma() {
    //if (document.getElementById('valida').checked) {
    var checkboxes = document.delform.elements['check[]']; //array di checkboxes

    for (i=0;i<checkboxes.length;i++) {
    if (checkboxes[i].checked==true) {

    if (confirm('Sei sicuro di cancellare i file selezionati?')){
    return true;
    }
    else {
    alert ("Richiesta Annullata!");
    window.location = "index.php";
    return false;
    }

    }//end checked
    else if (i == checkboxes.length-1) alert ("Non hai selezionato alcun file!");
    }//end for

    }
    //]]>
    </script>

    </head>
    <body>

    <?
    $ext_ammesse
    =array('.jpg','.jpeg','.gif','.png');
    $cartella="http://forum.it.altervista.org/images/sub1/";
    $attempt=false;

    echo
    "<p></p>Lista File presenti nella cartella ==> ".$cartella."<p></p>";

    if (
    $_POST['cancella']) {

    if (
    is_array($_POST) ) {

    $check='';
    $check=$_POST['check'];

    if (!empty(
    $check)) {

    //$files = glob($cartella.'*.*');
    $files=glob(''.$cartella.'*.*')?glob(''.$cartella.'*.*'):array();

    foreach (
    glob(''.$cartella.'*.*') as $file_name) {
    echo
    "$file_name size ==> " . filesize($file_name) . "<br>";
    //array_push($array_lista_file,$file_name);
    }

    }
    //end !empty
    else echo "Non hai selezionato alcun file!";


    foreach (
    $check as $file_name)
    {
    //$file_name non è array
    //array_push($array_file_name,$file_name);
    if(in_array($cartella.$file_name, $files)) {

    if (
    file_exists($cartella.$file_name))
    {
    if (
    unlink($cartella.$file_name)) echo "<br>Il File è stato cancellato ==> ".$file_name;
    else echo
    "<br>Impossibile cancellare il File";
    }
    else echo
    "<br>Il File non esiste";

    }
    //end in_array
    else $attempt=true;
    }
    //end foreach

    }//end is_array
    else $attempt=true;
    }
    //end $_POST['cancella']

    if (!$attempt) {

    function
    visualizzafile($cartella,$ext_ammesse){
    $array_file=Array();
    if(
    file_exists($cartella)){
    $handle = opendir($cartella);
    while (
    false !== ($file = readdir($handle))) {
    if(
    is_file($cartella.$file)){

    $estensione = strtolower(substr($file, strrpos($file, "."), strlen($file)-strrpos($file, ".")));
    if(
    in_array($estensione,$ext_ammesse)){
    array_push($array_file,$file);
    }
    }

    }

    $handle = closedir($handle);
    }
    shuffle($array_file); //mescola ordine array in modo casuale
    return $array_file;

    }

    //$ext_ammesse=array('.jpg','.jpeg','.gif','.png');
    //$cartella="http://forum.it.altervista.org/images/";
    $array_file=visualizzafile($cartella,$ext_ammesse);
    $n_elementi=count($array_file); //se si vogliono visualizzare tutte le immagini contenute nella cartella: $n_elementi=count($array_immagini);
    ?>
    <p></p>
    <form action="index.php" method="post" name="delform">
    <table>
    <tr><td width="200px">Check/UnCheck All ==>
    </td><td>
    <input name='checkall' type='checkbox' onclick="javascript: return setCheckboxes('delform', true)">
    </td></tr>
    <?
    for($a=0;$a<$n_elementi;$a++){
    ?>

    <tr><td width="200px"><img src="<?=$cartella.$array_file[$a]?>" border="0">
    </td><td><input type='checkbox' name='check[]' value='<?=$array_file[$a]?>' id='valida' onclick="">
    </td></tr>
    <?
    }
    ?>
    </table>
    <p></p>
    <input type="submit" value="Cancella" name="cancella" onclick="javascript: return conferma();">
    </form>
    <?
    }
    else echo
    "Hack Attempt!";
    ?>

    </body>
    </html>
    Ultima modifica di EuroSalute : 28-12-2010 alle ore 14.03.45 Motivo: più info
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  5. #5
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    grazie

    In merito al mio problema puoi dirmi qualcosa?

    Non riesco a capire dove sia l'errore.

    Ciao

  6. #6
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    il problema è qui: nel foreach passi i valori di $check a $m_id....e poi ....passi $check(che è array) a ide....

    Codice PHP:
    function dom_delete(){

    $check = $_POST['checkbox'];


    foreach (
    $check as $key => $m_id)
    {
    echo
    "Hai selezionato la checkbox: $key con valore: $m_id<br />";
    }

    echo
    "
    Sei sicuro di voler cancellare i fornitori <b>?<br /><br />
    <a href="
    fornitori.php?task=delete&ide=$check\"><img src=\"stili/si.gif\" border=\"0\" alt=\"Sì\"></a>
    <a href=\"javascript:history.back()\"> <img src=\"stili/no.gif\" border=\"0\" alt=\"No\"></a>"
    ;

    }
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  7. #7
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    il problema è qui: nel foreach passi i valori di $check a $m_id....e poi ....passi $check(che è array) a ide....

    Codice PHP:
    function dom_delete(){

    $check = $_POST['checkbox'];


    foreach (
    $check as $key => $m_id)
    {
    echo
    "Hai selezionato la checkbox: $key con valore: $m_id<br />";
    }

    echo
    "
    Sei sicuro di voler cancellare i fornitori <b>?<br /><br />
    <a href="
    fornitori.php?task=delete&ide=$check\"><img src=\"stili/si.gif\" border=\"0\" alt=\"Sì\"></a>
    <a href=\"javascript:history.back()\"> <img src=\"stili/no.gif\" border=\"0\" alt=\"No\"></a>"
    ;

    }
    Cosa dovrei fare per risolvere?

    Grazie

  8. #8
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    il tuo script così non può funzionare....

    dovresti postare tutto il codice utilizzato....

    come puoi vedere dal mio script, nel form input ho stampato l'elenco dei file e di fianco il checkbox per ogni file da cancellare, in più ho inserito un checkbox per selezionare o deselezionare tutti i checkbox dei file.

    I file nel tuo caso sono i fornitori(l'id di ciascun fornitore).

    Per poter cancellare tutti i fornitori devi passare nel foreach l'id di ciascun fornitore.
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  9. #9
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    il tuo script così non può funzionare....

    dovresti postare tutto il codice utilizzato....

    come puoi vedere dal mio script, nel form input ho stampato l'elenco dei file e di fianco il checkbox per ogni file da cancellare, in più ho inserito un checkbox per selezionare o deselezionare tutti i checkbox dei file.

    I file nel tuo caso sono i fornitori(l'id di ciascun fornitore).

    Per poter cancellare tutti i fornitori devi passare nel foreach l'id di ciascun fornitore.
    ok, se ho capito bene quello che dici tu lo faccio nella funzione dom_delete.
    Ma è in questa funzione che mi sto incartando non trovando il modo per passare gli stessi valori (lo stesso array) alla funzione delete().

    Non ho capito come fare.

    Grazie ancora




    ......aspe'...risolto. Ho capito grazie!

    ciao
    Ultima modifica di gianlucaweb : 29-12-2010 alle ore 15.48.01

Regole di scrittura

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