Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Переменные в строке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
San4ezzz
Отправлено: 19 Июня, 2007 - 04:51:14
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  
Откуда: Черногрск, респ. Хакасия


Помог: 0 раз(а)





Задача:
Формирую url адрес, вот такой:
"www[dot]mysite[dot]ru/page.php?val1=hell[dot][dot][dot]ld&str=$val1 $val2"
имеем переменные $val1=hello, $val2=world и $str="$val1 $val2"
хочется чтобы в переменную str подставились значения val1 и val2
и вывелось, например, функцией print($str) строка "hello world".
Проблема:
Вместо желаемого выводится строка "$val1 $val2".

Подскажите как решается такая задача?
 
 Top
evgenijj
Отправлено: 19 Июня, 2007 - 08:32:02
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if ( isset( $_GET["var1"] ) )
  4. {
  5.   echo $_GET["var1"]."<br/>";
  6.   echo $_GET["var2"]."<br/>";
  7.   echo $_GET["var3"]."<br/>";
  8. }
  9. else
  10. {
  11.   $var1 = "Привет";
  12.   $var2 = "Мир";
  13.   $var3 = $var1." ".$var2;
  14.   $url = "hello.php"."?var1=".urlencode($var1).
  15.                      "&var2=".urlencode($var2).
  16.                      "&var3=".urlencode($var3);
  17.   echo "<a href=".$url.">Ссылка</a>";
  18. }
  19. ?>
  20.  
 
 Top
San4ezzz
Отправлено: 19 Июня, 2007 - 09:37:51
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  
Откуда: Черногрск, респ. Хакасия


Помог: 0 раз(а)




Нет это не то что мне нужно.
Приведу пример php-кода иллюстрирующего мою задачу
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. function ShowForm()
  5. {
  6.   $names[0]="val1";
  7.   $names[1]="val2";
  8.   $str="$".$names[0]." $".$names[1];
  9. ?>
  10.   <form name=mainform action="<?=$_SERVER["PHP_SELF"]?>" method=GET>
  11.   <table>
  12.     <tr>
  13.       <td>
  14.         <input type=text name=<?=$names[0]?>>
  15.       </td>
  16.       <td>
  17.         <input type=text name=<?=$names[1]?>>
  18.       </td>
  19.       <td>
  20.         <input type=hidden name=str value="<?=$str?>">
  21.         <input type=submit>
  22.       </td>
  23.     </tr>
  24.   </table>
  25.   </form>
  26. <?
  27. }
  28.  
  29.   if (isset($str)):
  30.     print($str);
  31.   else:
  32.     ShowForm();
  33.   endif;
  34.  
  35.  ?>
  36.  
  37.  
 
 Top
Andrey
Отправлено: 19 Июня, 2007 - 10:53:26
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




Вот код

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.         <input type=hidden name=str value="<? echo '='.$str; ?>">
  4.    
  5.  
 
 Top
evgenijj
Отправлено: 19 Июня, 2007 - 10:55:54
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Все равно непонятно. Во-первых, неясно что вот это означает
PHP:
скопировать код в буфер обмена
  1.  
  2. <input type=text name=<?=$names[0]?>>
  3. <input type=text name=<?=$names[1]?>>
  4.  

Может быт так
PHP:
скопировать код в буфер обмена
  1.  
  2. <input type=text name="name" value=<?=$names[0]?>>
  3. <input type=text name="surname" value=<?=$names[1]?>>
  4.  

А в переменную $_GET["str"] должно попасть значение, "склеенное" из значений name и surname, введенных пользователем? Тогда ты путаешь понятия программирования на стороне клиента (JavaScript) и программирования на стороне сервера (PHP).
 
 Top
San4ezzz
Отправлено: 19 Июня, 2007 - 11:26:20
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  
Откуда: Черногрск, респ. Хакасия


Помог: 0 раз(а)




Дело в том, что заранее я не знаю сколько у меня на странице будет полей ввода и соответственно их имена. Они генерируются динамически и соответствуют количеству полей в таблице базы данных. А имена этих полей ввода соответствуют именам полей таблицы БД.
Т.е. по сути генерируется табличка для редактирования/добавления значений таблицы БД.
 
 Top
valenok Модератор
Отправлено: 19 Июня, 2007 - 14:03:01
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




а откуда ты знаешь сколько всяких полей в БД
откуда ты знаешь как на этой основе строить форму,
и наконец как выходит что ты не знаешь потом сколько у тебя полей?

Потом
< input name='field_name' value='Вася'>
foreach ($_GET as $key => $val){
UPDATE `tbl` SET $key = $val
}


а то что тебе нужно:
PHP:
скопировать код в буфер обмена
  1.  
  2. <a href='url.php?var=hello&bar=word'> hhh </a>
  3.  
  4. <?PHP
  5. echo "Var:".$_GET['var'];
  6. echo "Bar:".$_GET['bar'];
  7. $string = $_GET['bar'].$_GET['var'];
  8. echo "String: ".$string;
  9.  


-----
Truly yours, Sasha.
 
My status
 Top
San4ezzz
Отправлено: 20 Июня, 2007 - 03:33:10
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  
Откуда: Черногрск, респ. Хакасия


Помог: 0 раз(а)




valenok пишет:

а то что тебе нужно:
PHP:
скопировать код в буфер обмена
  1.  
  2. <a href='url.php?var=hello&bar=word'> hhh </a>
  3.  
  4. <?PHP
  5. echo "Var:".$_GET['var'];
  6. echo "Bar:".$_GET['bar'];
  7. $string = $_GET['bar'].$_GET['var'];
  8. echo "String: ".$string;
  9.  

