ассоциативный массив.

phpusershik

Using PHP
ассоциативный массив.

У меня есть такой ассоциативный массив [0] он начинает нумерацию с нуля как зделать что-бы начал с единицы.
 

Tor

Новичок
зачем?

хотя тебя, думаю, вполне устроит
unset($array[0]);
 

Фанат

oncle terrible
Команда форума
phpusershik
а теперь ещё раз и более понятно.
что за массив, зачем, что ты с ним хочешь сделать.
с примерами
 

phpusershik

Using PHP
Автор оригинала: Фанат
phpusershik
а теперь ещё раз и более понятно.
что за массив, зачем, что ты с ним хочешь сделать.
с примерами
Спасибо разобрался.
Ты лучше мне разреши показать другой пример с массивом.

-~{}~ 22.03.05 12:23:

Ну давай- дай наконец возможность я покажу пусть народ мне поможет?
 

Фанат

oncle terrible
Команда форума
я не понял - ты у меня разрешения спрашиваешь?
вопрос задать на форкме?
а с чего это вдруг?
а чего на прошлые вопросы не спрашивал?
 

phpusershik

Using PHP
Я в форуме наткнулся на сообщение SelenIT как из селекта автоматом значение ставит в текстовой импут.
у меня был тоже скрипт который я нашёл раньше и я его добавил к своему то есть "пришил" - но когда я делаю Add новую строку таблицы то скрипт SelenIT не хочет работат как я понял проблема в том что в скрипте SelenIT переменную str надо перевести в массив но я слаб для этого не знаю как это сделать посмтр. плз вниз:

http://phpclub.ru/talk/showthread.p...mp;pagenumber=2

А это мой код с пришитым к нему скриптом SelenIT:

<script>
var c=0;
function addline()
{
c++;
s=document.getElementById('tabled').innerHTML;
s=s.replace(/[\r\n]/g,'');
re=/(.*)(<tr id=.*> )(<\/table> )/gi;
s1=s.replace(re,'$2');
s2=s1.replace(/\[\d+\]/gi,'['+c+']');
s2=s2.replace(/(rmline\()(\d+\))/gi,'$1'+c+')');
s=s.replace(re,'$1$2'+s2+'$3');
document.getElementById('tabled').innerHTML=s;
return false;
}
function rmline(q)
{
if (c==0) return false; else c--;
s=document.getElementById('tabled').innerHTML;
s=s.replace(/[\r\n]/g,'');
re=new RegExp('<tr id="?newline"? nomer="?\\['+q+'.*?<\\/tr>','gi');
s=s.replace(re,'');
document.getElementById('tabled').innerHTML=s;
return false;
}
</script>

<script>
// Это второй скрипт
function addValue(what) {


document.myform.str.value = '';

for (i=0;i<what.length;i++) {

if (what.selected) {

if (document.myform.str.value)

document.myform.str.value += ' ';



document.myform.str.value +=

what.text;
}
}
}
</script>
<?
echo "<form action=\"mdns_add.php\" method=\"post\" onsubmit=\"return ProcessSubmit();\" name=\"myform\">";
echo "<span id=\"tabled\">";
echo "<table border=0 cellspacing=0 cellpadding=3 width=\"100%\">";
echo "<tr><td bgcolor=\"#CCFFCC\">ID-Part No-Description-QTY:</td><td bgcolor=\"#CCFFCC\">Ordered QTY:</td><td bgcolor=\"#CCFFCC\">Delivered QTY:</td><td>";
echo "<a href=\"#\" onclick=\"return addline();\">Add</a></td></tr>";
echo "<tr id=\"newline\" nomer=\"[0]\">";
echo "<td><select size=\"1\" name=\"id[0]\" onchange=\"addValue(this);\">";
echo "<option value=\"\">Choose No</option>";
$sql = "SELECT mid,mdes,mpart,mqty FROM mshop ORDER by mid";
$result = mysql_query($sql,$db);
for ($i = 0; $i < @mysql_num_rows($result); $i++) {
$mid = mysql_result($result, $i, "mid");
$mdes = mysql_result($result, $i, "mdes");
$mpart = mysql_result($result, $i, "mpart");
$mqty = mysql_result($result, $i, "mqty");
echo "<option value=\"$mid\"> ($mid) - $mpart - $mdes || $mqty </option>";
}
echo "</select><input type=\"text\" name=\"str\" value=\"\">";

echo "</td>";
echo "<td><input type=\"text\" size=\"4\" MAXLENGTH=\"5\" name=\"dndateo[0]\"></td>";
echo "</td><td><input type=\"text\" size=\"4\" MAXLENGTH=\"5\" name=\"dndated[0]\"></td>";
echo "<td valign=\"top\"><a href=\"#\" onclick=\"return rmline(0);\">Delete</a></td></tr>";
echo "</table>";
echo "</span>";

Если можно на моем примере покажите плз.

-~{}~ 22.03.05 12:33:

Автор оригинала: Фанат
я не понял - ты у меня разрешения спрашиваешь?
вопрос задать на форкме?
а с чего это вдруг?
а чего на прошлые вопросы не спрашивал?
Ну потому что я боюсь ты закроеш тему потому что мой код больше 15 строк.....
 

