Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Разобрать и собрать массив

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: Lotanaen   (22.09.2011 в 15:38)   письмо автору
 
   для: tima2010   (22.09.2011 в 15:15)
 

а такой вариант попробуйте:


<?php

if (sizeof($_POST['myarray'])) {
    
    
$valuearrfull = array();
    
$query "SELECT * FROM mytable ORDER BY `sorting`";
    
$res mysql_query($query) or die(mysql_error());
    while (
$row mysql_fetch_array($res)) 
        
$valuearrfull[$row['sorting']] = $row['myaddtext']." - ".$_POST['myarray'][$row['sorting']];

}


echo 
"<pre>";  
print_r($valuearrfull);  
echo 
"<pre>"

?>

  Ответить  
 
 автор: tima2010   (22.09.2011 в 15:23)   письмо автору
 
   для: Lotanaen   (22.09.2011 в 15:11)
 

Все понял! Лишние скобки поставил....
Спасибо Lotanaen!!!

  Ответить  
 
 автор: tima2010   (22.09.2011 в 15:15)   письмо автору
 
   для: Lotanaen   (22.09.2011 в 15:11)
 

не используется :( перед циклом получаю:


Array
(
    [5] => Текст пятый 
    [6] => Текст шестой
)


сразу после вашего способа вывожу массив вижу:

Array 

    [5] => Добавили текст 1 ТЕКСТ ПЯТЫЙ // верно 
    [] => ТЕКСТ ШЕСТОЙ 
    [6] => Добавили текст 2 ТЕКСТ ШЕСТОЙ // верно  

  Ответить  
 
 автор: Lotanaen   (22.09.2011 в 15:11)   письмо автору
 
   для: tima2010   (22.09.2011 в 14:18)
 

а вы этот массив ранее не используете? перед циклом объявите его

  Ответить  
 
 автор: tima2010   (22.09.2011 в 15:03)   письмо автору
 
   для: tima2010   (22.09.2011 в 14:18)
 

придется удалять первое значение массива типа unset ?

  Ответить  
 
 автор: tima2010   (22.09.2011 в 14:18)   письмо автору
 
   для: Lotanaen   (22.09.2011 в 13:57)
 

пожалуйста извините вариант рабочий я не верно понял принцип его работы...

одна проблема в этом варианте, добавляется лишнее значение


Array
(
    [] => ТЕКСТ ШЕСТОЙ
    [5] => Добавили текст 1 ТЕКСТ ПЯТЫЙ // верно 
    [6] => Добавили текст 2 ТЕКСТ ШЕСТОЙ // верно 
)


будто foreach насчитал 3 а не 2

зачем то пихает последнее значение $value еще раз

  Ответить  
 
 автор: tima2010   (22.09.2011 в 14:07)   письмо автору
 
   для: cheops   (22.09.2011 в 13:52)
 

Код скрипта:

В sql есть данные:
sorting - порядок отображения
myaddtext - добавляемый текст

Форма:

<form method="POST" action="index.php" name="update">
<?php
$query 
"SELECT * FROM mytable ORDER BY `sorting`";
$res mysql_query($query) or die(mysql_error());
while (
$row mysql_fetch_array($res)) {
echo 
'<input type="text" name="myarray['.$row['sorting'].']"> <br />'// где sorting это порядок отображения
}
?>
<input type="submit" value="Go" name="mybutton">
</form>


После нажатия к каждому введенному тексту через INPUT TEXT нужно добавить значение myaddtext из базы данных И при этом сохранить массив

Обработка массива:


<?php
if (isset($_POST['mybutton'])) {

$query "SELECT * FROM mytable ORDER BY `sorting`";
$res mysql_query($query) or die(mysql_error());
foreach(
$_POST['myarray'] as $key => $value)
{
while (
$row mysql_fetch_array($res)) {
$valuearr $row['myaddtext']." - ".$value// сюда не могу передать все значения что бы к каждому добавить нужный текст, передается только первое значение массива myarray
$valuearrfull[$row['sorting']] = $valuearr;  
}
}

}
?>


в этом коде выводит

Array 

    [5] => Добавили текст 1 текст ПЯТЫЙ // верно  
    [6] => Добавили текст 2 текст ПЯТЫЙ // не верно, должен быть текст ШЕСТОЙ



примерно так

  Ответить  
 
 автор: Lotanaen   (22.09.2011 в 13:57)   письмо автору
 
   для: tima2010   (22.09.2011 в 13:47)
 

я же вам приводил пример раньше - вас он чем-то не устроил...


<?php
$query 
"SELECT * FROM mytable ORDER BY `myid`";
$res mysql_query($query) or die(mysql_error());
while (
$row mysql_fetch_array($res)) 
    
$tmp[] = $row;

$i=0;
foreach(
$_POST['myarray'] as $key=> $value) { // раскрываем массив
    
    
$valuearr$tmp[$i]['myaddtext'].$value// к содержимому тексту массива добавляем из базы текст
    
$valuearrfull[$key] = $valuearr;  // формируем обратно массив
     
$i++;  
}

echo 
"<pre>";  
print_r($valuearrfull);  
echo 
"<pre>"


/*
Array  
(  
    [myarray] => Array  
        (  
            [5] => Добавили текст 1 ТЕКСТ ПЯТЫЙ // верно
            [5] => Добавили текст 2 ТЕКСТ ПЯТЫЙ // НЕ ВЕРНО должен быть шестой
        )  

    [mybutton] => Submit  
)
*/
?> 

  Ответить  
 
 автор: cheops   (22.09.2011 в 13:52)   письмо автору
 
   для: tima2010   (22.09.2011 в 13:47)
 

Как у вас сейчас выглядит скрипт и что он выводит?

  Ответить  
 
 автор: tima2010   (22.09.2011 в 13:47)   письмо автору
 
   для: Lotanaen   (22.09.2011 в 13:30)
 

Уважаемые cheops и Lotanaen, спасибо за терпение но в обоих случаях теперь принимается только второе значение переменной $value в цикле... (

p.s. сошел с ума

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования