Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Cancellazione Multipla Con Checkbox
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • P
      prinzart User Attivo • ultima modifica di

      Cancellazione Multipla Con Checkbox

      Ciao ho preparato un motore di ricerca di un'anagrafica, quando clicco cerca esce un elenco di utenti come faccio a mettere a fianco un checkbox e poi cliccando solo su quelli che seleziono cancellarli contemporaneamente?

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • T
        thedarkita ModSenior • ultima modifica di

        Ciao,
        i checkbox possono funzionare come un array impostando come name qualcosa[] e imposti come value l'id.
        Lato php un array con gli id ad esempio e puoi utilizzarlo come meglio credi.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • P
          prinzart User Attivo • ultima modifica di

          Ciao ho provato a fare così, però l'array non saprei come implementarlo:

          <form enctype="multipart/form-data" name="formcancella" action="<?=$PHP_SELF?>" method="post">

          <?php
          $id = $row2[id_anagrafica];
          ?>

          <table width="230" height="30" border="0" cellpadding="0" cellspacing="0">
          <tr>
          <td width="140" align="left"><input type="checkbox" name="delete[]" value="<?php echo($id); ?>"> <span class="testo_rosso_bold3">Elimina <?=$id?></span></td>
          <td width="90">

          <input type="hidden" name="cancella" value="1">

           <input name="submit" type="submit" class="pulsante" value="cancella">
           

              </td>
            </tr>
          </table> 
          

          </form>

          <?
          if ($cancella==1){

          $comma_separated = implode(",", $_POST['delete']);

          $sql = "DELETE FROM a_anagrafica WHERE a_anagrafica.id_anagrafica IN (".$comma_separated.")";

          mysql_query($sql,$conn) or die (mysql_error());

          }
          ?>

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • T
            thedarkita ModSenior • ultima modifica di

            Mi sembra perfetto cosi, qual'è il problema che riscontri?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • P
              prinzart User Attivo • ultima modifica di

              scusa hai ragione va bene così, ti chiederei l'ultima costesia.
              L'anagrafica si trova in 3 tabelle: a_anagrafica, a_login, a_ana_preferenze

              come faccio a cancellare in una volta sola i 3 record che si trovano rispettivamente nelle 3 tabelle?

              questa è la query relazionale:

              SELECT a_anagrafica., a_login., a_ana_preferenze.*

                  FROM a_anagrafica 
                  
                  INNER JOIN a_login 
                  ON a_anagrafica.id_anagrafica = a_login.id_anagrafica 
                  
                  LEFT JOIN a_ana_preferenze 
                  ON a_login.id_login = a_ana_preferenze.id_login
              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • P
                prinzart User Attivo • ultima modifica di

                così potrebbe andare?

                <?
                if ($cancella==1){

                $comma_separated = implode(",", $_POST['delete']);

                $sql1 = "DELETE FROM a_anagrafica WHERE a_anagrafica.id_anagrafica IN (".$comma_separated.")";

                $sql2 = "DELETE FROM a_login WHERE a_login.id_anagrafica IN (".$comma_separated.")";

                $sql3 = "DELETE FROM a_ana_preferenze WHERE a_ana_preferenze.id_login IN (".$comma_separated.")";

                mysql_query($sql,$conn) or die (mysql_error());

                }
                ?>

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • P
                  prinzart User Attivo • ultima modifica di

                  anche se quest'ultima query che ho postato non mi convince molto perchè i record non sono relazionati tra loro in questo modo ma sono indipendenti

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • T
                    thedarkita ModSenior • ultima modifica di

                    Si volendo si può fare cosi, fai attenzione che il mysql_query lo hai richiamato una sola volta.
                    I delete puoi farli anche con dei join:
                    http://dev.mysql.com/doc/refman/5.0/en/delete.html

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • P
                      prinzart User Attivo • ultima modifica di

                      ok ho visto e poi fatto una prova, può andare bene?

                      DELETE a_anagrafica,a_login,a_ana_preferenze

                      FROM a_anagrafica

                      INNER JOIN a_login
                      ON a_anagrafica.id_anagrafica = a_login.id_anagrafica

                      INNER JOIN a_ana_preferenze
                      ON a_login.id_login = a_ana_preferenze.id_login

                      WHERE a_anagrafica.id_anagrafica = '".$id."'

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • T
                        thedarkita ModSenior • ultima modifica di

                        Si dovrebbe essere corretta, però hai messo un singolo id invece di usare IN (id1,id2)

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • P
                          prinzart User Attivo • ultima modifica di

                          ho fatto un test ma non mi ha cancellato niente :mmm:

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • T
                            thedarkita ModSenior • ultima modifica di

                            Fai prima una query SELECT cosi vedi cosa prende e se c'è qualche errore sui JOIN, io non posso sapere com'è strutturato il tuo database quindi non sò dirti cosa non va. Dopo la modifichi in DELETE facilmente.

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • P
                              prinzart User Attivo • ultima modifica di

                              questo è uno dei risultati delle query:

                              SELECT a_anagrafica., a_login., a_ana_preferenze.* FROM a_anagrafica INNER JOIN a_login ON a_anagrafica.id_anagrafica = a_login.id_anagrafica INNER JOIN a_ana_preferenze ON a_login.id_login = a_ana_preferenze.id_login WHERE a_anagrafica.id_anagrafica = '1902'

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • P
                                prinzart User Attivo • ultima modifica di

                                quindi praticamente mi stampa solo l'id di a_anagrafica.id_anagrafica è giusto che sia così?

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • P
                                  prinzart User Attivo • ultima modifica di

                                  questo è il codice x stampare a video la query:

                                  <?php
                                  $sql = "SELECT a_anagrafica., a_login., a_ana_preferenze.*

                                  FROM a_anagrafica

                                  INNER JOIN a_login
                                  ON a_anagrafica.id_anagrafica = a_login.id_anagrafica

                                  INNER JOIN a_ana_preferenze
                                  ON a_login.id_login = a_ana_preferenze.id_login

                                  WHERE a_anagrafica.id_anagrafica = '".$id."'";

                                  mysql_query($sql,$conn) or die (mysql_error());

                                  echo $sql;
                                  ?>

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • T
                                    thedarkita ModSenior • ultima modifica di

                                    Tu devi eseguirla direttamente sul database (Tramite phpMyAdmin ad esempio) e vedere se restituisce qualcosa oppure no, perchè se non restituisce nulla significa che qualche join fatto cosi non va bene.

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • P
                                      prinzart User Attivo • ultima modifica di

                                      fatto, ma anche tramite phpMyAdmin non succede nulla

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • T
                                        thedarkita ModSenior • ultima modifica di

                                        Significa che i JOIN non sono fatti correttamente, controlla bene che ti serva un INNER JOIN invece di un LEFT JOIN. E anche che i campi in cui unisci sono corretti.

                                        0 Miglior Risposta Ringrazia Cita Rispondi

                                          1 Risposta Ultima Risposta
                                        • P
                                          prinzart User Attivo • ultima modifica di

                                          ok ora funziona grazie dell'aiuto 🙂

                                          0 Miglior Risposta Ringrazia Cita Rispondi

                                            1 Risposta Ultima Risposta
                                          • P
                                            prinzart User Attivo • ultima modifica di

                                            scusa mi sono accorto solo ora che me ne cancella solo uno per volta anche se ne seleziono più contemporaneamente. Forse può dipendere dal pulsante cancella e dal form che li devo mettere fuori il ciclo della ricerca?

                                            0 Miglior Risposta Ringrazia Cita Rispondi

                                              1 Risposta Ultima Risposta
                                            Caricamento altri post
                                            Rispondi
                                            • Topic risposta
                                            Effettua l'accesso per rispondere
                                            • Da Vecchi a Nuovi
                                            • Da Nuovi a Vecchi
                                            • Più Voti