Panchous

Павел
phpusershik
ну как ты не поймешь?!
Таким методом ты ничего не добьешься:
либо ты задаешь конкретный вопрос и приводишь ТОЛЬКО проблемный код.
Либо спрашиваешь о правильном решении своей задачи.

если же ты
слаб для этого
то рекомендую начать с самых основ:
Купи книжку по HTML, PHP (потом и про базы данных можно почитать) - и в путь!

Иначе ты только зря потеряешь время на этом форуме.
 

phpusershik

Using PHP
Но вот тогда конкретный вопрос:
как связать выше приведенный второй скрипт с первым через - getElementById ???
 

Panchous

Павел
phpusershik
это не вопрос!

подумай еще. твой скрипт никого не интересует.
что значит "связать"?
 

phpusershik

Using PHP
Автор оригинала: Panchous
phpusershik
это не вопрос!

подумай еще. твой скрипт никого не интересует.
что значит "связать"?
Как можно применит современный синтаксис через getElementById() во втором скрипте?
Это тоже не правильно что-ли :-/
 

Panchous

Павел
phpusershik
прочти сам свой вопрос.
что ты хочешь?
опиши задачу (без всяких скриптов и кода)
 

phpusershik

Using PHP
Автор оригинала: phpusershik
Описание:

Как только страница загружается на этой странице есть один селект и один текстовое поле инпута. И это всё расположенио на первой и единственной строке таблицы. И с помощью JS у нас есть возможность создавать несколько строк на таблице (Add) и соответственнно с содержимым (селектом и инпутом) что-есть у него внутри и так-же удалять их (Delete). Но вот в чём фича:
Когда только у нас после загрузки стр. одна строка таблицы то есть один селект и инпут поля то при выборе на селекте он передает значение автоматически (с помощью второго скрипта JS) на текстовое поле инпута и там отображается значение выбранного селекта. Это все отлично я рад за это. Но вот проблема в том что когда я создаю с помощью кнопки Add (скрипт первый это делает) вторую или не имеет значение 10-ую строку соответсвенно (10 селектов и 10 текстовых инпутов) то поле селект ни в каком ни в первом и ни на 10-ом не передает автоматически выбранные значения из селекта в инпут соответсвующего строки......

Надеюсь ясно изложил проблему ....
 

phpusershik

Using PHP
Автор оригинала: Panchous
Это из-за того, что все твои input'ы имеют одинаковые ID.
Вот точно в цель ты попал.
Они все у меня получаются вот такими:

<input type=\"text\" name=\"str\" value=\"\">";


И нужно его написать вот так:

<input type=\"text\" name=\"str[0]\" value=\"\">";

Но тогда тоже не работает потомучто массив на втором скрипте не описан то есть там такого имени нету str[0].
А вот как туда добавить этот массив на второй скрипт?
 

phpusershik

Using PHP
Автор оригинала: Tor
надо
<input type=\"text\" name=\"str[]\" value=\"\">";
Поробовал так тоже не работает. он так даже приодном селекте - инпуту тоже не передает значения.

-~{}~ 22.03.05 14:15:

SelenIT как то сказал что можно применит современный синтаксис через getElementById(). Но приблизительно как это зделать одну строку образца хотя-бы.
 

Panchous

Павел
а где код, который добавляет новые select и input?

для получения выбранного значения в select'e надо использовать:
sel.options[sel.selectedIndex].value
вместо твоего корявого цикла.

осталось только сказать, куда положить выбранное значение.
Это можно сделать, передавая в функцию ID input'a или его номер в массиве
 

phpusershik

Using PHP
Автор оригинала: Panchous
а где код, который добавляет новые select и input?

для получения выбранного значения в select'e надо использовать:
sel.options[sel.selectedIndex].value
вместо твоего корявого цикла.

осталось только сказать, куда положить выбранное значение.
Это можно сделать, передавая в функцию ID input'a или его номер в массиве
Вот он:
<script>
var c=0;
function addline()
{
c++;
s=document.getElementById('tabled').innerHTML;
s=s.replace(/[\r\n]/g,'');
re=/(.*)(<tr id=.*> )(<\/table> )/gi;
s1=s.replace(re,'$2');
s2=s1.replace(/\[\d+\]/gi,'['+c+']');
s2=s2.replace(/(rmline\()(\d+\))/gi,'$1'+c+')');
s=s.replace(re,'$1$2'+s2+'$3');
document.getElementById('tabled').innerHTML=s;
return false;
}
function rmline(q)
{
if (c==0) return false; else c--;
s=document.getElementById('tabled').innerHTML;
s=s.replace(/[\r\n]/g,'');
re=new RegExp('<tr id="?newline"? nomer="?\\['+q+'.*?<\\/tr>','gi');
s=s.replace(re,'');
document.getElementById('tabled').innerHTML=s;
return false;
}
</script>

Пожалуйста если можно ты уже нашёл выход пояснее покажи:
 

Panchous

Павел
а где ты эти функции надыбил?
и с .5 не разобраться)

-~{}~ 22.03.05 15:00:

по-моему, у тебя изначально решение неправильное...
 
Сверху