Syntax error unexpected token foreach

I've got a syntax error on my foreach. I want to select from my backoffice a text file which write all eamil from site. I want to only get email from my database and put them into a text file write...

I’ve got a syntax error on my foreach. I want to select from my backoffice a text file which write all eamil from site. I want to only get email from my database and put them into a text file write in my hard disk.

<?php
    if (!defined('_PS_VERSION_'))
        exit;

    class SuperModule extends Module
    {
        public function __construct()
        {
            $this->name = 'supermodule';
            $this->tab = 'administration';
            $this->version = 1.0;
            $this->author = 'Lelu Matthias';
            $this->need_instance = 0;
            $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); 
            $this->bootstrap = true;
            parent::__construct(); 
            $this->displayName = $this->l('My super module');
            $this->description = $this->l('This module is super !'); 
            $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');
            if (!Configuration::get('MYMODULE_NAME'))
                $this->warning = $this->l('No name provided.'); 
        }
        public function install()
        {
            if (Shop::isFeatureActive())
                Shop::setContext(Shop::CONTEXT_ALL);
            return parent::install() &&
                $this->registerHook('displayNav') &&
                $this->registerHook('header') &&
                Configuration::updateValue('MYMODULE_NAME', 'super module') &&
                    Configuration::updateValue('MOD_SUPERMODULE_OPENINGHOURS', 'Ouvert de 9h a 19h') && Configuration::updateValue('MOD_SUPERMODULE_NEWSLETTER', '0');
        }
        public function uninstall()
        {
            return parent::uninstall();
        }
        public function getContent()
        {
            $output = null;
            if (Tools::isSubmit('submit_openinghours'))
            {
                $supermodule_openinghours = Tools::getValue('MOD_SUPERMODULE_OPENINGHOURS');
                if (!$supermodule_openinghours  || empty($supermodule_openinghours) || !
                    Validate::isGenericName($supermodule_openinghours))
                    $output .= $this->displayError( $this->l('Invalid Configuration value') );
                else
                {
                    Configuration::updateValue('MOD_SUPERMODULE_OPENINGHOURS', 
                                               $supermodule_openinghours);
                    $output .= $this->displayConfirmation($this->l('Settings updated'));
                }
            }
            if (Tools::isSubmit('submit_exportnewsletter'))

            {   
                $id_option = Tools::getValue('MOD_SUPERMODULE_NEWSLETTER');
             $output .=$id_option;
                $txt="";
                if($id_option ==1)
                {
                    (foreach $newsletter as $row)
                    {
                    $text.=$row['email'];}
                    $table='newsletter';

                }
                else 
                {
                    (foreach $customer as $row)
                    {
                    $text.=$row['email'];
                    }
                    $table='customer';
                }

                $date = gmdate('dmY');
                $file = fopen(dirname(__FILE__).'/export-newsletter-'.$table.'-'.
                              $date.'.txt', 'w');
                fputs($file, $txt);
                fclose($file);

            }
            return $output.$this->displayForm1().$this->displayForm2();
        }
        public function displayForm1()
        {
            $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');

            $fields_form[0]['form'] = $this->formulaire1();

            $helper = new HelperForm();

            // Module, token and currentIndex
            $helper->module = $this;
            $helper->name_controller = $this->name;
            $helper->token = Tools::getAdminTokenLite('AdminModules');
            $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;

            // Language
            $helper->default_form_language = $default_lang;
            $helper->allow_employee_form_lang = $default_lang;

            // Title and toolbar
            $helper->title = $this->displayName;
            $helper->show_toolbar = true;
            $helper->toolbar_scroll = true;
            $helper->submit_action = 'submit'.$this->name;
            $helper->toolbar_btn = array(
                'save' =>
                array(
                    'desc' => $this->l('Save'),
            'href' => AdminController::$currentIndex.'&configure='.$this->
                    name.'&save'.$this->name.
                    '&token='.Tools::getAdminTokenLite('AdminModules'),
                ),
                'back' => array(
                    'href' => AdminController::
                    $currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
                    'desc' => $this->l('Back to list')
                )
            );

            // Load current value
            $helper->fields_value['MOD_SUPERMODULE_OPENINGHOURS'] = 
                Configuration::get('MOD_SUPERMODULE_OPENINGHOURS');
            return $helper->generateForm($fields_form);
        }
        protected function formulaire1()
        {
            return array(
                'legend' => array(
                    'title' => $this->l('Opening hours'),
                ),
                'input' => array(
                    array(
                        'type' => 'text',
                        'label' => $this->l('Opening hours'),
                        'name' => 'MOD_SUPERMODULE_OPENINGHOURS',
                        'size' => 20,
                        'required' => true
                    ),
                ),
                'submit' => array(
                    'name' => 'submit_openinghours',
                    'title' => $this->l('Save')
                )
            );
        }
        protected function formulaire2()
        {
            $options = array(
                array(
                    'id_option' => 0, 
                    'name' => $this->l('Customer table')
                ),
                array(
                    'id_option' => 1,
                    'name' => $this->l('Newsletter table')
                ),
            );
            return array(
                'legend' => array(
                    'title' => $this->l('Newsletter export'),
                ),
                'input' => array(
                    array(
                        'type' => 'select',
                        'label' => $this->l('Choice a table'),
                        'name' => 'MOD_SUPERMODULE_NEWSLETTER',
                        'desc' => $this->l('Please choice a table.'),
                        'options' => array(
                            'query' => $options, 
                            'id' => 'id_option', 
                            'name' => 'name'
                            ),
                        ),
                    ),
                    'submit' => array(
                            'name' => 'submit_exportnewsletter',
                            'title' => $this->l('Save')
                    )
            );
    }
        public function displayForm2()
        {
            $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');

            $fields_form[0]['form'] = $this->formulaire2();

            $helper = new HelperForm();

            // Module, token and currentIndex
            $helper->module = $this;
            $helper->name_controller = $this->name;
            $helper->token = Tools::getAdminTokenLite('AdminModules');
            $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;

            // Language
            $helper->default_form_language = $default_lang;
            $helper->allow_employee_form_lang = $default_lang;

            // Title and toolbar
            $helper->title = $this->displayName;
            $helper->show_toolbar = true;  
            $helper->toolbar_scroll = true;  
            $helper->submit_action = 'submit'.$this->name;
            $helper->toolbar_btn = array(
                'save' =>
                array(
                    'desc' => $this->l('Save'),
    'href'=>AdminController::$currentIndex.'&configure='.$this->name.
                    '&save'.$this->name.
                    '&token='.Tools::getAdminTokenLite('AdminModules'),
                ),
                'back' => array(
                    'href' => AdminController::
                    $currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
                    'desc' => $this->l('Back to list')
                )
            );
            // Load current value
            $helper->fields_value['MOD_SUPERMODULE_NEWSLETTER'] = 
                Configuration::get('MOD_SUPERMODULE_NEWSLETTER');
            return $helper->generateForm($fields_form);
        }
        public function hookDisplayNav($params)
        {
            $ma_variable = Configuration::get('MOD_SUPERMODULE_OPENINGHOURS');
            $this->context->smarty->assign(array(
                'ma_variable' => $ma_variable
            ));
            return $this->display(__FILE__, 'supermodulenav.tpl');
        }
        public function hookDisplayHeader()
        {
            $this->context->controller->addCSS($this->_path.'css/supermodule.css', 'all');
        }
        public function GetMailNewsLetter()
        {
            $sql='SELECT email FROM '._DB_PREFIX_.'newsletter';
            $newsletter=Db::getInstance()->executeS($sql);
            return $newsletter;
        }
        public function GetMailCustomer()
        {
            $sql='SELECT email FROM '._DB_PREFIX_.'customer';
            $customer=Db::getInstance()->executeS($sql);
            return $customer;
        }
    }

