Есть данные в базе. Все они храняться в одном поле cars. Предположим, вот они: ferrari,dodge,chrysler,chevrolet.
Я их извлек и они сейчас у меня храняться в переменной myrow.
echo $myrow['cars'];Выдаст: ferrari,dodge,chrysler,chevrolet.
Теперь я функцией explode их разделяю:
$explode = explode(",", $myrow['cars']);
$count = count($explode);
$i=0;
do{
echo $explode[$i]." <a href="delete.php">удалить</a><br>";
$i++;
}
while($i <= $count);
Теперь у меня для каждого слова отдельный массив и он выводит все так:
ferrari удалить
dodge удалить
chrysler удалить
chevrolet удалить
Как мне зделать, что бы при нажатии на кнопку удалить обработчик удалял какое-то из слов, если они все являются цельным текстом и находятся в одном поле???
Спустя 8 минут, 48 секунд (15.12.2009 - 17:26) Romms написал(а):
начнем с того что сдесь у тебя ошибка, и скрипт не будет исполняться!
правильно
тебе надо сделать так(передать файлу delete.php какую машину ты хочь удалить)
А дальше, как хочеш, что хочеш то и удаляеш!
правильно
echo $explode[$i]." <a href=\"delete.php\">удалить</a><br>";
тебе надо сделать так(передать файлу delete.php какую машину ты хочь удалить)
echo $explode[$i]." <a href=\"delete.php?car=".$explode[$i]."\">удалить</a><br>";а вот в этом файле "ловишь" car с гед массива ($_GET['car'])
А дальше, как хочеш, что хочеш то и удаляеш!
Спустя 1 минута, 14 секунд (15.12.2009 - 17:27) Gabriel написал(а):
самое банальное по тыку в ссылку/кнопку делаеш апдейт строки со всеми значениями только без того в которое ткнул.
ну или удалить из масива нужное значение и записать масив в базу.
ЗЫ. забудьте по do-while
ну или удалить из масива нужное значение и записать масив в базу.
ЗЫ. забудьте по do-while
Спустя 1 минута, 4 секунды (15.12.2009 - 17:28) Kuliev написал(а):
kl95
Для начала прочитай статью в мое подписи, приведи код в порядок и поговорим о твоей проблеме!
Для начала прочитай статью в мое подписи, приведи код в порядок и поговорим о твоей проблеме!
Спустя 1 час, 41 минута, 53 секунды (15.12.2009 - 19:10) kl95 написал(а):
Цитата |
начнем с того что сдесь у тебя ошибка, и скрипт не будет исполняться! |
Это я знаю. Просто по невнимательности. Видно я не все еще написал. Что по ссылке будут передоваться данные я уже зделал, задача была не в том, как передать данные, а как их обрабоать. Пусть обработчик принял слово "chrysler".
$car = $_GET['car'];
Из базы выберается целое поле. Вот я его выбрал
$sql = "SELECT `cars` FROM `data`";
$result = mysql_query($sql);
$myrow =mysql_fetch_assoc($result);
Сечас в переменной $myrow['car'] находится ferrari,dodge,chrysler,chevrolet.
Как мне зделать так, что бы из этого всего поля мне удалить chrysler и оставить ferrari,dodge,chevrolet.
Цитата |
забудьте по do-while |
Почему? Разве он чем-то плох?
Цитата |
Для начала прочитай статью в мое подписи |
Читал уже несколько раз - раньше и сейчас но так и не понял зачем она здесь
Спустя 1 час, 44 минуты, 4 секунды (15.12.2009 - 20:54) vagrand написал(а):
Можно сделать многими способами:
1.
2.
3.
Регулярками
1.
$cars = explode(',', $myrow['car']);
foreach ($cars as $key => $value) {
if ($_GET['car'] == $value) {
unset($cars[$key])
}
}
$myrow['car'] = join(',', $cars);
2.
$myrow['car'] = str_replace($_GET['car'], '', $myrow['car']);
$myrow['car'] = str_replace(',,', '', $myrow['car']);
3.
Регулярками
Спустя 15 минут, 57 секунд (15.12.2009 - 21:10) Gabriel написал(а):
Цитата |
Почему? Разве он чем-то плох? |
затем, что тут он не нужен
ну мне в голову приходит только такое:
1. explode по `,` плучим такое
Цитата |
Array ([0] => ferrari [1] => dodge [2] => chrysler [3] => chevrolet) |
2. унсетиш то, что ненужно, унсетим крайслер и получаем
Цитата |
Array ( [0] => ferrari [1] => dodge [3] => chevrolet ) ferrari, dodge, chevrolet |
3. и вносиш в бд уже без ненужного значения.
УПД: опередили пока писал теорию
Спустя 13 минут, 23 секунды (15.12.2009 - 21:24) kl95 написал(а):
Спасибо. . Все работает хорошо с тем, что предложил vagrand вариант 2. А вот то, что предложил Gabriel я не совсем понял. Все получаетсядо момента, когда надо заносить в базу.
Все выводит хорошо. А точнее так:
ferrari
dodge
chevrolet
Но как мне это занести в базу?
$sql = "SELECT `text` FROM `1`";
$result = mysql_query($sql); /*В переменную попадает ferrari,dodge,chrysler,chevrolet*/
$myrow = mysql_fetch_assoc($result);
$ex = explode(",",$myrow['text']);
unset($ex[2]);
foreach($ex as $i)
{echo $i."<br>";}
Все выводит хорошо. А точнее так:
ferrari
dodge
chevrolet
Но как мне это занести в базу?
mysql_query("UPDATE `1` SET `text`=ЧТО НАДО ВСТАВИТЬ???");
Спустя 1 час, 11 секунд (15.12.2009 - 22:24) Gabriel написал(а):
kl95
ну а что в переменной $ex содержиться?
ну а что в переменной $ex содержиться?
Спустя 14 минут, 16 секунд (15.12.2009 - 22:38) Romms написал(а):
kl95, тебе надо удалить с массива или с базы?
Спустя 3 минуты, 33 секунды (15.12.2009 - 22:42) Gabriel написал(а):
Romms
у него в базе лежит строка и из этой строки нужно удалить слово
у него в базе лежит строка и из этой строки нужно удалить слово
Спустя 11 часов, 46 минут, 1 секунда (16.12.2009 - 10:28) kl95 написал(а):
Из-за небольших непонятностей напишу подробно:
1 вариант(предложил vagrand).
2 варинт(предложил Gabriel).
1 вариант(предложил vagrand).
$sql = "SELECT `text` FROM `1`"; /* составляю запрос к базе */
$result = mysql_query($sql);
$myrow = mysql_fetch_assoc($result);/* в переменную $myrow['text'] попали данные ferrari,dodge,chrysler,chevrolet */
$myrow['text'] = str_replace(",chrysler","",$myrow['text']);/* удаляю слово ,chrysler */
mysql_query("UPDATE `1` SET `text`='$myrow[text]'");/*заношу обновленные данные */
2 варинт(предложил Gabriel).
$sql = "SELECT `text` FROM `1`"; /* составляю запрос к базе */
$result = mysql_query($sql);
$myrow = mysql_fetch_assoc($result);/* в переменную $myrow['text'] попали данные ferrari,dodge,chrysler,chevrolet */
$ex = explode(",",$myrow['text']); /* на этом этапе я разделил строку "ferrari,dodge,chrysler,chevrolet" на 4 отдельных слова Получилось так:
$ex[0] = "ferrari"; $ex[1] = "dodge"; $ex[2] = "chrysler"; $ex[3] = "chevrolet"; */
unset($ex[2]);/* удаляю слово ,chrysler */
mysql_query("UPDATE `1` SET `text`='ЧТО СЮДА НАДО ВСТАВИТЬ?'");/*заношу обновленные данные */
Спустя 5 часов, 49 минут, 33 секунды (16.12.2009 - 16:17) Gabriel написал(а):
kl95
хотя вот с удалением по числу все значительно интереснее ( мне так кажется ) а то вдруг не тот ключ передашь или в обработчике с этим ключем будет другое значение оно будет удалено(над этим подумаем позже).
<?php
$vals = 'ferrari,dodge,chrysler,chevrolet';
#если передаеш слово
$unset_val_sring = 'chrysler';
$exploded_sring = explode( ',' , $vals );
if ( in_array( $unset_val_sring, $exploded_sring ) )
$key = array_search( $unset_val_sring , $exploded_sring );
unset( $exploded_sring[$key] );
print_r( implode( ',' , $exploded_sring ) );#а вот это записываем в базу
# если передаеш число
$unset_val_int = '2';
$exploded_int = explode( ',' , $vals );
if ( in_array( $exploded_int[$unset_val_int], $exploded_int ) )
unset( $exploded_int[$unset_val_int] );
print_r( implode( ',' , $exploded_int ) );#а вот это записываем в базу
хотя вот с удалением по числу все значительно интереснее ( мне так кажется ) а то вдруг не тот ключ передашь или в обработчике с этим ключем будет другое значение оно будет удалено(над этим подумаем позже).