selezionare record database con checkbox

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
Ciao! ho cercato qualche guida ma non mi ha aiutato niente.avete presente la gestione sezioni di joomla?? bene,sto cercando di fare una cosa simile ma ho dei problemi.

nella mia pagina, in alto è inclusa una "toolbar.php" che permette la navigazione,che nn funziona con pagine,ma con funzioni :
PHP:
if( isset( $_GET['action'] ) )
{
   switch( $_GET['action'] )
   {
        case 'list':
        default:
            lista();
        break;

        case 'delete':
             delete();
        break;

   }
}
cioè a seconda di ciò che viene cliccato richiama una funzione diversa dal file function.php:
PHP:
function lista()
{
    $query="SELECT * FROM sezioni";
    if($r=mysql_query($query))
    {
        echo '<table border="0" width="100%">
        <tr bgcolor="#ADD8E6">
        <td width="30"></td>
        <td>Nome</td>
        <td>ID</td>';
        while($array = mysql_fetch_array($r))
        {
            echo '<tr bgcolor="#E0FFFF">
            <td>
problema--><form action="index.php?page=gestsez&action=delete" method="post">
            <input type="checkbox" name="check" value=???></form>
            </td>
            <td><a href="index.php?page=articoli&id='.$array['IDsezione'].'">'.$array['Nome'].'</a></td>
            <td>'.$array['IDsezione'].'</td></tr>';
        }
        echo '</table>';
        mysql_free_result($r);
    }
    else echo mysql_error();
}

function delete()
{
$querydelete="DELETE FROM `sezioni` WHERE `IDsezione` = "valore del checkbox" ";
$delete=mysql_query($querydelete);
echo "delete";
}
in pratica la funzione lista() crea una tabella che contiene tutti i campi dalla tabella "sezioni" del db,e accanto a ogni sezione una checkbox.questa funzione funziona XD bene.
però come faccio,partendo da questa lista,a selezionare un determinato record su cui usare la funzione delete()?
un altra domanda:nella navigazione non funziona il default,sapete perchè??
grazie
 
ciao
se ti interessa eliminare un particolare record, secondo me, devi mettere al posto di ???

......
<input type="checkbox" name="check" value=???></form>
......

<input type="checkbox" name="check" value="$array['ID_del_record']"></form>

però non vedo l'istruzione pr leggerlo (tipo)
$da_deletare=$_POST['check']
 
ciao! $_POST['check'] dovrebbe essumere il valore della riga nel momento in cui ci clicchi sopra e resta il segna di spunta.non c'è un input di tipo submit per inviare i valori
 
ciao
...$_POST['check'] dovrebbe essumere il valore della riga...
non è quello che intendevo, ma se poi non lo leggi tale valore, come fa la funzione a "sapere" cosa devi eliminare?

con molta probabilità devi mettere

$querydelete="DELETE FROM sezioni WHERE IDsezione = '".$_POST['check']."'";


dimenticavo
con tutti quuei GET senza alcun controllo rischi iniezioni malevole
 
guarda ho messo $array['IDsezione'] nel value del checkbox e la query come mi hai detto. ma quando eseguo mi dice che l'indice $_POST['check'] non è definito.
ho provato anche a assegnare il valore di $array['IDsezione'] a una variabile,e mettere questa variabile in value dei checkbox.

funziona solo se aggiungo un pulsante di tipo submit e nella funzione controllo la pressione di tale pulsante.cosi funziona.altrimenti nada!
come fare?
 
ciao
fai una prova (senza il tasto submit) per vedere se $_POST['check'] viene trasmesso mettendo

PHP:
if( isset( $_GET['action'] ) ) 
{ 
   var_dump($_POST['check']);
   switch( $_GET['action'] ) 
   { 
//eccetera.......

se ti da null vuol dire che non viene trasmesso e allora si deve cercare il perche, se invece ti da il valore giusto si deve capire perche non entra nella funzione, so che le variabili interne ad una funzione non si possono leggere all'esterno, ma non mi ricordo se vale anche il contrario
intanto fai questa prova e poi sappi dire
 
ciao
scusa dimenticavo: non avendo messo messo il pulsante di submit hai messo uno script js che alla selezione del checkbox ti invii il form?
perche se non c'è qualcosa che invia, puoi solo divertirti a selezionare i check
 
ciao
scusa dimenticavo: non avendo messo messo il pulsante di submit hai messo uno script js che alla selezione del checkbox ti invii il form?
perche se non c'è qualcosa che invia, puoi solo divertirti a selezionare i check

ciao,alla fine è solo questo il problema. ho scoperto ora che si può fare solo col javascript. se clicco invia il form. da quello che ho letto dovrebbe essere:
PHP:
<input type="checkbox" name="checkbox" onclick="document.nomeform.submit();" value="$array['IDsezione']">
ma ovviamente non funziona
 
ciao
ti invio schematicamente come faccio io, solo che al posto della chekbox ho una select

PHP:
<script type="text/javascript">
<!--
function SelectPost()
{
	document.modulo.method="post";
	document.modulo.action="index.php?page=gestsez&action=delete";
	document.modulo.target="_parent";
	document.modulo.submit();
}
-->
</script>

<?php
//eccetera.....
echo "<form  name=\"modulo\">";//intanto terrei il tag form fuori dal while
while($array = mysql_fetch_array($r)){ 
	echo "<input type=\"checkbox\" name=\"check\" onChange=\"SelectPost()\" value=\"".$array['ID_del_record']."\"></>"
}//fine while
echo "</form>";
//eccetera......
?>

prova ad adattarla e vedere se ti funzia
 
aaah!! ci siamo quasi!!
cosi funziona! però mi esegue la funzione delete solamente spuntando il checkbox,quindi con un click elimina.
invece con il checkform checkato, dovrebbe assumerne il valore da gestire poi nella funzione in un secondo momento.cosi:
immaginepmt.png
[/URL][/IMG]

ti ringrazio per la pazienza!0:)
 
ciao
ma allora hai un pulsante di submit?
se prima selezioni e poi devi premere il pulsante con la X, il pulsante con la x rappresenta un submit?
dimenticavo: in questo caso se prima selezioni e poi premi X per cancellare, puoi selezionare più checkbox, allaora il nome dei check deve diventare diverso l'uno dall'alatro
 
Ultima modifica:
se prima selezioni e poi devi premere il pulsante con la X, il pulsante con la x rappresenta un submit?
in effetti dovrebbe essere cosi,ma il pulsante con la x è una semplice immagine.che per di più è inclusa da un altro file.
il tutto è strutturato cosi:
-gestsezioni.php è il file principale che switcha le funzioni,
-le funzioni sono contenute in function.php
-e i link su cui fare lo switch sono in toolbar.php,la barra che vedi con le immagini (tra cui la X)

Quindi dovrei avere il form con i checkbox da una parte,e il submit(immagine X) in un altro file.se si può fare cosi abbiamo risolto!

per il submit con immagine basta fare <input type="image" src="url"> , ma per dividere il form in 2 file diversi?
se proprio non si può fare cerco di unire tutto in un file
 
Ultima modifica:
ciao
non credo che si possa dividere, il pulsante di submit deve essere dentro i tag form.
invece per mettere l'mmagine nel subimt non ci sono problemi
provo a pensarci, poi ti informo
 

Discussioni simili