Forum Webscript.Ru

Программирование => PHP => Тема начата: Салажонок от 05 Марта 2002, 08:20:07

Название: Help
Отправлено: Салажонок от 05 Марта 2002, 08:20:07
Помогите пожалуйста написать такой фрагмент PHP-кода:

1. На странице редактирования два поля "Тема" и "Линк". В поле "Тема" заносится название темы, а в поле "Линк" ссылка на страницу данной темы.
2. Соответственно, в таблице MySQL "test" два столбца "tema" и "link".
3. На странице "Просмотр" вместо двух строк "Тема" и "Линк", должна быть одна строка "Тема", но если было заполнено поле "Линк", то название темы преобразуется как нормальная ссылка, т.е. в любом случае отображается название темы либо как просто текст либо как ссылка.

Заранее признателен за помошь.

Салажонок
Название: Help
Отправлено: Britva от 05 Марта 2002, 09:59:15

print ($link) ? \'\'.$tema.\'\' : $tema;
?>
Название: Подскажите пожалуйста, где ошибка.
Отправлено: от 05 Марта 2002, 17:19:30
Спасибо Евгений!

*******************************************
CREATE TABLE test ( test_id INT NOT NULL AUTO_INCREMENT,
   PRIMARY KEY ( test_id ),
   test_descr VARCHAR(255),
   test_link  VARCHAR(255)
   );


***********************************************


$Code;

$host="localhost";
$login="root";
$passwd="root";

$Link = mysql_connect($host,$login,$passwd);

//------------------------------------------------------------------------------

if (!empty($edit_link)) { // {{{

//------------------------------------------------------------------------------

if ($edit_link==1) { // Edit


$Code .= "Add record
";
$Code .= "Back
";

if ($add_record==1) {
 $Query = "insert into test (test_descr,test_link) values (\'new record\',\'new link\')";
 $Result = mysql_query($Query);
 Header("Location: ".$PHP_SELF."?edit_link=1");
}

if (!empty($test_id)) {

 if (!empty($test_descr)) {
  $Query = "UPDATE test set test_descr=\'".$test_descr."\', test_link=\'".$test_link."\' where test_id=".$test_id;
  $Result = mysql_query($Query);
  Header("Location: ".$PHP_SELF."?edit_link=1");
 }

 $Query = "select * from test where test_id=".$test_id ." ORDER BY test_id";
 $Result = mysql_query($Query);
 $Data = @mysql_fetch_array ($Result,0);
 
 $Code .=
 "
 

 Descr:

  Link:

 
 
";

// Header("Location: ".$PHP_SELF."?edit_link=1");
}

$Code .= "

";

$Query = "select * from test ORDER BY test_id";
$Result = mysql_query($Query);

while ($Data = @mysql_fetch_array ($Result,$Row)) {
  $Code .= "";
 
  $Row++;
 }
 
 
 
}

//------------------------------------------------------------------------------

if ($edit_link==2) { // Look

$Code .= "

".$Data["test_descr"]."".$Data["test_link"]."".
"Edit"
  ."
";

$Query =
"select * from test ORDER by test_id";
$Result = mysql_query($Query);
 while ($Data = @mysql_fetch_array ($Result,$Row)) {
 $IsLink = true;
 if (rtrim($Data["test_link"])=="") {
  $IsLink = false;
 }
  $Code .= "";
 
  $Row++;
 }
 
 $Code .= "
".
  (($IsLink)? (""):("

")) .
  $Data["test_descr"] .
  (($IsLink)?"
":"

") . "
";
 
}

//------------------------------------------------------------------------------

} else {

//------------------------------------------------------------------------------

$Code .= "Edit
";
$Code .= "Look
";

//------------------------------------------------------------------------------

} // }}}

//------------------------------------------------------------------------------

print $Code;


?>
Название: Кто-нибудь протестируйте, пожалуйста у себя.
Отправлено: Салажонок от 05 Марта 2002, 17:51:52
К сожалению, нет ни сообщений об ошибках, но скрипт не работает.

Может причина в моих не правильных настойках?

Только вчера переинсталлировал PHP 4.1.1.

Кто-нибудь протестируйте, пожалуйста у себя.
Название: Help
Отправлено: Dm от 05 Марта 2002, 20:07:21
вот мой вариант решения:

error_reporting(E_ALL);
$host = "localhost";
$user = "root";
$pass = "";
$db = "test";

if(!($cn = @mysql_connect($host, $user, $pass))) {
echo "Не возможно подключиться к серверу";
exit;
}
if(!@mysql_select_db($db, $cn)) {
echo "Не возможно открыть БД";
exit;
}


if(isset($act) && !empty($act)) {
switch($act) {
case "edit": // форма
$descr = null; $link = null;
if(isset($id) && !empty($id)) {
$query = "SELECT * FROM test WHERE test_id=\'$id\'";
// (необходимо добавить проверку $id) ^^^^^^^^^
$res = mysql_query($query);
if(mysql_errno()!=0) {
echo "MySQL err: ".mysql_error()." [".$query."]";
exit;
}
if(mysql_num_rows($res)!=0) {
$row = mysql_fetch_row($res);
$id = $row[0];
$descr = $row[1];
$link = $row[2];
}
}
else {
$id = null;
}?>

">
Descr: ">

Link: ">




break;
case "save"; // сохранить
// (необходимо добавить проверку всех вводимых данных)
if($id=="")
$query = "INSERT INTO test (test_descr,test_link) VALUES (\'$descr\', \'$link\')";
else
$query = "UPDATE test SET test_descr=\'$descr\', test_link=\'$link\' WHERE test_id=\'$id\'";

$res = mysql_query($query);
if(mysql_errno()!=0) {
echo "MySQL err: ".mysql_error()." [".$query."]";
exit;
}
header("Location: $PHP_SELF");
break;
case "rem"; // удалить
$query = "DELETE FROM test WHERE test_id=\'$id\'";
// (необходимо добавить проверку $id) ^^^^^^^^^
$res = mysql_query($query);
if(mysql_errno()!=0) {
echo "MySQL err: ".mysql_error()." [".$query."]";
exit;
}
header("Location: $PHP_SELF");
break;
default:
echo "Не верно указано действие";
}
}
else {
$query = "SELECT * FROM test";
$res = mysql_query($query);
if(mysql_errno()!=0) {
echo "MySQL err: ".mysql_error()." [".$query."]";
exit;
}
if(mysql_num_rows($res)!=0) {
while($row = mysql_fetch_row($res)) {
if($row[2]=="")
echo $row[1];
else
echo \'\'.$row[1].\'\';
echo \' [edit]\';
echo \' [rem]\';
echo "
\\n";
}
}
echo \'
Add\'."
\\n";
}

?>


PS. если что - на мыло (dmq@mailru.com) или на асю (76555967)