Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
1

Получить данные из строки, разделенной запятыми

03.04.2014, 22:11. Показов 6687. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Есть такая строчка ",139,2,75,1,1512,1,657,1,1511,1" где через запятую идут id товара и его кол-во.
Мне надо вывести товар и кол-во в виде таблицы
Наименование | количество.
Как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2014, 22:11
Ответы с готовыми решениями:

Дана строка с несколькими запятыми. Получить слово между первой и второй запятыми
Помогите пожалуйста:) Нужно прогу Дана строка с несколькими запятыми. Получите слово между первой...

Не обновляются данные в разделенной таблице формы
Помогите пожалуйста. Есть форма Карточка Новая. В нее заводят данные (через ф_Карточка_Новая) -...

Получить в строке символов разделённой пробелами количество слов начинающихся с ''d''
1)Получить в строке символов разделённой пробелами кол-во слов начинающихся с ''d''. 2)из строки...

Regex: получить подстроки между запятыми
Здравствуйте! Я столкнулся вот с такой проблемой: Есть строка типа: подстрока 1, подстрока...

34
14 / 14 / 8
Регистрация: 26.06.2013
Сообщений: 60
03.04.2014, 23:25 2
139,2 -это id132 и кол-во 2?
0
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
03.04.2014, 23:32  [ТС] 3
да.
0
7 / 7 / 5
Регистрация: 17.03.2014
Сообщений: 77
03.04.2014, 23:52 4
Вот например:

PHP
1
2
3
4
5
6
7
8
9
<?
$str="139,2,75,1,1512,1,657,1,1511,1";
$str_arr=explode(",",$str);
    for($i=0,$j=$i+1;$i<=count($str_arr),$j<=count($str_arr);$i=$i+2,$j=$i+1){
    echo "<table>";
    echo "<tr><td>$str_arr[$i]</td><td>$str_arr[$j]</td></tr>";
    echo "</table>";
    }
?>
Правда я только изучаю php так что не думаю, что это оптимальный вариант. Но во всяком случае он работает. Самому будет интересно узнать мнение опытных.
0
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
04.04.2014, 00:45 5
Цитата Сообщение от geee Посмотреть сообщение
Правда я только изучаю php так что не думаю, что это оптимальный вариант. Но во всяком случае он работает. Самому будет интересно узнать мнение опытных.
Если подредактировать твой код то лучше так:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$str="139,2,75,1,1512,1,657,1,1511,1";
$str_arr=explode(",",$str);
$size=count($str_arr);
$result='';
for($i=0;$i<$size;$i+=2)
{
    $result.=$str_arr[$i].'|'.$str_arr[$i-1].'<br>';
}
echo $result;
?>
Добавлено через 7 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$str="139,2,75,1,1512,1,657,1,1511,1";
$str_arr=explode(",",$str);
$size=count($str_arr);
$result='';
for($i=1;$i<$size;$i+=2)
{
    $result.=$str_arr[$i-1].'|'.$str_arr[$i].'<br>';
}
echo $result;
?>
Вот
0
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
04.04.2014, 06:35  [ТС] 6
ООО, спасибо огромное ребята!!!! Все понятно и просто! Как раз для меня)))
Но у меня строка начинается с запятой (,139,2,75,1,1512,1,657,1,1511,1), и из-за этого все значения, т.е. количество, смещаются на одну вниз.
139
2 75
1 1512
1 657
1 1511
1 1541
1 365
Как убрать эту запятуюю
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
04.04.2014, 08:37 7
Цитата Сообщение от Аппостол Посмотреть сообщение
Если подредактировать твой код то лучше так:
не лучше. начальная запятая это фишка используемая для корректной работы like '%$id,%' если ТС ее уберет - поломает систему
Цитата Сообщение от ZazulaJ Посмотреть сообщение
Как убрать эту запятуюю
не советую если конечно это не целиком ваш проект и вы его знаете от а до я
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
04.04.2014, 08:42 8
Цитата Сообщение от ads Посмотреть сообщение
Как убрать эту запятуюю
Если у Вас изначально
PHP
1
 $str=",139,2,75,1,1512,1,657,1,1511,1";