What’s in my terminal

bash: settings64.csh: line 35: syntax error near unexpected token `('
bash: settings64.csh: line 35: `foreach i ( $xlnxInstLocList )'

Portion of the script

set xlnxInstLocList="${xlnxInstLocList} common"
set xlnxInstLocList="${xlnxInstLocList} EDK"
set xlnxInstLocList="${xlnxInstLocList} PlanAhead"
set xlnxInstLocList="${xlnxInstLocList} ISE"
set XIL_SCRIPT_LOC_TMP_UNI=${XIL_SCRIPT_LOC}
foreach i ( $xlnxInstLocList )

Location of syntactical error at the bottom

line 35
foreach i ( $xlnxInstLocList )

I’m not a scripter; I’m trying to fix an error in the scripting for my ISE DESIGN SUITE installation. I just need a quick set of code to replace «foreach i ( $xlnxInstLocList )» to perform its intended function. I think it’s a Bash script.

Peter Mortensen's user avatar

asked Jan 6, 2017 at 19:31

caleb's user avatar

5

Follow the actual installation instructions properly!

You buried this in a comment:

The environment variables are written to settings[32|64].(c)sh at «/opt/Xilinx/14.7/ISE_DS». To launch the Xilinx tools, first source the settings script:C-shell 64 bit environment…
source /opt/Xilinx/14.7/ISE_DS/settings64.csh

