[ Milan M. Radovic @ 10.10.2006. 02:05 ] @
Hocu da napravim Multi-select tj. checkboxove za admin panel,da bude stvar brza (konkretno za odobravanje slike ali to nije bitno)..kako da PHP razume to....
NPR. Neka to budu checkboxovi za brisanje korisnika
Treba mi strana koja prihvata POST..neki primer..deo ...
[ sale83 @ 10.10.2006. 09:04 ] @
Jednostavno:

Code:


<?Php

if(isset($_POST[prihvati])){

echo "<pre>";
print_r($_POST);
echo "</pre>";

}
?>

<form action="" method="post" name="Forma">
<input name="Chk1" id="Chk1[]" type="checkbox" value="Vrednost1">
<input name="Chk2" id="Chk2[]" type="checkbox" value="Vrednost2">
<input name="Chk3" id="Chk3[]" type="checkbox" value="Vrednost3">
<input name="Chk4" id="Chk4[]" type="checkbox" value="Vrednost4">
<input name="prihvati" type="submit">
</form>

[ Milan M. Radovic @ 10.10.2006. 10:06 ] @
Nismo se najjasnije razumeli
Prethodna strana generise checkboxove npr. 100 korisnika,a ja selektujem npr. 3
Recimo da na onoj strani svi imaju isti ID ali drugaciji VALUE....kako da on uzme selektovane stvari
(Inace VALUE sadrzi Korisnicki ID) i da izbrise iz mysql ... (MYSQL tutor ne treba...)
[ Davor Grubelić @ 10.10.2006. 10:23 ] @
Code:

<form action="" method="post" name="Forma">
<input name="Chk1" id="Chk1[]" type="checkbox" value="Vrednost1">
<input name="Chk2" id="Chk2[]" type="checkbox" value="Vrednost2">
<input name="Chk3" id="Chk3[]" type="checkbox" value="Vrednost3">
<input name="Chk4" id="Chk4[]" type="checkbox" value="Vrednost4">
<input name="prihvati" type="submit">
</form>

<?php

for ($i = 1; $i <= 4; $i++) {
    
    if (isset($_POST["Chk$i"])) {
        
        $check .= " ' " . $_POST["Chk$i"] " ' ";
        
    }
}

?>


ovo ti je samo ugrubo. to treba doraditi još
[ djordje @ 10.10.2006. 14:19 ] @
Citat:
Recimo da na onoj strani svi imaju isti ID ali drugaciji VALUE


ID bi trebao da ti bude jedinstven. Nije vezano mnogo za ovu temu, ali treba pisati ispravan kod
[ noviKorisnik @ 10.10.2006. 14:41 ] @
Mogu da imaju isti NAME. Neka je taj name="chk[]". Ove uglaste zagrade su bitne da bi mogao da se prosledi niz selektovanih vrednosti.

html bi izgledao ovako

Code:
<input type="checkbox" name="chk[]" value="1" /> jedan
<input type="checkbox" name="chk[]" value="2" /> dva
<input type="checkbox" name="chk[]" value="3" /> tri


I to se formularom prosleđuje post metodom php stranici da dalje brlja ... pa tamo ...

Code:
if (isset ($_POST ['chk'])) {
    foreach ($_POST ['chk'] as $vrednost) {
//radi šta ti je već volja
    }
}


... a ovo sve zato jer $_POST ['chk'] ne mora uopšte da postoji (to je u slučaju da nijedan checkbox nije selektovan), a ako postoji onda se radi o nizu vrednosti.
[ noviKorisnik @ 10.10.2006. 14:47 ] @
Odnosno, kad pogledam, ne treba ti foreach petlja ... radiš neko brisanje...

Code:
if (isset ($_POST ['chk'])) {
    mysql_query ("delete from tabela where id in ('" . implode ("', '", $_POST ['chk']) . "')");
}
[ Milan M. Radovic @ 10.10.2006. 22:35 ] @
Thanks!
[ Milan M. Radovic @ 10.11.2006. 13:44 ] @
Ustvari ... ne radi..

Citat:
noviKorisnik: Mogu da imaju isti NAME. Neka je taj name="chk[]". Ove uglaste zagrade su bitne da bi mogao da se prosledi niz selektovanih vrednosti.

html bi izgledao ovako

Code:
<input type="checkbox" name="chk[]" value="1" /> jedan
<input type="checkbox" name="chk[]" value="2" /> dva
<input type="checkbox" name="chk[]" value="3" /> tri


I to se formularom prosleđuje post metodom php stranici da dalje brlja ... pa tamo ...

Code:
if (isset ($_POST ['chk'])) {
    foreach ($_POST ['chk'] as $vrednost) {
//radi šta ti je već volja
    }
}


... a ovo sve zato jer $_POST ['chk'] ne mora uopšte da postoji (to je u slučaju da nijedan checkbox nije selektovan), a ako postoji onda se radi o nizu vrednosti.


ovo je html tj...deo echa koji pise html... to se salje
Code:
    <td><input name=\"obrisi\" type=\"checkbox\"  value=\"$sid\"></td>

