вопрос по функциям

  • Автор темы Kauperwood
  • Дата начала
K

Kauperwood

#1
Вообщем не пролема, а фокус))
есть код который у меня сам по себе работает
PHP:
<? 
session_start();
include ('config.php'); 
include ('functions.php');

$sql = mysql_query('SELECT * FROM content');
// выводим поля
while($record = mysql_fetch_array($sql))
{
print '<tr><td>'.$record['pageid'].': '.$record['pagetittle'].'</td>
<td>

<a href="editor.php?pageid='.$record['pageid'].'">Редактировать</a>
<a href="editor.php?pagedel='.$record['pageid'].'&delete=y">Удалить</a></td><br>';
}
$pagecontent = $_GET['pageid']; 
if(isset($pagecontent)) {

$sql = mysql_query("select * FROM content WHERE pageid='".$pagecontent."';"); //вставка контента в текстовую форму

while($record = mysql_fetch_array($sql)) {
$content = $record['pagecontent'];
}
}
else {
$content="";
}
if($_POST['save'])
$sql= mysql_query ("UPDATE content SET pagecontent = '".$_POST['mess']."' WHERE pageid='".$_SESSION['id']."';"); 

if($_GET['pagedel'])
{
$sql = mysql_query ("DELETE FROM content WHERE pageid='".$_SESSION['id']."';"); 
header('Refresh:1; URL=editor.php'); 
}
$_SESSION['id'] = $pagecontent; // id записи = ид сессии
?>
я в с функциями только начал знакомится, вообщем когда я этот код оборачиваю в функциию и вставляю в подключаемый файл с функциями,
<?php print $content ?> не работает, работа продолжается но не выполняются задачи этого кода так сказать. в чем тут может быть проблема?
 

1ive

Well-known member
12.09.2010
621
1
#2
В файл с функциями:
PHP:
function printcontent($pagecontent, $save, $pagedel, $mess) {
$sql = mysql_query('SELECT * FROM content');
// выводим поля
while($record = mysql_fetch_array($sql))
{
print '<tr><td>'.$record['pageid'].': '.$record['pagetittle'].'</td>
<td>

<a href="editor.php?pageid='.$record['pageid'].'">Редактировать</a>
<a href="editor.php?pagedel='.$record['pageid'].'&delete=y">Удалить</a></td><br>';
}

if(isset($pagecontent)) {

$sql = mysql_query("select * FROM content WHERE pageid='".$pagecontent."';"); //вставка контента в текстовую форму

while($record = mysql_fetch_array($sql)) {
$content = $record['pagecontent'];
}
}
else {
$content="";
}
if(isset($save))
$sql= mysql_query ("UPDATE content SET pagecontent = '".$mess."' WHERE pageid='".$_SESSION['id']."';"); 

if(isset($pagedel))
{
$sql = mysql_query ("DELETE FROM content WHERE pageid='".$_SESSION['id']."';"); 
header('Refresh:1; URL=editor.php'); 
}
$_SESSION['id'] = $pagecontent; // id записи = ид сессии

return $content;
}
В файл где должно быть "<?php print $content ?>":

PHP:
$pagecontent = $_GET['pageid']; 
if($_POST['save']) {$save = 1; $mess = $_POST['mess'];}
if($_GET['pagedel']) {$pagedel = 1;}
echo printcontent($pagecontent, $save, $pagedel, $mess);
Вроде должно работать. Не проверял. Сильно ничего не измнял, просто сделал так, чтобы до функции доходили переменные POST и GET
Может и есть что-то лишнее, пересмотрите, у меня не выдалось возможности
 
K

Kauperwood

#3
работает
правда кидает предупреждения

Notice: Undefined index: save in /var/www/g/editor.php on line 42
Notice: Undefined index: pagedel in /var/www/g/editor.php on line 43
Notice: Undefined variable: save in /var/www/g/editor.php on line 44
Notice: Undefined variable: pagedel in /var/www/g/editor.php on line 44
Notice: Undefined variable: mess in /var/www/g/editor.php on line 44

тут
Код:
36 if(isset($pagecontent)) {
37
38	$sql = mysql_query("select * FROM content WHERE pageid='".$pagecontent."';"); //вставка контента в текстовую форму
39
40	while($record = mysql_fetch_array($sql)) {
41	$content = $record['pagecontent'];
42	}
43 }
44 else {
45	$content="";
46 }
 

1ive

Well-known member
12.09.2010
621
1
#4
Заменить на


PHP:
function printcontent($pagecontent, $save, $pagedel, $mess) {
$sql = mysql_query('SELECT * FROM content');

while($record = mysql_fetch_array($sql))
{
print '<tr><td>'.$record['pageid'].': '.$record['pagetittle'].'</td><td>
<a href="editor.php?pageid='.$record['pageid'].'">Редактировать</a>
<a href="editor.php?pagedel='.$record['pageid'].'&delete=y">Удалить</a></td><br>';
}

if(isset($pagecontent)) 
{
$sql = mysql_query("select * FROM content WHERE pageid='".$pagecontent."';"); //вставка контента в текстовую форму
while($record = mysql_fetch_array($sql)) 
{
$content = $record['pagecontent'];
}
}else{$content="";} 

if($save==1)
{
$sql= mysql_query ("UPDATE content SET pagecontent = '".$mess."' WHERE pageid='".$_SESSION['id']."';"); 
}

if($pagedel==1)
{
$sql = mysql_query ("DELETE FROM content WHERE pageid='".$_SESSION['id']."';"); 
header('Refresh:1; URL=editor.php'); 
}

$_SESSION['id'] = $pagecontent; // id записи = ид сессии
return $content;
}