Это примерно тоже самое, что мне предложил evgenijj выше. Те же яйца только с другой стороны.
Усложню свой пример, может станет яснее чего я хочу:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. /*================================================================
  4.    Выводит форму для добавления записей в таблицу БД $table
  5.    Перед выводом выполняет скрипт переданный в переменной $script
  6. ================================================================*/
  7. function ShowForm($table,$script,$mysqlid)
  8. {
  9.   //В начале выполняем скрипт
  10.   if (strlen($script)>0):
  11.     mysql_query($script);
  12.   endif;
  13.   //получем список полей таблицы
  14.   $fields=mysql_query("show columns from ".$table);
  15.   $i=0;
  16.   // формируем скрипт для добавления записи в таблицу
  17.   $insertscript[0]="insert into $table(";
  18.   $insertscript[1]=" values(";
  19.   while ($row = mysql_fetch_row($fields)):
  20.     // в массив $names помещаем имена полей таблицы
  21.     $names[$i] = $row[0];
  22.     // к скрипту дописываем список полей в которые добавляем
  23.     $insertscript[0].= $names[$i].", ";
  24.     $insertscript[1].= "$".$names[$i].", ";
  25.     $i+=1;
  26.   endwhile;
  27.   $fieldscount=count($names); //количество полей
  28.   //удаляем поледние запятые
  29.   $insertscript[0]=substr($insertscript[0],0,strlen($insertscript[0])-2).")";
  30.   $insertscript[1]=substr($insertscript[1],0,strlen($insertscript[1])-2).")";
  31.   // склеиваем строку и получаем что-то вида insert into ... values...
  32.   $insertscript[0].=" ".$insertscript[1];
  33.  
  34. ?>
  35.   <form name=mainform action="<?=$_SERVER["PHP_SELF"]?>" method=GET>
  36.   <table>
  37.     <tr>
  38.       <?
  39.         // в цикле выводим поля ввода для каждого поля таблицы БД
  40.         for($i=0;$i<$fieldscount;$i+=1):
  41.           print("<input type=text name=".$names[$i].">");//имена соответствуют именам колонок таблицы БД
  42.         endfor;
  43.       ?>
  44.       <td>
  45.         <!--элемент hidden служит для передачи в функцию крипта на добавление строки в таблицу БД-->
  46.         <input type=hidden name=script value="<?=$insertscript[0]?>">
  47.         <!--а это кнопка для отправки значений формы на сервер методом GET-->
  48.         <input type=submit>
  49.       </td>
  50.     </tr>
  51.   </table>
  52.   </form>
  53. <?
  54. }
  55.  
  56.   $mysqlid=mysql_connect("localhost","root","") or die("Не подключился");
  57.   mysql_select_db("bell") or die("Нет бызы");
  58.  
  59.   if (isset($script)):
  60.     //если нажали на кнопку submit просто выведет сформированный запрос на экран
  61.     print($script."<br>");
  62.   else:
  63.     $script="";
  64.     ShowForm("cnf",$script,$mysqlid);
  65.   endif;
  66.  
  67.  ?>
  68.  
 
 Top
evgenijj
Отправлено: 20 Июня, 2007 - 08:48:26
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




San4ezzz пишет:

Это примерно тоже самое, что мне предложил evgenijj выше. Те же яйца только с другой стороны.
Усложню свой пример, может станет яснее чего я хочу:

Прочитал твой скрипт. Я в шоке. Слов нет -- одни междометия. Может быть, как-нибудь попроще?

http://forum.php.su/topic.php?fo...=28&topic=34
 
 Top
San4ezzz
Отправлено: 20 Июня, 2007 - 10:30:07
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  
Откуда: Черногрск, респ. Хакасия


Помог: 0 раз(а)




evgenijj пишет:
San4ezzz пишет:

Это примерно тоже самое, что мне предложил evgenijj выше. Те же яйца только с другой стороны.
Усложню свой пример, может станет яснее чего я хочу:

Прочитал твой скрипт. Я в шоке. Слов нет -- одни междометия. Может быть, как-нибудь попроще?

http://forum.php.su/topic.php?forum=28&topic=34

Спасибо и на этом.
А проще я приводил в самом начале этой темы. Важно здесь не то как я хочу редактировать таблицу БД, а как можно было бы, содержащиеся в строке имена переменных подменить на их значения.
 
 Top
evgenijj
Отправлено: 20 Июня, 2007 - 11:33:42
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Вообще тебе сюда: http://phpfaq[dot]ru/na_tanke - для тех, кто в танке. Повторяю еще раз -- ты путаешь понятия программирования на стороне клиента и сервера. Заполнить поле элемента формы
<input type=hidden name=script value="">
можно средствами JavaScript, добавив обработчик события onSubmit. Но зачем, если эти поля и так будут доступны в скрипте, который обрабатывает данные формы?

А по поводу жестких и символических ссылок:
PHP:
скопировать код в буфер обмена
  1.  
  2. // жесткая ссылка
  3. $x = 77;
  4. $link = &$x;
  5. $link = 66;
  6. echo $link; // выводит 66
  7. echo $x; // выводит 66
  8.  

PHP:
скопировать код в буфер обмена
  1.  
  2. // символическая ссылка
  3. $x = 77;
  4. $link = "x";
  5. echo $$link; // выводит 77
  6. echo $link; // выводит x
  7. $$link = 66;
  8. echo $x; // выводит 66
  9.  
  10.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB