Hi,
Friday, February 28, 2003, 5:39:39 PM, you wrote:
RK> Hello Tom,
RK> Thursday, February 27, 2003, 7:39:52 PM, you wrote:
TR>> Hi,
TR>> Friday, February 28, 2003, 12:20:38 PM, you wrote:
RK>>> I really need somebody to help me with this I am totally lost on what
RK>>> to do
RK>>> I need a way to read the following text file and add to or delete from
RK>>> or change the data.
RK>>> I have been able to move it all into an array using this code
RK>>> $groups= file("group");
RK>>> for ($i=0; $i<$number_in_group; $i++){
RK>>> $groups[0];
RK>>> $groups[3]; <-- this is the part of the array that I need to change
RK>>> }
RK>>> But I can not figure out how to search the array and delete from or add
RK>>> to the array at a given point. I would like to say add another user to
RK>>> the end of site6 or delete a user from site3.
RK>>> Could somebody give me a hand here. I have read the manual for arrays
RK>>> and still can't figure it out.
RK>>> site1:x:503:tester1
RK>>> site2:x:504:tester2,tester2a
RK>>> site3:x:505:tester3,tester3a,tester3b
RK>>> site4:x:506:tester4
RK>>> site5:x:507:tester5,tester5a,tester5b
RK>>> site6:x:508:tester6
RK>>> site7:x:509:tester7,tester7a,tester7b
RK>>> --
RK>>> Best regards,
RK>>> Richard mailto:[EMAIL PROTECTED]
TR>> your groups array will look like this
TR>> groups[0] = site1:x:503:tester1
TR>> groups[1] = site2:x:504:tester2,tester2a
TR>> so loop through the array
TR>> $x = 0;
TR>> while(list($key,$val) = each($groups)){
TR>> //you need split the array values like this
TR>> list($name,$pass,$gid,$user_list) = split (":", $groups[$x]);
TR>> //see if we have the right one
TR>> if($name = $wanted_name){ //site6
TR>> //then split the usernames into a sub array
TR>> $users = explode(',',$userlist);
TR>> // to add
TR>> $users[] = $newuser;
TR>> // to delete
TR>> unset($users[3])
TR>> // now add it back
TR>> $userlist = implode(',',$users)
TR>> $list = $name.':'.$pass.':'.$gid.':'.$userlist;
TR>> $groups[$x] = $list;
TR>> }
TR>> $x++;
TR>> //here you could fputs to a temp file then copy to the original
TR>> // after finished
TR>> }
TR>> Then write groups back to disk
TR>> --
TR>> regards,
TR>> Tom
RK> Thanks for the help!!
RK> I still can't seam to get it to add a new user at the end of a line of
RK> the selected site name.
RK> Also how do I use the unset($users[3]) do I first have to determine
RK> what number the one I what to delete is.
RK> Here is what I have so far
RK> $newuser="tester45";
RK> $wanted_name="site7";
RK> $groups= file("group");
RK> $x = 0;
RK> while(list($key,$val) = each($groups)){
RK> //you need split the array values like this
RK> list($name,$pass,$gid,$user_list) = split (":", $groups[$x]);
RK> //see if we have the right one
RK> if($name = $wanted_name){ //site6
RK> //then split the usernames into a sub array
RK> $users = explode(',',$userlist);
RK> // to add
RK> $users[] = $newuser;
RK> // to delete
RK> //unset($users[3]);
RK> // now add it back
RK> $userlist = implode(',',$users);
RK> $list = $name.':'.$pass.':'.$gid.':'.$userlist;
RK> $groups[$x] = $list;
RK> }
RK> $x++;
RK> $handle = fopen("group2", 'a');
RK> fputs($handle, $groups[$x]);
RK> //here you could fputs to a temp file then copy to the original
RK> // after finished
RK> }
RK> //Then write groups back to disk
RK> --
RK> Best regards,
RK> Richard mailto:[EMAIL PROTECTED]
Here is a revised one with the bugs reduced :)
$newuser="tester45";
$del_user = "tester7";
$wanted_name="site7";
$groups= file("group");
$handle = fopen("group2", 'w');
$x = 0;
while(list($key,$val) = each($groups)){
//you need split the array values like this
$val = trim($val);
list($name,$pass,$gid,$userlist) = split (":", $val);
//see if we have the right one
if($name == $wanted_name){ //site6
//then split the usernames into a sub array
$users = explode(',',$userlist);
// to add
$users[] = $newuser;
// to delete
reset($users);
while(list($key2,$val2) = each($users)){
echo 'user = '.$val2.'<br>';
if($val2 == $del_user){
echo 'Deleting '.$del_user.'<br>';
unset($users[$key2]);
}
}
// now add it back
$userlist = implode(',',$users);
echo 'User list = '.$userlist.'<br>';
$list = $name.':'.$pass.':'.$gid.':'.$userlist;
fputs($handle, $list."\n"); //add updated list
}else{
fputs($handle, $val."\n"); //put back original
}
$x++;
}
fclose($handle);
--
regards,
Tom
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php