Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление файлов + удаление ссылки из базы! 
V
    Опции темы
Цербер
Дата 28.12.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



доброе время суток!
есть таблица в ней поле фото в этом поле хранятся ссылки на фото(у каждого юзера в этом поле по несколько ссылок на фото!) в формате
Код

<img src="foto.jpg"><img src="foto-1.jpg"><img src="foto-2.jpg">

эти ссылки отображаются фотками у юзера в его кабинете.
вопрос:
как сделать удаление фото из директории и последуещее удалении ссылки на это фото из базы, но имено одну ссылку а не все.
сами фото отображаются в кабинете через вызов ссылки из базы.примерно так:
Код

echo $row['foto'];

и ещё как сделать что бы рядом с каждой фотографией выводилась кнопка удалить, после её нажатия удалялась и фотка и ссылка на неё в базе!
надеюсь на вашу помощь!всем заранее спасибо!
PM MAIL ICQ   Вверх
skyboy
Дата 28.12.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



зря не нормализовал.
так тебе придется пользоваться не особо быстрой функцией replace
Код

UPDATE `table` SET `photos`= replace(`photos`,'<img src="foto-1.jpg">','') WHERE `iduser` = 2564


Добавлено @ 15:36
ну, или выдирать значение поля в клиентскую часть, там делать замену и пихать измененное значение обратно.

Это сообщение отредактировал(а) skyboy - 28.12.2007, 19:52
PM MAIL   Вверх
Цербер
Дата 28.12.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



Цитата(skyboy @ 28.12.2007,  13:35)
зря не нормализовал.
так тебе придется пользоваться не особо быстрой функцией replace
Код

UPDATE `table` SET `photos`= replace(`photos`,'<img src="foto-1.jpg">','') WHERE `iduser` = 2564


Добавлено @ 15:36
ну, или выдирать значение поля в клиентскую часть, там делать замену и пихать измененное значение обратно.

есть форма загрузки фото на сервер у юзера в кабинете, при загрузки фото происходит запись в базу в формате выше сказаном. базу делал не я пришёл сайт уже готовый был мне дали делать кабинет.
вот теперь делаю удаление файлов всё остальное уже готовое.
вот скрипт закачки:
Код

<?php
session_start();
$con=mysql_connect("localhost","root","");
$login=$_SESSION['username'];

mysql_select_db("base",$con);
$result=mysql_query("SELECT * FROM company where login='{$login}'") or die($result." ".mysql_error());
$row=mysql_fetch_array($result);
$id=$row['id'];
$dir='company/'.$id.'/';

if (@$_REQUEST['go_upload'])
{
$info = @getimagesize($_FILES['photofile']['tmp_name']);
if (preg_match('{image/(.*)}is', $info['mime'], $p))
{
$name = "$dir/".time().".".$p[1];


copy($_FILES["photofile"]["tmp_name"],'company/'.$id.'/'.$_FILES["photofile"]["name"]);
$foto=$row['fotogalery'];

$newfoto='<img src="company/'.$id.'/'.$_FILES["photofile"]["name"].'">';



$upd=("update `company` set `fotogalery` = '$foto.$newfoto' where login='{$login}'") or die(mysql_error());
mysql_query($upd);


}
else echo "Загрузка файла не верного формата";
   
}    
else echo "Ошибка закачки";

 
?>

насчёт твоих вариантов не совсем понял можешь поподробней??
если не трудно скажите как вывести все фото в кабинете у юзера что возле каждой radio стояло ?
напомню все ссылки хранятся в одной строке поля фотогалерея
id----------------------photo---
--1--<img src="foto-1.jpg"><img src="foto-2.jpg"><img src="foto-3.jpg">

т.е. у одного юзера от3 до 10 фото и все хранятся в строке фото, никак не могу сделать, что бы в кабинете можно было выбрать какую удалить, получается тока удаление всех сразу без выбора=)

PM MAIL ICQ   Вверх
skyboy
Дата 28.12.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(Цербер @  28.12.2007,  17:48 Найти цитируемый пост)
насчёт твоих вариантов не совсем понял

странно.
Цитата(Цербер @  28.12.2007,  17:48 Найти цитируемый пост)
можешь поподробней??

могу.
так как структуру таблицы ты ни разу не предоставил, то я предполагаю, что структура следующая: есть таблица с оригинальным названием table, в которой присутствуют минимум два поля: iduser - идентификатор пользователя и photos - список ссылок на фотографии в виде одной сплошной строки.
т.е. структура примерно такая:
Код

iduser                        photos
2564                       <img src="foto-1.jpg"><img src="foto-2.jpg"><img src="foto-3.jpg">
38                           <img src="foto-100.jpg"><img src="foto-313.jpg">
12                           <img src="foto-12.jpg"><img src="foto-2.jpg"><img src="foto-3.jpg"><img src="foto-398.jpg">
37                           <img src="foto-198.jpg">

