31. august 2007 - 18:54Der er
3 kommentarer og 1 løsning
Kontrollere array imod array og db
Hej,
Indsæt i databasen hvis ikke findes i db og slet hvis ikke findes i array...
Jeg har en liste med venner, som hver har en id. Foran navnene er en checkbox som er checked (userid[1234567890]) som venne id'et findes i tabellen gallery_aceess. Det jeg gerne vil er at lave en array i et hidden input (hiddenarray), som så skal bruges til at opdater gallery_access tabellen.
Idéen er at da jeg trykker på submit skal hiddenarray sendes med og kontrollere den nye array ($ids) som er submittet med formen imod hiddenarray'en. Så skal php indsætte de værdier fra $ids som ikke findes i hiddenarray.
Det sidste er så at slette det poster fra db'en om ikke findes i $ids.
Skal lige se om jeg har forstået det rigtigt. Du har en liste med folk som allerede har adgang og du skal give nye folk adgang? Når du allerede har en liste med folk som har adgang så kunne du jo passende lade være med at vise dem når der skal gives adgang til flere - eller lade dem være "checked" automatisk, hvis der skal være mulighed for at fjerne adgangen let.
Fra starten af er der ingen som har adgang. Så vælger jeg nogle af mine venner som skal have adgang, men jeg skal også kunne gå ind og fjerne en hvis jeg vil...
Nu har jeg lavet det i sådan, det er nok heller ikke så ofte at denne funktion benyttes, så den er ikke sår "effektiv" vigtig...
$match_tip = $_POST["userid"]; foreach($match_tip as $gkey => $gval) { $sql = mysql_query("Select * from gallery_access where profile_accept = '".$gval."'"); if(!mysql_num_rows($sql)){ mysql_query("insert into gallery_access (gallery,profile_accept) Values ('".$_GET['id']."','".$gval."')"); } echo $gkey . " = " . $gval . "<br>\n"; }
<?php $friends = mysql_query("Select friends.friendid, profiles.username as pname, gallery_access.profile_accept as aprofile from friends left join profiles on friends.friendid = profiles.profileid left join gallery_access on friends.friendid = gallery_access.profile_accept where friends.profileid = '".$_SESSION['userlogged']."'") or die(mysql_error()); //echo mysql_num_rows($friends)."<br>"; while($row_friends = mysql_fetch_array($friends)){ if($row_friends['friendid'] == $row_friends['aprofile']){ $checked = " checked=\"checked\""; }else{ $checked = ""; } ?> <input type="checkbox" name="userid[]" value="<? echo $row_friends['friendid']; ?>" "<?php echo $checked; ?>"> <?php echo $row_friends['pname']."<br>"; } ?>
Fungerer som sådan fint med at lægge vennerne i db, men nu vil jeg så gerne have at hvis jeg fjerner flugebenet fra en ven eller flere og trykker op "opdater", så slettes den række med vennens id i gallery_access. Sådan at jeg opdatere en lang liste med venner på en gang.
Ok, jeg prøver igen... Det er en liste med nogle venner med hver sin checkbox. Nu vil jeg have mulighed for at checke dem for at lægge dem i hver sin række i db'en. Så efter de er lagt ind, er de checkede og de som ikke er indlagt, er selvfølgelig ikke.
Mit problem bare at jeg ikke kan finde ud af at lave en funktion som sletter de poster der ligger inde hvis jeg vælger at unchecke dem. Nogen der ved?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.