PHP:
$pagecontent = $_GET['pageid']; 

if($_POST['save']) {$save = 1; $mess = $_POST['mess'];}else{$save = 0; $mess = 0;}
if($_GET['pagedel']) {$pagedel = 1;}else{$pagedel = 0;}

echo printcontent($pagecontent, $save, $pagedel, $mess);
 
K

Kauperwood

#5
помогло, с Undefined variable
а с Undefined index 41 42 43 осталось, в зависимости того что выполняю пропадает, например если редактировать то пропадает по pageid
я так понял что это не критично
и еще, такие надстройки надо делать каждый раз когда GET и POST?
 

1ive

Well-known member
12.09.2010
621
1
#6
Просто нужно условия так расставить, чтобы и говнокод не вышел, и чтобы все переменные имели значение.
Всё дело в:

PHP:
$pagecontent = $_GET['pageid']; 
if($_POST['save']) {$save = 1; $mess = $_POST['mess'];}else{$save = 0; $mess = 0;}
if($_GET['pagedel']) {$pagedel = 1;}else{$pagedel = 0;}

echo printcontent($pagecontent, $save, $pagedel, $mess);
 
K

Kauperwood

#7
это я уже понял, а какое отношение тут имеет Undefined index?
 

1ive

Well-known member
12.09.2010
621
1
#8
Вот еще немного поправил. 100% должно заработать без ошибок

PHP:
function printcontent($pagecontent, $save, $pagedel, $mess) {
$sql = mysql_query('SELECT * FROM content');

while($record = mysql_fetch_array($sql))
{
print '<tr><td>'.$record['pageid'].': '.$record['pagetittle'].'</td><td>
<a href="editor.php?pageid='.$record['pageid'].'">Редактировать</a>
<a href="editor.php?pagedel='.$record['pageid'].'&delete=y">Удалить</a></td><br>';
}

if($pagecontent==1) 
{
$sql = mysql_query("select * FROM content WHERE pageid='".$pagecontent."';"); //вставка контента в текстовую форму
while($record = mysql_fetch_array($sql)) 
{
$content = $record['pagecontent'];
}
}else{$content="";} 

if($save==1)
{
$sql= mysql_query ("UPDATE content SET pagecontent = '".$mess."' WHERE pageid='".$_SESSION['id']."';"); 
}

if($pagedel==1)
{
$sql = mysql_query ("DELETE FROM content WHERE pageid='".$_SESSION['id']."';"); 
header('Refresh:1; URL=editor.php'); 
}

$_SESSION['id'] = $pagecontent; // id записи = ид сессии
return $content;
}

PHP:
$save=0; $pagedel=0; $mess=0; $pagecontent=0;

if($_POST['save']) {$save = 1; $mess = $_POST['mess'];}
if($_GET['pagedel']) {$pagedel = 1;}
if($_GET['pageid']) {$pagecontent = $_GET['pageid']; }

echo printcontent($pagecontent, $save, $pagedel, $mess);

Добавлено:
это я уже понял, а какое отношение тут имеет Undefined index?
просто в
printcontent($pagecontent, $save, $pagedel, $mess);
все переменные должны иметь значение, а у нас до этого условиями некоторые переменные совсем не задавались.
 
K

Kauperwood

#9
это да, но реально на эти три предупреждения Undefined index это не повлияло и они остались. То есть они продолжают отображаться пока переменная равна 0 получается?
 

1ive

Well-known member
12.09.2010
621
1
#10
Они продолжают появляться пока значение переменной совсем не определено. Если она равна нулю, предупреждение не появится
 
K

Kauperwood

#11
вообщем пришлось все переделать, надо юзать isset и ничего не надо дописывать, разве что по необходимости дать задавать любое значение через else

вот так 200% пашет
PHP:
function get(){

if(isset($_GET['pageid'])) {
$sql = mysql_query("select * FROM content WHERE pageid='".$_GET['pageid']."';"); //вставка контента в текстовую форму
while($record = mysql_fetch_array($sql)) {
$content = $record['pagecontent'];
}
}
else {
$content="";
$_GET['pageid']=0; // определяем переменную
}
if(isset($_POST['save'])) {

if($_POST['save']) { 
$sql= mysql_query ("UPDATE content SET pagecontent = '".$_POST['mess']."' WHERE pageid='".$_SESSION['id']."';");
} 
}

if(isset($_GET['pagedel']))
{
$sql = mysql_query ("DELETE FROM content WHERE pageid='".$_SESSION['id']."';"); 
header('Refresh:1; URL=editor.php'); 
}

$_SESSION['id'] = $_GET['pageid']; // id записи = ид сессии
if(isset($content) // не помешает))
return $content;
}
?>
PHP:
print get();
правда пришлось потом разбить на кучу "маленьких" функций)