This is just part of a larger set of unofficial instructions, and you did not read the whole thing properly. They continue on from that to say:

Shell, Bash shell, Korn Shell 64 bit environment…
. /opt/Xilinx/14.7/ISE_DS/settings64.sh

The actual instructions from Xilinx itself, as given in the «Linux installation» section of the installation guide, say:

1. Go to the XILINX installation directory2. Type either source settings32.(c)sh or source settings64.(c)sh, as required for your shell.

As is apparent from your question, you are using the Bourne Again shell. So you should be sourcing the .sh file not the .csh file. Stop trying to fix the Xilinx script, which doesn’t need fixing, and actually run the right script for your shell out of the set of scripts for different shells that Xilinx provides.

Further reading

  • «Linux Installation». Xilinx Design Tools: Installation and Licensing Guide. version 14.1. Xilinx. 2012-05-08. p. 6.

answered Jan 6, 2017 at 21:10

JdeBP's user avatar

JdeBPJdeBP

64.7k12 gold badges155 silver badges332 bronze badges

bash doesn’t have a foreach; this script is probably meant to run in csh or tsch. If you are invoking the script with ./myscript.csh, make sure its first line is #!/bin/csh (or whatever the full path to that shell is on your system).

answered Jan 6, 2017 at 19:37

DopeGhoti's user avatar

DopeGhotiDopeGhoti

71.4k8 gold badges94 silver badges132 bronze badges

It is a csh script. Check if it is executable, else execute chmod u+x settings64.csh and run it either with ./settings64.csh or csh settings.sh

answered Jan 6, 2017 at 19:40

franklinsijo's user avatar

2

22 / 4 / 0

Регистрация: 08.11.2012

Сообщений: 97

Записей в блоге: 1

1

26.11.2012, 11:01. Показов 4673. Ответов 7


Выдает ошибку при создании нового топика на движке livestreet
Parse error: syntax error, unexpected T_FOREACH in /usr/home/data/cet12/public_html/classes/modules/subscribe/mapper/Subscribe.mapper.class.php on line 123
как исправить?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

26.11.2012, 11:01

Ответы с готовыми решениями:

Исправить ошибку Parse error: syntax error, unexpected T_VARIABLE, expecting ‘,’ or ‘;’
Ошибка:Parse error: syntax error, unexpected T_VARIABLE, expecting ‘,’ or ‘;’ in…

