I have a simple database with two columns - id and file_name. In file_name column I have mp3 filenames such as Summer of 69.mp3 . Now I want to rename 10 filenames with UPDATE statement. But what I have tried is updating only the last one file.
$dbc = mysqli_connect ('host','user','pwd','database')
or die ('Error connecting to database');
$query = "SELECT * FROM files ORDER BY id DESC LIMIT 10";
$result = mysqli_query ($dbc,$query)
or die ('Error Came');
echo '<form action=rename.php method=post>';
while($row = mysqli_fetch_array($result)) {
$filename = $row['file_name'];
$fid = $row['id'];
echo '<input type="text" name="f[]" value="'.$row['file_name'].'" size="50"><br/><br/>';
}
echo '<input name="submit" type="submit" value="update"></form>';
if(isset($_POST['submit'])) {
foreach ($_POST['f'] as $f ){
$query = "UPDATE files SET file_name ='$f' WHERE id='$fid'";
mysqli_query ($dbc,$query)
or die ('Error Came');
}
}
mysqli_close($dbc);
Any way out to fix this ?
if(isset($_POST['submit'])) {
$f=$_POST['f'];
foreach ($f as $key=>$value ){
$query = "UPDATE files SET file_name ='$value' WHERE id=$row[$key]";
mysqli_query ($dbc,$query)
or die ('Error Came');
}
}
This may work for you
Only last file is updating because $fid contains the id of last file.
$i=0;
while($row = mysqli_fetch_array($result)) {
if($i==0)
{$fid = $row['id'];$i++;}//now $fid contains the first file's id
$filename = $row['file_name'];
echo '<input type="text" name="f[]" value="'.$row['file_name'].'" size="50"><br/><br/>';
}
Now in the other part
if(isset($_POST['submit'])) {
foreach ($_POST['f'] as $f ){
$query = "UPDATE files SET file_name ='$f' WHERE id='$fid'";
mysqli_query ($dbc,$query)
or die ('Error Came');
$fid++;
}
}