Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    81

    problemi con variabili globali

    Salve ragazzi avrei un piccolo problema con il seguente codice sull invio della variabile $i

    PRELEVA.PHP

    codice:
    echo"<form method=\"get\" action=\"delete.php\">"; // apertura form per l'invio dati di cancellazione alla pagina delete.php
    
    echo " <div id=\"table\">";//inizio tabella più esterna per contenere tutto CSS
    
    $i = 0;
    while($riga=mysql_fetch_array($result)){ // ritorna riga per riga e i risultati usciti dalla query in riga
    $i ++;
    
    echo "
    <div id=\"table\">
    	$riga[modello];
    	<input type=\"checkbox\" name=\"box$i\" value=\"$riga[id]\">
    
    </div>";
    
    } //fine ciclo while
    echo "</div>
    ";
    
    echo "Numero di cicli da fare per il controllo del checkbox è di $i
    ";
    
    echo"<input type=\"submit\" value=\"Invia\"></form>";
    DELETE.php
    codice:
    $prova = $_GET['$i'];
    
    echo "$prova";
    ovviamente inutile dire che mi dà variabile non definita...

  2. #2
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Forse potresti adottare una soluzione più semplice, evitando di usare variabili inutili. Guarda questo esempio senza formattazione, anche se quella che stai utilizzando non è che sia proprio standard, vedi div con id ripetuti ecc.. ma questo è un discorso diverso. Pensa una cosa alla volta, inizia dalle istruzioni in "preleva.php":

    Codice PHP:
    <form action="delete.php" method="post">
    <?php
    //query al database...
    while($riga mysql_fetch_array($result)) {

    //stampa i dati interessati e rende il checkbox un array con l'uso delle []
    //per meglio eseguire le operazioni successive nella pagina delete.php
    echo $riga['modello'] . '<input type="checkbox" name="box[]" value="' $riga['id'] .'" />
    '
    ;
    }
    ?>
    <input type="submit" name="submit" value="Invia" />
    </form>
    delete.php

    Codice PHP:
    <?php
    //connessione al database...

    //controlla se sono stati inviati dati dal form e se è stato spuntato almeno un checkbox
    if(isset($_POST['submit']) && !empty($_POST['box'])) {

     
    //unisco gli elementi dell'array creato precedentemente in una stringa per sfruttare
     //l'istruzione IN nella query che si occuperà di eliminare i records selezionati e alla fine
     //esegue un semplice controllo che informa sull'esito dell'operazione.
     
    $id implode(','$_POST['box']);

     
    mysql_query("DELETE FROM tabella WHERE id IN($id)") or die(mysql_error());

     echo 
    mysql_affected_rows() < 1
         
    'Nessun record eliminato.'
         
    'Sono stati eliminati ' mysql_affected_rows() . ' records.';
    }
    ?>

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    81
    grazie mille per il tuo aiuto ma c'è qualkosa che mi sfugge.... tipo quando scrivi

    $_POST['box'] a quale variabile ti riferisci prendere?!.... il valore del campo value di box?!

  4. #4
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Si, quella variabile fa riferimento proprio al valore del checkbox. Ma, come ti dicevo, anziché utilizzare delle variabili come indice ($i) per identificare univocamente ogni singola scelta, si può risolvere la cosa rendendo come array il valore del checkbox. Basta aggiungere le parentesi quadre, come ti ho indicato nell'esempio precedente, e quindi gestire i valori selezionati come array a tutti gli effetti.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    81
    sisi è una cosa se vedi il mio script alla quale già avevo pensato io....ma nn capisco come fai a trasformare il valore del checkbox ( $riga['id']) in un array......

  6. #6
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    No, non è $riga['id'] ad essere convertito in array, quello rappresenta il "valore" dal value a tutti gli effetti. La conversione "automatica" in array la si ottiene aggiungendo le quadre [] al nome del checkbox, quindi se hai definito come nome per i checkbox "box" basta solo modificarlo in "box[]". Dopodiché è semplice gestire il nuovo array per realizzare la query ad esempio, come nel tuo caso, oppure eseguire dei controlli specifici o altro.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    81
    ok...quindi se ho capito bene BOX rappresenta un array di valori VALUE,che a seconda se spuntato o meno da il valore di $riga['id'] o undefined. giusto ?

  8. #8
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Giusto. Per toglierti altri eventuali dubbi inizia a fare delle prove col codice che ti ho indicato prima, come soluzione credo sia una delle più pratiche.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    81
    sisi già provato però nn mi cancella niente...come se nn vedesse la query

    DELETE.PHP
    codice:
    //connessione al db
    
    echo "il numero di celle dell'array box[] piene sono ".count($box_value)."
    ";
    
    //controlla se sono stati inviati dati dal form e se è stato spuntato almeno un checkbox
    if(!empty($_POST['box'])) { 
    $i = 0;
    
    while ( $i <= count($box_value)){
    	echo $box_value[$i]."
    ";
    	mysql_query("DELETE * FROM 'auto' WHERE id' = $box_value[$i]") or die("cancellazione non andata a buon fine");
    	$i = $i + 1;
    }
    
    echo mysql_affected_rows() < 1
         ? 'Nessun record eliminato.'
         : 'Sono stati eliminati ' . mysql_affected_rows() . ' records.';
    }
    
    ?>
    ho modificato il codice ...

  10. #10
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Ho visto come hai modificato il codice e di questo passo mi sa che si andrà di male in peggio... Comunque, se proprio non vuoi usare il codice che ti ho suggerito cerca almeno di spiegare con più precisione che tipo di problema hai. Se dici che la query è come se non venisse vista prova a spiegare meglio cosa accade, ricevi qualche errore? Poi ti consiglierei di non evitare l'uso della segnalazione d'errore mysql_error() e, se puoi, mi piacerebbe sapere per quale motivo ti sei ostinato a voler usare un ciclo while così... inutile, secondo me. Visto che con solo due righe di codice avresti risolto tutto in maniera pulita e diretta. Mah?!

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.