В чем ошибка (Parse error: syntax error, unexpected ‘$i’ (T_VARIABLE), expecting ‘;’) ?
private function select($table_name,$fields,$where=&quot;&quot;,$order=&quot;&quot;,$up=true,$limit=&quot;&quot;)
{…

Parse error: syntax error, unexpected T_STRING in W:home.php on line 82
&lt;?php
class index {
private function indexjs()
{
?&gt;
&lt;script type=&quot;text/javascript&quot;…

PHP Parse error: syntax error, unexpected ‘(‘, expecting variable (T_VARIABLE) or ‘$’ in
Всем привет!
Делаю один скрипт, когда пытаюсь запустить — вижу ошибку:

PHP Parse error: …

7

Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

26.11.2012, 11:18

2

где то что-то на предыдущих (или на этой же) строчках забыли закрыть — точку с запятой не поставили или скобку..



1



12 / 12 / 8

Регистрация: 20.05.2012

Сообщений: 120

26.11.2012, 12:23

3

Bely, в разделе для начинающих KOPOJI специально прикрепил тему FAQ по распространенным ошибкам



0



22 / 4 / 0

Регистрация: 08.11.2012

Сообщений: 97

Записей в блоге: 1

26.11.2012, 12:26

 [ТС]

4

а это что за ошибка?
QL Error: Table ‘d094_cet12.prefix_d094_cet12d094_cet12comment’ doesn’t exist at /usr/home/data/cet12/public_html/engine/modules/database/Database.class.php line 219
Array ( [code] => 1146 [message] => Table ‘d094_cet12.prefix_d094_cet12d094_cet12comment’ doesn’t exist [query] => SHOW COLUMNS FROM `prefix_d094_cet12d094_cet12comment` [context] => /usr/home/data/cet12/public_html/engine/modules/database/Database.class.php line 219 )



0



12 / 12 / 8

Регистрация: 20.05.2012

Сообщений: 120

26.11.2012, 12:31

5

Bely, ты случаем одну букву в самом начале не пропустил? Мне кажется там должно стоять SQL



0



Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

26.11.2012, 12:33

6

нет такой таблицы:

Цитата
Сообщение от Bely
Посмотреть сообщение

prefix_d094_cet12d094_cet12comment

в БД

Цитата
Сообщение от Bely
Посмотреть сообщение

d094_cet12



0



12 / 12 / 8

Регистрация: 20.05.2012

Сообщений: 120

26.11.2012, 12:36

7

Цитата
Сообщение от Bely
Посмотреть сообщение

а это что за ошибка?
QL Error: Table ‘d094_cet12.prefix_d094_cet12d094_cet12comment’ doesn’t exist at /usr/home/data/cet12/public_html/engine/modules/database/Database.class.php line 219
Array ( [code] => 1146 [message] => Table ‘d094_cet12.prefix_d094_cet12d094_cet12comment’ doesn’t exist [query] => SHOW COLUMNS FROM `prefix_d094_cet12d094_cet12comment` [context] => /usr/home/data/cet12/public_html/engine/modules/database/Database.class.php line 219 )

Ошибка SQL, не найдена таблица ‘d094_cet12.prefix_d094_cet12d094_cet12comment’ не найдена или не существует. Ну вроде как то так. Смотри строку 219 в файле Database.class.php



0



22 / 4 / 0

Регистрация: 08.11.2012

Сообщений: 97

Записей в блоге: 1

26.11.2012, 12:59

 [ТС]

8

таблица 219
if ($aRows=$this->GetConnect($aConfig)->select($sQuery)); {

Добавлено через 20 минут
ошибка выходит из за того,что я хочу подключить к сайту плагин галерею,но она не подключается.



0



  • #1

Помогите разобраться с массивами

Тема снова открыта. я не гадал а лишь предположил, сижу вот разбираюсь не удаляйте пожалуйста а то я сам никак не разберусь

  • #2

FRIE, у тебя одна попытка ответить правильно на мой вопрос. Иначе и RO заработать можешь.

  • #3

Автор оригинала: dimagolov
FRIE, у тебя одна попытка ответить правильно на мой вопрос. Иначе и RO заработать можешь.

FRIE, переведи что значит «Parse error: syntax error, unexpected T_FOREACH»

Так .. в этом коде наскоко я понял

PHP:

<?php ini_set('display_errors', 'on');
error_reporting(E_ALL);
session_start();
$id=$_POST['id'];
$price=$_POST['price'];
$arr=array("id" =>$id, "price" => $price);
$result=array_merge($_SESSION['cart'],$arr)


foreach($result as $k => $v) {
    print "$result[$k] => $v.n";
}


?>

я не поставил «;» в 7 строке и
$_SESSION[‘cart’] не является массивом а я его прогоняю ф-цией для массивов, отсюда и неожиданный результат

  • #4

просто не поставил «;» в 7 строке. поэтому интерпретатор и не ожидал foreach (unexpected T_FOREACH) после этого.

про $_SESSION[‘cart’] тоже справедливо.

  • #5

Автор оригинала: dimagolov
просто не поставил «;» в 7 строке. поэтому интерпретатор и не ожидал foreach (unexpected T_FOREACH) после этого.

про $_SESSION[‘cart’] тоже справедливо.

вот по другому сделал

PHP:

<?php ini_set('display_errors', 'on');
error_reporting(E_ALL);
session_start();
$id=$_POST['id'];
$price=$_POST['price'];
$arr=array("id" =>$id, "price" => $price);

if(!isset($_SESSION['cart'])){
	$_SESSION['cart']=$arr;
	}
	else{
		$arr2=$_SESSION['cart'];
	}
if(isset($arr2)){
$result=array_merge($arr2,$arr);
$_SESSION['cart']=$result;
}
else{
	$result=$arr;
	}
foreach($result as $k => $v) {
    print "$result[$k] => $v.n";
}
?>

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

  • #6

1. почему не проверяешь установлены или нет $_POST[‘id’]/$_POST[‘price’]?
2. Вместо всех этих манипуляций почему бы не написать:

PHP:

if (!isset($_SESSION['cart'])) $_SESSION['cart']= array ();
$_SESSION['cart']= array_merge($_SESSION['cart'],$arr);

  • #7

PHP:

<?php ini_set('display_errors', 'on');
error_reporting(E_ALL);
session_start();
if(isset($_POST['id'])){$id=$_POST['id'];}
if(isset($_POST['price'])){$price=$_POST['price'];}
$arr=array("id" =>$id, "price" => $price);

if (!isset($_SESSION['cart'])) {$_SESSION['cart']= array ();}
$_SESSION['cart']= array_merge($_SESSION['cart'],$arr);
$result=$_SESSION['cart'];
foreach($result as $k => $v) {
    print "$result[$k] => $v.n";
}
?>

поменял как ты сказал, а вот почему новые значения перезаписывают старые до сих пор не понимаю

  • #8

потому, что ты документацию не читаешь

http://php.net/manual/en/function.array-merge.php
If the input arrays have the same string keys, then the later value for that key will overwrite the previous one

Кусок кода очень прост, тем не менее не понятно:
1. где ты хранишь количество единиц товара
2. зачем ты в сессии гоняешь цену?
3. если хочешь добавлять товары в массив cart = добавляй или как $_SESSION[‘cart’][$id] = $price или как $_SESSION[‘cart’][] = $arr

  • #9

Автор оригинала: sky_fox
потому, что ты документацию не читаешь

http://php.net/manual/en/function.array-merge.php
If the input arrays have the same string keys, then the later value for that key will overwrite the previous one

Кусок кода очень прост, тем не менее не понятно:
1. где ты хранишь количество единиц товара
2. зачем ты в сессии гоняешь цену?
3. если хочешь добавлять товары в массив cart = добавляй или как $_SESSION[‘cart’][$id] = $price или как $_SESSION[‘cart’][] = $arr

количество единиц товара пока еще нигде не храню , мне бы сначала разобраться с тем чтобы старые значения не перезаписывались

в сесси гоняю цену тк у 2 товаров может быть 1 id но разные цены , например есть ,большой чемодан у него id=333 и есть маленький точно такой же чемодан у него тоже id=333 но первый стоит 1000 а второй 500. тоесть товары разных размеров поэтому у одного товара несколько цен, и по базе id один и тот же а в корзине эти товары как бы разные
и кроме этого я еще и описание в массив хочу запихнуть, а всё для того чтобы с базой не соединяться лишний раз, чтобы всё быстро работало

насчёт 3 пункта попробую завтра. на сегодня хватит, и так целый день мозг вскрывал себе и другим =)))

  • #10

тоесть товары разных размеров поэтому у одного товара несколько цен, и по базе id один и тот же а в корзине эти товары как бы разные

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

ну и в коде у тебя глупость:

PHP:

if(isset($_POST['id'])){$id=$_POST['id'];}

у тебя должно быть:

PHP:

if(!isset($_POST['id']) || !isset($_POST['price'])) { // тут можно валидацибю значений добавить
   processError();
   die();
}
// работаем с $_POST['id'] и с $_POST['price'], они 100% определены

  • #11

неужели так сложно выполнить несколько примерчиков из мануала чтобы понять что вообще из себя массив, ключ, значение представляют, и не мучиться тут на форуме…

  • #12

так и неразобрался. мне нужен готовый пример чтобы понять, но мне его никто не кинет это уже понятно, так что на первое время я сделал корзину на связке php+mysql товары в базу заносятся в таблицу cart, потом скрипт проходит по табле и удаляет все товары которым больше 3 часов.

Пожалуста выскажете свое мнение по поводу решения корзины на базе mysql , плюсы и минусы

  • #13

Пожалуста выскажете свое мнение

если ты не понимаешь базового синтаксиса (массивы) то ничего хорошего ты написать не можешь в принципе.

i am a beginner to Linux stuffs. Following some tutorial I used the following command, that split my zinc.mol2 into 1000 files named tmp.

cat zinc.mol2 | csplit -ftmp -n4 -ks - '%^@.TRIPOS.MOLECULE%' '/^@.TRIPOS.MOLECULE/' '{*}'

Now I have to use the following script, as per tutorial. When I use the first part foreach f (tmp*), I get bash: syntax error near unexpected token '('.

Can some one guide me, how to successfully run the following script?

# Rename the tmp file according to ZINC identifier
# Here the outline of how we do this:
#    1. extract ZINCn8 from the tmpNNNN file and set to variable
#    2. if the Zn8.mol2 file does not exist, the rename the tmpNNNN file

foreach f (tmp*)
echo $f
set zid = `grep ZINC $f`
if !(-e "$zid".mol2) then
set filename = "$zid".mol2
else foreach n (`seq -w 1 99`)
if !(-e "$zid"_"$n".mol2) then
set filename = "$zid"_"$n".mol2
break
endif
end
endif
mv -v $f $filename
end

steeldriver's user avatar

steeldriver

127k21 gold badges226 silver badges312 bronze badges

asked Jul 7, 2016 at 1:46

Ash's user avatar

4

The code you are trying to run appears to be in the syntax of the C-shell, rather than the Bourne family of shells.

You can either install and use a C-shell — for example, the tcsh package

sudo apt-get install tcsh

csh

or convert the code into its bash equivalent: the following is untested since I don’t have access to your input file, but should be close

for f in tmp*; do
  echo "$f"

  zid="$(grep ZINC "$f")"
  if [ -e "${zid}.mol2" ]; then
    filename="${zid}.mol2"
  else
    for n in {01..99}; do
      if [ -e "${zid}_${n}.mol2" ]; then
        filename="${zid}_${n}.mol2"
        break;
      fi
    done
  fi

  mv -v "$f" "$filename"

done

answered Jul 7, 2016 at 11:40

steeldriver's user avatar

steeldriversteeldriver

127k21 gold badges226 silver badges312 bronze badges

Понравилась статья? Поделить с друзьями:
  • Syntax error unexpected token else after effects
  • Syntax error unexpected t string define
  • Syntax error unexpected t double arrow
  • Syntax error unexpected string content expecting or identifier or variable or number
  • Syntax error unexpected identifier mysql shell