1King Skrevet 15. november 2007 Del Skrevet 15. november 2007 Hei Jeg har hentet info fra MySql og presentert det i en tabel i filen endring.php. jeg har laget en checkbox bak hvert navn. Jeg ønsker å kunne endre status for de jeg haker av. Hvordan kan jeg få det til? Håper noen kan hjelpe meg ... !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Endre status</title> </head> <body> <?php IF($_POST['endre1']>0) { $check = $_POST['checkbox']; IF($check==TRUE) { $bruk_id = $_POST['checkbox']; $query = "SET status=1 WHERE bruk_id='$bruk_id'"; $result = mysql_query($query, $db) or die or die('error: ' . mysql_error()); } } IF($_POST['endre2']>0) { $check = $_POST['checkbox']; IF($check==TRUE) { $bruk_id = $_POST['checkbox']; $query = "SET status=2 WHERE bruk_id='$bruk_id'"; $result = mysql_query($query, $db) or die or die('error: ' . mysql_error()); } } IF($_POST['slett']>0) { $check = $_POST['checkbox']; IF($check==TRUE) { $bruk_id = $_POST['checkbox']; $query = "DELETE from bruker WHERE bruk_id='$bruk_id'"; $result = mysql_query($query, $db) or die or die('error: ' . mysql_error()); } } ELSE { ECHO' <form method="post" action=""> <table border="1" align=center> <tr> <td>Navn:</td> <td>Tlf:</td> <td>Mail:</td> <td>Sist aktiv</td> <td>Endre status</td> </tr> '; REQUIRE($_SERVER["DOCUMENT_ROOT"]."/tilkobling.php"); $query = "SELECT * FROM brukere where status='0' ORDER BY date "; $result = mysql_query($query, $db); FOR ($i =0; $i < mysql_num_rows($result); $i++) { $bruk_id = mysql_result($result, $i, "bruk_id") $navn = mysql_result($result, $i, "navn"); $tlf = mysql_result($result, $i, "tlf"); $mail = mysql_result($result, $i, "mail"); $saktiv = mysql_result($result, $i, "sist_aktiv"); ECHO ' <tr> <td><a href="info.php?bruker='.$bruk_id.'">'.$navn.'</a></td> <td>'.$tlf.'</td> <td>'.$mail.'</td> <td>'.$saktiv.'</td> <td><input name="checkbox" type="checkbox" values="'.$bruk_id.'"></td> </tr>'; } ECHO' <tr> <td colspan="5"><input name="endre1" type="submit" value="Endre status til 1"></td> </tr> tr> <td colspan="5"><input name="endre2" type="submit" value="Endre status til 2"></td> </tr> tr> <td colspan="5"><input name="slett" type="submit" value="Slett"></td> </tr> </table> </form> '; } ?> </body> Lenke til kommentar
-morten Skrevet 15. november 2007 Del Skrevet 15. november 2007 Hvis du har name="checkbox[]" på alle avkryssningsboksene, så vil $_POST['checkbox'] bli et array, med alle value-ene til de som er krysset av som verdier. Dermed kan du loope gjennom den, feks med if (!empty($_POST['checkbox']) { foreach ($_POST['checkbox'] as $id) { $id = mysql_real_escape_string($id); mysql_query("DELETE FROM bruker WHERE bruk_id='$id'"); } } Lenke til kommentar
Stian Jacobsen Skrevet 17. november 2007 Del Skrevet 17. november 2007 Er det ikke raskere å kjøre alt i samme query med IN ? Lenke til kommentar
1King Skrevet 19. november 2007 Forfatter Del Skrevet 19. november 2007 Er det ikke raskere å kjøre alt i samme query med IN ? Heisann. jeg kan ikke så mye om php. kanskje du kan utdype dette litt mer? Lenke til kommentar
Gjest Slettet+142 Skrevet 19. november 2007 Del Skrevet 19. november 2007 if (!empty($_POST['checkbox']) { $ids = array_walk($_POST["checkbox"], "sjekkTall"); if( $ids ) { $ids = implode(", ", mysql_real_escape_string($_POST["checkbox"])); mysql_query("DELETE FROM bruker WHERE bruk_id IN({$ids})"); } } function sjekkTall( &$val, $key ){ if(!is_numeric($val)) return false; $val = "'" . mysql_real_escape_string($val) . "'"; return true; } Den skal funke tror jeg.. Lenke til kommentar
Martin A. Skrevet 19. november 2007 Del Skrevet 19. november 2007 (endret) IN er noe man bruker sammen med database. I dette tilfelle vil det være for å unngå løkken i kodesnutten til -morten. $checkbox = $_POST['checkbox']; if ( is_array( $checkbox ) AND count( $checkbox ) ) { foreach( $checkbox as $k => $v ) { $id[ intval($k) ] = intval($v); } } if( count( $id ) ) { $query = "DELETE from bruker WHERE bruk_id IN (" . implode(',', $id ) . ")"; $result = mysql_query($query, $db) or die or die('error: ' . mysql_error()); } Og funksjonsnavn i PHP skrives i lowercase. EDIT: Så var det dette med å trykke preview. Endret 19. november 2007 av M4rTiN Lenke til kommentar
Zandar Skrevet 19. november 2007 Del Skrevet 19. november 2007 Svarte på et lignende problem for en stund tilbake... tråden finner du her. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå