Какие??? PHP не может повторить переменную....?

-6

Эй, ребята, у меня есть это ДЕЙСТВИТЕЛЬНО странное, что происходит с моим кодом...

Поэтому у меня есть следующий код:

echo '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';
$ Сайт содержит: http://www.somesite.com/test/ $ Элементы [2] содержит: sometext $ Row ["povezava"] содержит: sometext2

Все переменные имеют только буквы в них.

Теперь моя проблема. Если я попытаюсь повторить следующее, я получу:

// I'm missing "sometext":
http://www.somesite.com/test/sometext2
// Should be like this:
http://www.somesite.com/test/sometext/sometext2

Если я делаю print_r ($ Elements), я вижу, что $ Elements [2] является "sometext".

Почему я не могу эхо $ Elements [2] вместе с несколькими другими переменными???

изменение: еще код!

$Website = 'http://' . $_SERVER["SERVER_NAME"] . '/' . $Elements[1] . '/';

function ShowMenuOfParent($Parent, $Spacing) {
$Query = mysql_query("SELECT * FROM 'izdelki_meni' WHERE 'stars' = '$Parent';");
if(mysql_num_rows($Query) != 0) {
while($Row = mysql_fetch_array($Query)) {
$s = '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive">';
for($i = 0; $i < $Spacing;$i++) {
$s .= ' ';
}
$s .= $Row["ime"].'</a></li>';
echo $s;
ShowMenuOfParent($Row["id"], $Spacing + 8);
}
}
}

$Query = mysql_query("SELECT * FROM 'izdelki_meni' WHERE 'stars' = 0;");
if(mysql_num_rows($Query) != 0) {
echo '<ul>';
while($Row = mysql_fetch_array($Query)) {
echo '<li><a href="'.$Website.$Row["povezava"].'" class="leftMenuArticlesActive">'.$Row["ime"].'</a></li>';
if($Elements[2] == $Row["povezava"]) {
ShowMenuOfParent($Row["id"], 8);
}
}
echo '</ul>';
}

спросил(а) 2012-04-03T11:53:00+04:00 8 лет, 5 месяцев назад
0
70

Почему я не могу эхо $ Elements [2] вместе с несколькими другими переменными?

Собственно, echo может это сделать, так что только эта часть вашего вопроса остается нерешенной:

Почему я не могу?

То, что вы можете и что вы не можете, часто зависит от того, что вы узнали до сих пор. Поскольку обучение субъективно, трудно ответить на этот вопрос кем-то другим, чем вы. Но, вероятно, вы можете добавить больше информации, что особенно мешает вам понять вашу реальную проблему, чтобы другие могли лучше помочь вам.

Информация, которую вы предоставляете своим вопросом, фактически неверна. Я понимаю, что у вас есть проблема, и вы хотели бы исправить это, но то, что вы на самом деле делаете, заключается в том, что вы делаете свою проблему больше, чем это, размещая ее здесь в качестве приглашения для других, чтобы даже больше угадывать. Я имею в виду, что 10 человек могут угадать более одного человека. Таким образом, ваш запрос на самом деле контрпродуктивен и не помогает. И для себя, и для кого-то другого.

Вместо того, чтобы угадывать, вам нужно начинать фактически доказывать вещи шаг за шагом. Начните с собственного ожидания:

Теперь моя проблема. Если я попытаюсь повторить следующее, я получу:

// I'm missing "sometext":
http://www.somesite.com/test/sometext2
// Should be like this:
http://www.somesite.com/test/sometext/sometext2

И код, который вы опубликовали, связан с выходом:

echo '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';

Вы пишете, что $Website заканчивается на /test/, и, кроме того, в выходной строке (.'/'.) Есть косая черта, однако сам вывод даже не содержит эту дополнительную строку в соответствии с вами:

http://www.somesite.com/test/sometext2

И это уже независимо от того, что содержит $Elements или $Row. Сначала начните думать, вам нужно проанализировать, почему это происходит, а другие не могут помочь вам в этом, потому что у нас нет вашего программного обеспечения и ваших данных для его отладки. Через некоторое время вы узнаете свои собственные способы найти ошибки, которые вы совершаете.

Потратьте время, чтобы настроить отладчик xdebug и затем выполнить свой код. Это помогает быстро обнаруживать ошибки. И не только на этот раз, но и в будущем.

ответил(а) 2012-04-03T12:01:00+04:00 8 лет, 5 месяцев назад
58

Кажется, вы печатаете неэкранированный текст внутри атрибута HTML, который является частью URL-адреса. Мое образованное предположение заключается в том, что вы проверяете вывод сценариев, как это делает браузер, например, наведя курсор мыши и прочитав всплывающую подсказку. Вместо этого используйте функцию "Просмотр источника" в браузере, чтобы увидеть точный результат.

Дополнительные советы:


var_dump() на сегодняшний день является лучшей встроенной функцией для отладки. Все остальные функции передают переменные в строки или могут скрыть важную информацию.

Отмените сценарий с помощью die() или exit() сразу после строки нарушения, чтобы гарантировать, что результат не будет изменен позже.

ответил(а) 2012-04-03T12:13:00+04:00 8 лет, 5 месяцев назад
41

Иногда PHP имеет сложное время с конкатенацией по нескольким переменным в строке (спина к спине). Это зависит от настройки сервера. Вы можете попробовать эхом, используя одно из следующих:

echo '<li><a href="'.$Website.''.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';

echo '<li><a href="'.$Website;
echo $Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';

echo '<li><a href="',$Website,$Elements[2],'/',$Row["povezava"],'" class="leftMenuArticlesInactive"></a><li>';

ответил(а) 2012-04-03T12:00:00+04:00 8 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема