php - 使用 PHP 删除字符串的一部分

标签 php mysql

我有这个 PHP 代码:

$sql="SELECT * from project_gallery where sequence = '".$_POST["project_sequence"]."' ";
    $rs=mysql_query($sql,$conn);
    $project=mysql_fetch_array($rs);

    $images = explode(',',$project['images']);

    $images = "," . $images . ","; // add comma to beginning and end of list

    foreach ($images_to_delete as $image_to_delete)
    {
        str_replace("," . $image_to_delete . ",", ","); // e.g. replaces ",image1.jpg," with ","
    }

    $images = substr($images, 1, -1); // remove comma from beginning and end

    echo $images;

我希望能够从 MySQL 表的单元格中删除字符串的选定部分(在之前的 HTML 表单中)。

在我的表中,我的图像文件名存储如下:

[image1.jpg]、[image2.jpg]、[image3.jpg]、[image4.jpg] 等...

因此,如果选中 image2.jpg 的复选框并提交表单,我想让字符串看起来像:

`[image1.jpg],[image3.jpg],[image4.jpg]`

这也是我的 HTML 表单:

<?php
$sql="SELECT * from project_gallery where sequence = '".$_GET["project"]."' ";
    $rs=mysql_query($sql,$conn);
    $project=mysql_fetch_array($rs);

    $images = explode(',',$project['images']);
    ?>
    <form action="edit.php?project=<?php echo $_GET["project"]; ?>" method="post" enctype="multipart/form-data">
    <table width="100%" border="0" cellspacing="5" cellpadding="5">
        <tr>
            <td><strong>Project Name</strong><br />
            <input type="text" name="project_name" value="<?php echo $project["name"]; ?>" style="width:100%;" /></td>
        </tr>
        <tr>
            <td><strong>Add New Images</strong><br /><input type="file" name="images[]" multiple="multiple" /></td>
        </tr>
        <?php
        foreach($images as $image)
        {
            $display_image = substr($image, 1, -1);
            ?>
            <tr>
                <td><img src="/img/project-gallery/<?php echo $display_image; ?>" width="160px" /><br />
                <input type="checkbox" name="images_to_delete[]" id="images_to_delete[]" value="<?php echo $display_image; ?>" /></td>
            </tr>
            <?php
        }
        ?>
        <tr>
            <td><input type="text" name="project_sequence" id="project_sequence" value="<?php echo $project["sequence"]; ?>" />
            <input type="submit" name="submit" id="submit" value="Save Project" /></td>
        </tr>
    </table>
    </form>

最佳答案

您可以使用 PHP 字符串替换(或类似的东西)来创建新字符串

$newList = str_replace($selectedEntry, '', $imageList);

然后您可以运行 mysql UPDATE 命令来更新数据库中的该记录。

$sql = "UPDATE table_name SET column_name = '$newList' WHERE id = $id";

也就是说,您可能不应该做您正在做的事情。您通常不希望像这样操作记录。我建议使用另一个包含所有图像数据(imageID、imageName 等)的表,然后在该表中插入和删除整行。有更有效/更复杂的做事方法,但是如果您最终不得不通过数据库中的 string/text/varchar 字段创建列表,那么您可能没有做正确的事情。

编辑: 获取之前选中的条目:

$(function () {
  $('#target').click(function () {
    var checkValues = $('input[name=checkboxlist]:checked').map(function() {
        return $(this).parent().text();
    }).get();
    //do something with your checkValues array
   });
});​

关于php - 使用 PHP 删除字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19389765/

相关文章:

php - 不带 indexOfOutBounds 的移位数组

php - CakePHP 2.1.3 单个页面的 SEO 元描述与 default.ctp

php - 如何在cakephp 3中保存多条记录

php - 如何在搜索引擎上添加自动完成功能

php - 将图像缩小到具有相同宽高比分辨率的固定宽度和高度

mysql - 使用来自另一个表的基于 MAX 的计算更新表

php - Vimeo API 不响应 "If-Modified-Since" header

javascript - 调用远程服务器期间 php 内的基本加载器微调器

mysql-workbench - 更改 my.ini 文件不会影响 MySql 变量

php - 加入 DB::raw() laravel 4