то
PHP
1
2
3
4
5
$str=",139,2,75,1,1512,1,657,1,1511,1";
if (substr($str,0,1) == ",")
{
$str = substr($str, 1);
}
0
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
04.04.2014, 11:15  [ТС] 9
На самом деле все просто, нужно начинать не с первого значения, а со второго

Добавлено через 1 минуту
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$str="139,2,75,1,1512,1,657,1,1511,1";
$str_arr=explode(",",$str);
$size=count($str_arr);
$result='';
for($i=2;$i<$size;$i+=2)
{
    $result.=$str_arr[$i-1].'|'.$str_arr[$i].'<br>';
}
echo $result;
?>
0
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
04.04.2014, 11:16 10
Кстати да)))
Только в теге PHP, BB коды не работают)
0
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
04.04.2014, 11:21  [ТС] 11
У меня все получилось, спасибо за помощь!!!

Добавлено через 3 минуты
Есть еще одна задача, может и с ней поможете?
Есть список заказов. На против каждого заказа есть checkbox, с помощью которого можно либо удалять ненужные заказы, либо отправлять их в архив.
Нужно создать массив, который будет собирать id заказов, которые надо удалить, либо переместить. Как при работе в MySQL, можно выбрать сразу несколько строк и удалить их или отредактировать.
Как он должен выглядеть? Заранее спасибо!
0
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
04.04.2014, 11:25 12
Ну к примеру сделать циклом:
PHP
1
2
3
4
foreach($_POST as $key=>$value)
{
    
}
$key - имена ячеек массива
$value - значение этой ячейки
Внутри цикла и делай свои махинации
0
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
07.04.2014, 16:16  [ТС] 13
Что-то у меня с циклом не получается. Помогите, пожалуйста!
Вот как он выглядит у меня
PHP
1
2
3
4
5
6
7
8
9
10
11
echo'<form action="" method="post">';
 
for($i=0;$i<$kolvo_new_zakaz;$i++)
                    {
                    $stroka_new_zakaz=mysql_fetch_assoc($dannye_new_zakaz);
 
echo '<label><tr>
<td><input type="checkbox" name="id[]" value="'; $stroka_new_zakaz['id']; echo '"></td>    
</tr> </label>';
                                         }
 echo 'Cделать с выделенным: <input type="submit" name="del" id="del" value="Удалить" title="Удалить"></form>';