теперь если надо из списка фото для пользователя №2564 необходимо удалить запись о фотографии foto-1.jpg
запрос будет такой:
Код

UPDATE `table` SET `photos`= replace(`photos`,'<img src="foto-1.jpg">','') WHERE `iduser` = 2564

после выполнения от строки
Цитата

<img src="foto-1.jpg"><img src="foto-2.jpg"><img src="foto-3.jpg">

должно остаться
Цитата

<img src="foto-2.jpg"><img src="foto-3.jpg">

достаточно подробно?
Цитата(Цербер @  28.12.2007,  17:48 Найти цитируемый пост)
если не трудно скажите как вывести все фото в кабинете у юзера что возле каждой radio стояло ?

а в данный момент как выводишь?



Это сообщение отредактировал(а) skyboy - 28.12.2007, 19:55
PM MAIL   Вверх
Цербер
Дата 28.12.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



Цитата

достаточно подробно?

более чем=) я просто восхищён! smile 


Код

а в данный момент как выводишь?

выводил тупо через 
Код

'<input type="radio" name="foto">'.$row['photos'].'

больше чем на млн.% уверен что это тупость полная, в итоге получается выделение всех фото (<img src="foto-1.jpg"><img src="foto-2.jpg"><img src="foto-3.jpg">) выведенных из базы при нажатии на радио. 
я думаю что ссылки на фото в одной строке как то делятся и их можно задать в переменую, но токо как? пока незнаю=(
ну вот очень надеюсь что здесь мне помогут!
PM MAIL ICQ   Вверх
skyboy
Дата 28.12.2007, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(Цербер @  28.12.2007,  21:08 Найти цитируемый пост)
я думаю что ссылки на фото в одной строке как то делятся

да. но на стороне клиента - в DOM-дереве в браузере.
итого: ты можешь на стороне клиента посредством javascript создавать для каждой картинки отдельный radio-input. но вот как ты будешь по выбранному radio определять, какую картинку удалять на стороне сервера  - уже задачка нетривиальная. впрочем, если value для radio-input'a будет содержать путь соотвествующего img, то можно его передавать на сервер и сразу "вырезать" из общей строки. но это тупо. потому есть ещё вариант: разделять строку на стороне сервера. и уже на стороне сервера знать - сколько и каких картинок ты выводишь.
намек: разделять, используя explode. а вот что использовать в качестве строки-разделителя для разделения - задание для тебя.
сможешь сам найти закономерность в строке
Цитата

<img src="foto-1.jpg"><img src="foto-2.jpg"><img src="foto-3.jpg">
?
Какая последовательность символов разделяет одну картинку от другой?
P.S. Люди, только чур - не подсказывать.
PM MAIL   Вверх
Цербер
Дата 29.12.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



Цитата

сможешь сам найти закономерность в строке
<img src="foto-1.jpg"><img src="foto-2.jpg"><img src="foto-3.jpg">
Какая последовательность символов разделяет одну картинку от другой?

я сделал в качестве разеделителя
Код

$id=$row['id'];
$mas=explode("<img src=\"company/$id/",$foto);
$i=0;
$count=count($mas);
while ($i<=$count)
{
$i++;
echo '<input type="radio" name="unlink" value="'.$i.'"><img src="company/'.$id.'/'.@$mas[$i];
}

зарабатало!
всё бы ничего, НО в массиве $mas появляются лишние элементы и при выводе его в цикле, выводятся лишние фото и т.к. ссылки на них неверные(несуществующие company/1/%3Cinput%20type=)
появляются лишние квадарты с надписью "рисунок", из за этих лишних элементов!
из за чего появляются лишнние элементы? и что нада сделать что бы исправить ошибку?
PM MAIL ICQ   Вверх
skyboy
Дата 29.12.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Код

$mas= explode('><',substr($foto,1,strlen($foto) - 2));
foreach($mas as $img) 
 echo '<'.$img.'>';


PM MAIL   Вверх
Цербер
Дата 29.12.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



Цитата(skyboy @ 29.12.2007,  08:21)
Код

$mas= explode('><',substr($foto,1,strlen($foto) - 2));
foreach($mas as $img) 
 echo '<'.$img.'>';

вот теперь всё нормально!
благодарю за помощь!
с наступающим!
счастливого нового года!
PM MAIL ICQ   Вверх
Цербер
Дата 29.12.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



вот ищё один метод ссылки с фотками сохранять в том же формате тока перед каждой ставить " ; "
что бы в дальнейшем было удобно использовать в качестве сепоратора в explode.
ну это на будующее тем люядм кто будет искать что то похожее!!!
PM MAIL ICQ   Вверх
skyboy
Дата 29.12.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



тогда лучше "|". потому что ";" может встретиться в составе "&amp;" внутри адреса картинки(если делать так, что не ругался валидатор) и тогда разобьет неправильно.
а вообще говоря, лучше бы переделать структуру базы данных.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0823 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.