1King Skrevet 15. november 2007 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>
-morten Skrevet 15. november 2007 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'"); } }
Stian Jacobsen Skrevet 17. november 2007 Skrevet 17. november 2007 Er det ikke raskere å kjøre alt i samme query med IN ?
1King Skrevet 19. november 2007 Forfatter 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?
Gjest Slettet+142 Skrevet 19. november 2007 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..
Martin A. Skrevet 19. november 2007 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
Zandar Skrevet 19. november 2007 Skrevet 19. november 2007 Svarte på et lignende problem for en stund tilbake... tråden finner du her.
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å