[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    if( (int)$id!=0 )
    {
    Работаем с базой (можно еще проверку на больше 0), все зависит от того по какому критерию береться id
    }
    не факт, могут быть случаи когда id - пустой
     
  2. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0

    Можно поинетерсоваться какие? На сколько я знаю id - это иденефикатор который является Primary key и не может быть ни пустым ни повторятся. + ко всему если передается через строку браузера, то самое вероятное, что кто-нить пошлет левые цифры
     
  3. suffering

    suffering Elder - Старейшина

    Joined:
    20 Jan 2007
    Messages:
    15
    Likes Received:
    8
    Reputations:
    0
    ребят, у меня руки из задницы растут, ну делаю что то не так : ((

    проверкa эта
    echo "'$id'";
    id не вывелся, вместо него двое кавычек

    я три дня только как начал читать книгу, пытаюсь сделать что то, но много ошибок постоянно (

    PHP:
    <?php
    include ("blogs/bd.php"); /*Соединяемся с базой данных*/

    if (isset($_GET['id'])) {$id =(int) $_GET['id'];}

    $result mysql_query("SELECT * FROM lessons WHERE id='$id'",$db);
    $myrow mysql_fetch_array($result);

    ?>
    -=Static=-

    Это если поставить твое творение :(
     
  4. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    от это типичный пример бажного кода:

    script.php
    PHP:
    <?
    $id $_GET["id"];
    if( (int)
    $id!=)
    {
        echo 
    "SELECT * FROM `lessons` WHERE id=".$id.";";
    }
    ?>
    Теперь обратимся к скрипту вот так:
    Code:
    script.php?id=1+union+select+1,2/*

    в результате видим:

    SELECT * FROM `lessons` WHERE id=1 union select 1,2/*;
     
  5. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    например форма из нескольких чекбоксов, можно выбрать 1 значение, а можно и не одного, при отправке - проверяеться, если есть id(был выбран) - выполняется код, если нет выполняеться другой
    да с десяток сожно придумать
    Или мне нельз я тогда называть чекбокс великим именем id ? :)
    id - ты можешь использовать, как захочешь, или это где-то в спецификации прописано, что id - это Primary key, а если, я вообще без MySql( и др) работаю?
     
  6. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0

    А ты как обращаешся к скрипту???? О.о

    У меня предчуствие что если он у тя называется script.php то ты к нему обращаешся просто http://site.com/script.php

    а надо: http://site.com/script.php?id=1
     
  7. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    А где ты увидел , что я его привел, покажи мне плз?
     
    #4287 Naydav, 25 Jul 2008
    Last edited: 25 Jul 2008
  8. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Я ж не говорил, что это объязательно. ID - от слова Identeficator. И принятно так называть примари ключ.

    Вообще ограничений на прострнство имен нет, но если ты не индус, и слышал об этике программирования, то id юзаешь как примари кей, если с базой канешн работаешь.
     
  9. suffering

    suffering Elder - Старейшина

    Joined:
    20 Jan 2007
    Messages:
    15
    Likes Received:
    8
    Reputations:
    0
    вот с этого:

    HTML:
    <?php
    include ("blogs/bd.php"); /*Соединяемся с базой данных*/
    $result = mysql_query("SELECT id,title,meta_d,meta_k,text FROM settings WHERE page='lessons'",$db);
    $myrow = mysql_fetch_array($result);
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta name="description" content="<?php echo $myrow['meta_d']; ?> ">
    <meta name="keywords" content="<?php echo $myrow['meta_k']; ?> ">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title><?php echo $myrow['title']; ?></title>
    <link href="style.css" rel="stylesheet" type="text/css">
    </head>
    
    <body>
    <table width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
    <?php include ("blogs/header.php"); ?>
      <tr>
        <td><table width="690" border="0" cellspacing="0" cellpadding="0">
    	
    <?php include ("blogs/lefttd.php"); ?>  
                            
    <td valign="top">
    <p><?php echo $myrow['text']; ?>  </p>
    
    <?php 
    
    $result = mysql_query ("SELECT id,title,date,description,author FROM lessons",$db);
    
    $myrow = mysql_fetch_array ($result); 
    
    do {
    
    printf ("<table align='center' class='lesson'>
    
    	<tr>
        <td class='lesson_title'><p class ='lesson_name'><a href='view_lesson.php?=%s'>%s</a></p>
    	<p class ='lesson_adds'>Дата добавления: %s</p>
    	<p class ='lesson_adds'>Автор: %s</p></td>
    	</tr>
        <tr>
    	<td>%s</td>
    	</tr></table><br>", $myrow["id"], $myrow["title"],$myrow["date"],$myrow["author"],$myrow["description"]);
    	
    } 
    while ($myrow = mysql_fetch_array ($result));
      ?>
      </td>
        </tr>
        </table></td>
      </tr>
    <?php include ("blogs/footer.php"); ?>
    </table>
    </body>
    </html>
    мне надо попасть на это

    HTML:
    <?php
    include ("blogs/bd.php"); /*Соединяемся с базой данных*/
    
    if (isset($_GET['id'])) {$id =(int) $_GET['id'];}
    
    $result = mysql_query("SELECT * FROM lessons WHERE id='$id'",$db);
    $myrow = mysql_fetch_array($result);
    
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta name="description" content="<?php echo $myrow['meta_d']; ?>">
    <meta name="keywords" content="<?php echo $myrow['meta_k']; ?>">
    
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title><?php echo $myrow['title']; ?></title>
    <link href="style.css" rel="stylesheet" type="text/css">
    </head>
    
    <body>
    <table width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
    <?php include ("blogs/header.php"); ?>
      <tr>
        <td><table width="690" border="0" cellspacing="0" cellpadding="0">
    	
    <?php include ("blogs/lefttd.php"); ?>  
                            
    <td valign="top">
    <p><?php echo $myrow['text']; ?>  </p>
    
      </td>
        </tr>
        </table></td>
      </tr>
    <?php include ("blogs/footer.php"); ?>
    </table>
    </body>
    </html>
    по идее id подставляет автоматически
    начиная с 1, итак циклично, пока не закончится

    ссылки получаются такие:

    http://localhost/phpsite/view_lesson.php?=1
    http://localhost/phpsite/view_lesson.php?=2
    http://localhost/phpsite/view_lesson.php?=3

    три вставки у меня в бд, три новости на странице
    они отлично отображаются
    но как перехожу в полное описание
    так ничего из этого: ["id"], ["title"],["date"],["author"],["description"] не показывает
    токль страничка, оформленная и все
     
  10. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Naydav пост #4339
     
  11. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    id - может быть пустым, пример я тебе привел
     
  12. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    а должны получаться вот такие
    http://localhost/phpsite/view_lesson.php?id=2
     
  13. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Врунишка, сравни МОЙ пост и то что ты привел в пример

    конкретно
    "SELECT * FROM `lessons` WHERE id=".$id.";";
     
  14. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Если юзать чекбокс не отметить, то $_GET['ID'] не будет существовать
     
  15. suffering

    suffering Elder - Старейшина

    Joined:
    20 Jan 2007
    Messages:
    15
    Likes Received:
    8
    Reputations:
    0
    -=Static=-

    Я же говорю, я баран, извиняюсь, исправился
    огромное спасибо)
     
    2 people like this.
  16. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    :D добавил одну строку для наглядности примера.
     
  17. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Я рад, что ты это написал сам
    не будет существовать
     
  18. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    )))))) Существование переменно проверяется функцие isset() а пустота имебщейся переменной функцией is_empty(). Я не заметил в твоем примере пустой переменной.
     
  19. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    А зачем ты от меня что-то добавляешь???
    Может пойдешь в военкомате от меня подпись еще добавишь? вот тибе и :)

    фантазия ил знания не допускают, что следующая строка может быть
    $object = new Object($id);
    или id будет записано как и (int)id, ах да 5 символов лишних



    если я использую $id = $_GET['id'], это пример
    или например если юзер зарегистрирован, то подст его id, если нет то 0, это тоже пример

    все извини избавлю себя от переливания воды из пустого в порожне

    мда и так нафлудили
     
    #4299 Naydav, 25 Jul 2008
    Last edited: 25 Jul 2008
    1 person likes this.
  20. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    :)
    Прально, ибо пофик) Есть более благородной занятие чем обсуждать, кто бы что бы написал если бы....

    сори за оффтоп
     
Thread Status:
Not open for further replies.