И цикл:
PHP
1
2
3
4
5
6
7
8
9
if (isset($_POST['del']))
        {
                    if (isset($_POST['checked']))
            
                    {   
                    foreach($_POST as $key=>$value)
            {
                $up.=','.$key;
            }
Главная проблема, что при нажатии на checkbox флажок появляется, но при просмотре кода строка не отмечена 'checked', т.е. как будто ничего не выделено. И мне кажется, что из-за этого дальнейшие действия не производятся. В чем может быть дело?
0
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
07.04.2014, 18:00 14
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
echo'<form action="" method="post">';
 
for($i=0;$i<$kolvo_new_zakaz;$i++)
{
    $stroka_new_zakaz=mysql_fetch_assoc($dannye_new_zakaz);
    echo '<label><tr>
    <td><input type="checkbox" name="'.$i.'" value="'.$stroka_new_zakaz['id'].'"></td>
    </tr> </label>';
}
echo 'Cделать с выделенным: <input type="submit" name="del" id="del" value="Удалить" title="Удалить"></form>';
 
 
 
if (isset($_POST['del']))
{
    foreach($_POST as $key=>$value)
    {
        echo '$_POST["'.$key.'"] - '.$value;
    }
}
1
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
07.04.2014, 22:22  [ТС] 15
Спасибо, сейчас получается, только выводится еще и значение кнопки $_POST["0"] - 806$_POST["del"] - Удалить806.. как его можно убрать?
0
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
07.04.2014, 22:38 16
PHP
1
unset($_POST['del']);
Удаляет переменную
0
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
08.04.2014, 06:51  [ТС] 17
Сейчас удаление работает, но есть какое-то препятствие в коде. В начале этого блока стоит
PHP
1
if(!isset($_GET['id_new']))
, а в строчках, которые удаляются есть id_new. Может быть в этом причина невыполнения удаления? Но ведь они удаляются методом POST. Еще при попытке удалить выходит ошибка "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1", но в запросе никакой ошибки нет, он работает.
0
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
08.04.2014, 11:16 18
напиши код сюда
0
0 / 0 / 1
Регистрация: 03.04.2014
Сообщений: 72
08.04.2014, 11:49  [ТС] 19
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
if(!isset($_GET['id_new']))
        {
            echo '<h3>Новые заказы</h3>';
            
            if($kolvo_new_zakaz<1)
            {
                echo '<h4>У вас нет новых заказов</h4>';             
            }
                
            else
            {       
  
echo '<form action="" method="post"><table width="900" border="1" id="tab1">';
             
                
                 for($i=0;$i<$kolvo_new_zakaz;$i++)
                    {
                    $stroka_new_zakaz=mysql_fetch_assoc($dannye_new_zakaz);                 
            
                echo '<label><tr>
                <td min-height="25"><a href="index.php?list=2&zakaz=new&id_new='.$stroka_new_zakaz['id'].'">'.$stroka_new_zakaz['id'].'</a></td>
                <td>'.$stroka_new_zakaz['day'].'.'. $stroka_new_zakaz['month'].'.'. $stroka_new_zakaz['year'].'</td>
                <td>'.$stroka_new_zakaz['id_user'].'</td>
                <td>'.$stroka_new_zakaz['i_name'].'</td>
                <td>'.$stroka_new_zakaz['s_name'].'</td>
                <td>'.$stroka_new_zakaz['adress'].'</td>
                <td>'.$stroka_new_zakaz['telephon'].'</td>
                <td>'.$stroka_new_zakaz['email'].'</td>
                <td>'.$stroka_new_zakaz['primech'].'</td>
                <td><input type="checkbox" name="'.$i.'" value="'.$stroka_new_zakaz['id'].'"></td>    
             </tr> </label>';             
                    }  
                                        
                echo '</table>
            <div id="flag"> Cделать с выделенным: <input type="submit" name="del" id="del" value="Удалить" title="Удалить"></form>';
Добавлено через 44 секунды
И запрос
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (isset($_POST['del']))
{
    unset($_POST['del']);
 
    foreach($_POST as $key=>$value)
    
    {
        $up.= ",".$value;
    $del.=$_POST["$key"] - $value;
    }
    $up=substr($up, 1);
    echo $up;
 
                        $stroka_zaprosa_delzakaz="DELETE FROM zakaz WHERE id in(".$up.")";
                        $dannye_delzakaz=mysql_query($stroka_zaprosa_delzakaz, $connect) or die(mysql_error()) ;                        
                        if(mysql_affected_rows()>0) 
                         {
                         header('location:index.php?list=2&zakaz=new'); 
                         }  
}
0
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
08.04.2014, 13:36 20
если значение $up числовое то:
PHP
1
$stroka_zaprosa_delzakaz="DELETE FROM zakaz WHERE id=".$up;
если строковое:
PHP
1
$stroka_zaprosa_delzakaz="DELETE FROM zakaz WHERE id='".$up."'";
0
08.04.2014, 13:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2014, 13:36
Помогаю со студенческими работами здесь

Вывод подстроки из строки разделённой \n
Есть переменные. В строке имя и MAC адрес устройства разделённые пробелом: &quot;Name...

Как получить стринглист из списка строк, разделённых запятыми?
Есть var s:string; begin s:= 'Com1,Com2,Com3,Com15'; end; Нужно получить из этой строки...

Получить конкретные данные со строки
Здравствуйте. Мне надо отловить версию браузера пользователя. Допустим: UserAgent =...

Получить данные из строки ListView
Приветствую всех участников форума. В ListView набор строк и несколько столбцов. Нужно чтобы при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru