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

Тема в разделе "PHP программирование", создана пользователем Kauperwood, 9 май 2011.

  1. Kauperwood

    Kauperwood Гость

    Репутация:
    0
    Вообщем не пролема, а фокус))
    есть код который у меня сам по себе работает
    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'])
    $sqlmysql_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 ?> не работает, работа продолжается но не выполняются задачи этого кода так сказать. в чем тут может быть проблема?
     
  2. 1ive

    1ive Well-Known Member

    Репутация:
    0
    Регистрация:
    12 сен 2010
    Сообщения:
    621
    Симпатии:
    0
    В файл с функциями:
    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))
    $sqlmysql_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
    Может и есть что-то лишнее, пересмотрите, у меня не выдалось возможности
     
  3. Kauperwood

    Kauperwood Гость

    Репутация:
    0
    работает
    правда кидает предупреждения

    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 }
     
  4. 1ive

    1ive Well-Known Member

    Репутация:
    0
    Регистрация:
    12 сен 2010
    Сообщения:
    621
    Симпатии:
    0
    Заменить на


    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)
    {
    $sqlmysql_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);
     
  5. Kauperwood

    Kauperwood Гость

    Репутация:
    0
    помогло, с Undefined variable
    а с Undefined index 41 42 43 осталось, в зависимости того что выполняю пропадает, например если редактировать то пропадает по pageid
    я так понял что это не критично
    и еще, такие надстройки надо делать каждый раз когда GET и POST?
     
  6. 1ive

    1ive Well-Known Member

    Репутация:
    0
    Регистрация:
    12 сен 2010
    Сообщения:
    621
    Симпатии:
    0
    Просто нужно условия так расставить, чтобы и говнокод не вышел, и чтобы все переменные имели значение.
    Всё дело в:

    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);
     
  7. Kauperwood

    Kauperwood Гость

    Репутация:
    0
    это я уже понял, а какое отношение тут имеет Undefined index?
     
  8. 1ive

    1ive Well-Known Member

    Репутация:
    0
    Регистрация:
    12 сен 2010
    Сообщения:
    621
    Симпатии:
    0
    Вот еще немного поправил. 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)
    {
    $sqlmysql_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);



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

    Kauperwood Гость

    Репутация:
    0
    это да, но реально на эти три предупреждения Undefined index это не повлияло и они остались. То есть они продолжают отображаться пока переменная равна 0 получается?
     
  10. 1ive

    1ive Well-Known Member

    Репутация:
    0
    Регистрация:
    12 сен 2010
    Сообщения:
    621
    Симпатии:
    0
    Они продолжают появляться пока значение переменной совсем не определено. Если она равна нулю, предупреждение не появится
     
  11. Kauperwood

    Kauperwood Гость

    Репутация:
    0
    вообщем пришлось все переделать, надо юзать 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']) { 
    $sqlmysql_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();
    правда пришлось потом разбить на кучу "маленьких" функций)
     
Загрузка...

Поделиться этой страницей