Пожалуйста помоги! Натыкаясь на эту ошибку:
ошибка в строке 11 в столбце 3: xmlParsePI: нет целевого имени.
Строка 11 является тегом atom: link. Я попытался изменить ссылку на фактическое имя файла и получил ту же ошибку. Я запускаю код локально, поэтому я также попытался использовать локальный URL-адрес и все ту же ошибку.
Я новичок в php, и это задание для курса php с тем, что я считаю устаревшим материалом. Любой совет будет полезен!
<?php
require_once('./Includes/connectvars.php');
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
$builddate = gmdate(DATE_RSS, time());
?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Vintage Cars and Trains</title>
<atom:link href="http://<?= $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'] ?>" rel="self" type="application/rss+xml" />
<link>products.php</link>
<description>Vintage cars and trains for lesson 9</description>
<lastBuildDate><?php $builddate ?></lastBuildDate>
<language>en-us</language>
<?
$query = " SELECT * FROM products WHERE productLine = 'Vintage Cars', 'Trains' ORDER BY dateAdded DESC LIMIT 10 ";
$result = mysqli_query($dbc, $query)
or die("Error querying database => $query");
//Loop through and print data
while ($newArray = mysqli_fetch_array($result)) {
$product_code = $newArray[productCode];
$product_name = $newArray[productName];
$product_line = $newArray[productLine];
$product_scale = $newArray[productScale];
$product_vendor = $newArray['productVendor'];
$product_description = $newArray['productDescription'];
$buy_price = $newArray['buyPrice'];
$pubdate = date(DATE_RSS, strtotime($date_added));
?>
<item>
<title><?php echo "$product_code - $product_name"; ?></title>
<description><?php $description ?></description>
<link><link>localhost/PHP/Lesson9/products.php?pid=<?php $product_code ?></link>
<guid isPermaLink="false">localhost/PHP/Lesson9/products.php?pid=<?php $product_code ?><guid>
<pubDate><?php $pubdate ?></pubDate>
</item>
}
</channel>
</rss>
Когда вы выводите переменную php, убедитесь, что вы используете:
<?php echo $variablename; ?>
Если вы хотите объединить две переменные php, убедитесь, что вы используете точку:
<?php echo $variablename1.' - '.$variablename2; ?>
Пожалуйста, не забудьте повторить и поставить точку с запятой в конце каждой строки PHP:
<?php echo something; ?>
Пожалуйста, не забудьте закрыть цикл while с фигурной скобкой там, где заканчивается цикл:
<?php
while (condition) {
do something;
}
?>
Вот очищенный код.
<?php
require_once('./Includes/connectvars.php');
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
$builddate = gmdate(DATE_RSS, time());
?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Vintage Cars and Trains</title>
<atom:link href="http://"<?php echo $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; ?>" rel="self" type="application/rss+xml" />
<link>products.php</link>
<description>Vintage cars and trains for lesson 9</description>
<lastBuildDate><?php echo $builddate; ?></lastBuildDate>
<language>en-us</language>
<?php
$query = " SELECT * FROM products WHERE productLine = 'Vintage Cars', 'Trains' ORDER BY dateAdded DESC LIMIT 10 ";
$result = mysqli_query($dbc, $query)
or die("Error querying database => $query");
//Loop through and print data
while ($newArray = mysqli_fetch_array($result)) {
$product_code = $newArray[productCode];
$product_name = $newArray[productName];
$product_line = $newArray[productLine];
$product_scale = $newArray[productScale];
$product_vendor = $newArray['productVendor'];
$product_description = $newArray['productDescription'];
$buy_price = $newArray['buyPrice'];
}
$pubdate = date(DATE_RSS, strtotime($date_added));
?>
<item>
<title><?php echo $product_code.' - '.$product_name; ?></title>
<description><?php echo $description; ?></description>
<link><link>localhost/PHP/Lesson9/products.php?pid=<?php echo $product_code; ?></link>
<guid isPermaLink="false">localhost/PHP/Lesson9/products.php?pid=<?php echo $product_code; ?><guid>
<pubDate><?php echo $pubdate; ?></pubDate>
</item>
</channel>
</rss>
Других решений пока нет …