не знаю, как комментировать, поэтому я должен опубликовать это как ответ.Если этот код скопирован из вашего php-скрипта:
$var = $_POST["programID"];
<p id="p">
<?php
echo "Program ID er " . utf8_encode($var);
?>
</p>
Разве вы не пропустили <?php and ?>
вокруг $var = $_POST["programID"];
Отредактировано 20101028:
Хорошо, у меня былоПосмотрите на ваш недавно опубликованный код и пока не можете найти ничего очевидного, я внес в него некоторые изменения:
<?php
$message = "<div id=\"php_debug\";
style=\"border:1px solid red;
background-color: black;
color: white;\"
>";// this is the debug message we will build and later print out where we need it
//Selects all programs that have a podcast
$QUERY_SELECT_ALL_PROGRAMS = "SELECT DISTINCT d.defnr, d.name
FROM definition d, podcast p
WHERE p.program = d.defnr";
//Select podcasts that belongs to a given program
$QUERY_SELECT_PODCASTS_FOR_PROGRAM = "SELECT p.title, p.refnr, p.filename
FROM podcast p
WHERE program = ?";
//Selects all podcasts
$QUERY_SELECT_ALL_PODCASTS = "SELECT p.refnr, p.title, p.filename, p.filename
FROM podcast";
$BROADCAST_PATH = "";
$message .= "\$_POST["programID"] = ".$_POST["programID"]."<hr />";
$programID = $_POST["programID"];
$message .= "\$programID = ".$programID."<hr />";
/* Returns true if DB connection to server and database is OK
* Takes mysqli as parameter
* Connect to the database using the MySQLi API in PHP 5.x
* This is the prefered way*/
function DBconnection($connection) {
$message .= "I am in DBconnection($connection)<hr />";
$result = false;
//Refering to $con declared eralier
//global $connection;
//Check DB connection
if ($connection->connect_error) {
die('Connect Error: '.$connection- >connect_error); }
else{
//Refering to $DB_NAME declared earlier
//Select DB
global $DB_NAME;
$DB_selected = $connection->select_db($DB_NAME);
if (!$DB_selected) { die ('Can\'t use : ' . $connection->connect_error); }
else{ $result = true; }
}
return $result;
}
// Start generating form
echo "<form>";
echo "<select>";
//The MySQL connection object, must be created before connection
$con = new mysqli($MYSQL_SERVER, $MYSQL_USER_NAME, $MYSQL_PASSWORD, $DB_NAME);
if (DBconnection($con)) {
if ($stmt = $con->prepare($QUERY_SELECT_PODCASTS_FOR_PROGRAM)) {
$message .= "\$program = ".$program."(\$program has never been seen before in this script)<hr />";
//$stmt->bind_param("i", $program); This line was here originally, $program is null, has never been initialized before, $programID is the var where you store $_POST data, so I changed it to below
$stmt->bind_param("i", $programID);
$program = $_POST["programID"];//I left this here, becaause I dont know what you use $program for
$message .= "\$program = ".$program."(\$program has been filled with \$_POST["programID"])<hr />";
$stmt->execute();
$stmt->bind_result($title, $refnr, $filepath);
}
$message .= "\$_POST["programs"] = ".$_POST["programs"]."(\$_POST["programs"] has never been sen before)<hr />";
if(is_null($_POST["programs"])) {
$message .= "\$_POST["programs"] was empty so I generated \"Choose program first...\" option"<hr />";
echo "<option>Choose a program first...</option>";
//echo "<option>".$file."</option>";
}elseif(is_numeric($_POST["programs"])){
$message .= "\$_POST["programs"] was numeric so I will start a loop here:<br /> START OF LOOP <br />";
while($stmt->fetch()) {
print_r($title);
//$filepath holds the value of only the name of the broadcast without the entire path
//40 is the starposition of the name
$filename = substr($filepath, 40);
$message .= "\$title = ".$title." and \$filename = ".$filename."<br />";
echo "<option value=\"".$refnr."\" id=\"".$refnr."\" onclick=\"play('".$filename."')\">".utf8_encode($title).utf8_encode($filename)."</option>";
}
$message .= "END OF LOOP<hr />";
}
$con->close();
}
echo "</select>";
echo "</form>";
$message .= "</ div>";
echo($message);//print out the debug message we were building through out the script
?>
Не могли бы вы использовать вышеприведенный код и сообщить нам, что он распечатывает?
Также я бы посоветовал вам обработать все почтовые данные в начале скрипта, выполнив что-то вроде этого:
$var1 = $_POST["var1"];
$var2 = $_POST["var2"];
$var3 = $_POST["var3"];
$var4 = $_POST["var4"];
$var5 = $_POST["var5"];
Потому что таким образом вы избавите себя от путаницы, позже и только работайтес простыми для чтения именами переменных.Например, что такое $ _POST ["программы"]?это то же самое, что $ _POST ["programID"]?
В целом существует много путаницы, по крайней мере для меня с именами переменных:
$program
$programID
$programs
$_POST["program"]
$_POST["programs"]
$_POST["programID"]
Какие из них используются?Какие из них правильные?
Я стремлюсь решить эту проблему, начиная имя переменной с ее назначением:
$ id_program -> ID одной программы или строки в db $ txt_program ->описание программы или программы txt $ num_programs -> количество программ, количество программ (сколько идентификаторов) $ arr_programs -> массив программ, например массив всех идентификаторов программ
Надеюсь, это помоглонемного, дайте мне знать.Удачи:)