ovo je deo PHP za brisanje
Code:
    if($HTTP_GET_VARS['akcija'] == "brisanje")
{
foreach($_POST['obrisi'] as $sid)
{

mysql_query("DELETE FROM spojevi WHERE sid='$id';");
}

}else{}



GRESKA JE
Warning: Invalid argument supplied for foreach() in C:\Program Files\Abyss Web Server\htdocs\admin\spojevi.php on line 8
[ glavince @ 10.11.2006. 16:49 ] @
forma:
Code:
<td><input name=\"obrisi[]\" type=\"checkbox\"  value=\"$sid\"></td>

query:
Code:

if (isset($_POST["obrisi"])) {
$brisi = join(', ', $_POST['obrisi']);
mysql_query("DELETE FROM spojevi WHERE sid IN ($brisi)");
} else {
niste odabrali sta da brisete
}


[Ovu poruku je menjao glavince dana 10.11.2006. u 18:10 GMT+1]
[ adi356 @ 10.11.2006. 20:48 ] @
Ovo ti je jedan primer koji brise selektovane usere iz baze podataka.

Code:

echo "<p align=\"center\">Delete user</a></p><br>";


/////////////////////////////////////////////////////////////////
///// Za brisanje usera ili slike
////////////////////////////////////////////////////////////////

     if (isset($_POST['send'])) {
         $user="SELECT * from tvojaTabela WHERE imeKoloneGdeUpisujesDaLiJeSlikaAktivnaIliNe='neaktivna'";
    $user2=mysql_query($user);
       while($user3=mysql_fetch_array($user2)) {
             $file = strval($user3['ID']);
             $deliuser=$_POST[$file];
             if (!$deluser==""){
                   $file1 = intval($file);
                  $delentry="DELETE from tvojaTabela where ID='$file1'";
                  mysql_query($delentry) or die("Could not delete user");

             }
        }
     }

////////////////////////////////////////////////////////////////
///// Za odobravanje slike ili usera
////////////////////////////////////////////////////////////////

    if (isset($_POST['send'])) {
         $user="SELECT * FROM tvojaTabela WHERE imeKoloneGdeUpisujesDaLiJeSlikaAktivnaIliNe='neaktivna'";
    $user2=mysql_query($user);
       while($user3=mysql_fetch_array($user2)) {
             $file = strval($user3['ID']);
             $deliuser=$_POST[$file];
             if (!$deluser==""){
                   $file1 = intval($file);
                  $update="UPDATE tvojaTabela SET imeKoloneGdeUpisujesDaLiJeSlikaAktivnaIliNe='aktivna' WHERE ID='$file1'";
                      mysql_query($update) or die(mysql_error());
              
           }
        }
     }

////////////////////////////////////////////////////////////////
//// Ovo je forma koja se stalno prikazuje samo uvek sa 
//// updateovanim informacijama
////////////////////////////////////////////////////////////////

    echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>";

     $user="SELECT * FROM tvojaTabela WHERE imeKoloneGdeUpisujesDaLiJeSlikaAktivnaIliNe='neaktivna'";
     $user2=mysql_query($user);
    while($user3=mysql_fetch_array($user2)) {
    $file = strval($user3['ID']);
    
    echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"3\"><tr>
    <td><input type='checkbox' name=\"".$file."\"></td>
    <td>User: ".$user3['imeKoloneGdeSuSmestenaImenaUsera']."</td></tr></table>";

    }
    
  echo "<br><input type='submit' value=\"Delete checked users\" name=\"send\"></form>";



Skripta je jednostavna ali je mnogo dobra. Kako radi? Prvo ispise na sajt formu kao tabelu, gde je prvi row dugme checkbox koji ima vrednost ID-a iz baze. Drugi row je samo ime usera. Za svakog usera se ispisuje nova tabela, jedna ispod drugog. Kada korisnik selectuje jednu ili vise usera za delete, i pritisne na dugme, pokrece se gornji (if) deo skripte koji uzima ID od selektovanog imena usera i brise ga iz baze. Kada izbrise svaki selektovani user, on opet pokazuje istu stranicu, koju je pokazao i pre (tj. formu) ali sada bez usera koji si izbrisao.

strval sluzi da ti broj (ID) pretvori u string, jer name ne sme da pocinje brojem. If komanda otvara istu bazu koju si koristio na stranici i vadi ID sa $_POST atributom. Posle ga pretvara u broj i brise user iz baze uz pomoc tog broja.

WHERE imeKoloneGdeUpisujesDaLiJeSlikaAktivnaIliNe='neaktivna' , gde neaktivna (ili aktivna) predstavlja neki value uz pomoc kojeg gledas da li je slika aktivirana ili nije. WHERE treba svugde da se stavi. Na stranici (u formi) on se koristi da bi se izlistale samo one slike koje nisu aktivirane. U if petljama, WHERE se koristi da bi program vadio samo one kolone koje nisu aktivirane, jer ti njih hoces da izbrises ili aktiviras.


Nadam se da sam ti jasno odgovorio. Ako ti nesto nije jasno, pisi.