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

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

  1. Kauperwood

    Kauperwood Гость

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

    1ive Well-Known Member
    Web Team

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

    Kauperwood Гость

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

    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

    тут
    Код (Text):
    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
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    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)
    {
    $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);
     
  5. Kauperwood

    Kauperwood Гость

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

    1ive Well-Known Member
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    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 Гость

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

    1ive Well-Known Member
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    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)
    {
    $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);



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

    Kauperwood Гость

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

    1ive Well-Known Member
    Web Team

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

    Kauperwood Гость

    вообщем пришлось все переделать, надо юзать 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();
    правда пришлось потом разбить на кучу "маленьких" функций)
     
Загрузка...
Похожие Темы - вопрос по функциям
  1. ApplePen
    Ответов:
    0
    Просмотров:
    80
  2. gURaBA_N
    Ответов:
    3
    Просмотров:
    98
  3. kartaman
    Ответов:
    0
    Просмотров:
    128
  4. Peter
    Ответов:
    4
    Просмотров:
    527
  5. di0d_
    Ответов:
    1
    Просмотров:
    442

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