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

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

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

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    извиняюсь за тупой вопрос, просто как-то раньше необходимости работы с БД не было, а тут понадобилось. гугл вроде всё понятно объясняет, но вот ни как не могу найти ответ на вопрос

    Как можно вывести все значения последней строки в таблице ?
     
  2. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    MySql:
    SELECT * FROM `tbl` ORDER BY `tbl`.`id` DESC
    или
    SELECT * FROM `tbl` ORDER BY `tbl`.`id` DESC LIMIT 0, 1
    или считать все строки и выводить последнию через
    SELECT * FROM `tbl` WHERE id = $last_num ;
     
  3. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    попробуй сделать обычный запрос как будто выводишь первую строку и поставь в коде DESC

    P.S опередили =)
     
  4. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    ....=str_replace("\r\n", "\r\n,", ....)
     
  5. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Значит, дан многомерный массив, содержащий в себе породы собак:

    PHP:
    Array
    (
        [
    0] => Array
            (
                [
    id] => 6748
                
    [name] => Акита-ину
                
    [popularity] => 2
                
    [listings_count] => 0
                
    [kirname] => akita-inu
            
    )

        [
    1] => Array
            (
                [
    id] => 6722
                
    [name] => Американский бульдог
                
    [popularity] => 3
                
    [listings_count] => 0
                
    [kirname] => amerikanskij_bulqdog
            
    )

        [
    2] => Array
            (
                [
    id] => 6711
                
    [name] => Английский бульдог
                
    [popularity] => 4
                
    [listings_count] => 0
                
    [kirname] => anglijskij_bulqdog
            
    )
    ..................
    )
    Как этот массив отсортировать так, что бы элементы (а именно 'подмассивы'), содержащие [name] => Дворняжка маленькая, [name] => Дворняжка средняя и [name] => Дворняжка крупная, шли первыми в этом массиве? Вроде, надо как-то через usort, но не получается..
     
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Architek86 Если нужно отсортировать по полю name по алфавиту - то так:
    PHP:
    $input = array(
    array(
    'id'=>6722'name'=>'Американский бульдог','popularity'=>2,'listings_count'=>0,'kirname'=>'amerikanskij_bulqdog'),
    array(
    'id'=>6748'name'=>'Акита-ину','popularity'=>2,'listings_count'=>0,'kirname'=>'akita-inu'),
    array(
    'id'=>6711 'name'=>'Английский бульдог','popularity'=>2,'listings_count'=>0,'kirname'=>'anglijskij_bulqdog')
    );

    function 
    cmp($a,$b) { return strnatcmp($a['name'],$b['name']); }

    print_r($input);
    usort($input,'cmp');
    print_r($input);
    З.Ы. Ваше задание не совсем понятно, входной массив дан один, а, когда говорите про отсортированный - уже другие имена
     
    _________________________
  7. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    кароче вот весь код

    PHP:
    <?php

    $myFile 
    "form.txt";

    if (
    $_GET) {
        
    $fh fopen($myFile'w+') or die("can't open file");
        
    $stringData $_GET['name']."\n";
        
    fwrite($fh$stringData);
        
    fclose($fh);
    } else {
        
    $fh fopen($myFile'r');
        
    $theData fread($fhfilesize($myFile));
        
    fclose($fh);
    }

    ?>


    <p>Hello
    <?php 
    if (isset($_GET['name'])) {
                                echo 
    ' '.$_GET['name'];
                                } 
    ?></p>
    в файл записывает, а так не выводит что за бред?кривые руки?
     
  8. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    SaiRus,
    Кривые =)
    $stringData = $_GET['name']."\n";
    присваиваем переменной $stringData = полученную из урл ?name
    if (isset($_GET['name'])) {
    echo ' '.$_GET['name']; }
    Дальше думаю понятно =)
    Или меняй местами
    $_GET['name'] = $stringData."\n";
    Или проверяй и выводи $stringData
    И я кстати не понял зачем этот код :D
    if ($_GET) - к чему это? И вообще что он проверяет? глобальную переменную GET не врет ли она :confused:
     
    #11128 KaMiKadZe, 6 Aug 2009
    Last edited: 6 Aug 2009
  9. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    ясно, только ответ на 1 вопрос пришел а на самый важный ты чет не ответил... :mad:
     
  10. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    в принципе верхний код мне нахер не нужен это пример автора LightWindow я не могу понять, почему он переменной $stringData присваивает и выводит ее в файл к примеру, а когда я напрямую вывожу эту переменную он ее не выводит....
     
  11. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    Короче я не знаю зачем этот код, но думаю вот так должно работать и пишет и выводит...
    PHP:
    <?php
    $myFile 
    "form.txt";

    if(isset(
    $_GET['name'])) {
        
    $fh fopen($myFile'w+') or die("can't open file");
        
    $stringData $_GET['name']."\n";
        
    fwrite($fh$stringData);
        
    fclose($fh);
    } else {
        
    $fh fopen($myFile'r');
        
    $theData fread($fhfilesize($myFile));
        
    fclose($fh);
    }
    ?>


    <p>Hello
    <?php
    if(isset($_GET['name'])) {
        echo 
    ' '.$_GET['name'];
    }
    ?></p>
    Работает так you_file.php?name=Putin
    p.s Только что понял что от плохого кода появляются плохие мысли и рождают еще худший код :D
     
    1 person likes this.
  12. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    мда...ребят...и что если подставил проверку на "не нуль" типа суть поменялась...
    если тот код был говнокодом, то вот еще говнокод в квадрате, из этой формы данные передаются в тот говнокод и тут гета как видно нету и обрабатывается все скриптом, только не понятно почему данные только в файл записывает и приходиться от туда дергать, а кроме файла с ними ни как не получается аппирировать....
    Code:
    <form id="sample-form" name="sample-form">  	
    <input id="name" name="name" type="text" value="What is your name?" /> 
    <a href="hello.php" params="lightwindow_form=sample-form" class="lightwindow_action" rel="submitForm">
    <button>Submit</button></a> 
    or <a href="#" class="lightwindow_action" style="color: blue;" rel="deactivate">Cancel</a>  			</li>  		</ul>  </form>
    но все равно спасибо за терпение...говнокод ведь ни каждому под силам читать :)

    PHP:
    <?php    $myFile "form.txt";    
    if (isset(
    $_GET['name'])) 
    {
    $fh fopen($myFile'w+') or die("can't open file");      
    $stringData $_GET['name']."\n";      
    $theData $stringData;
    fwrite($fh$stringData);
    fclose($fh);  } ?>
      <p>Hello 
     <?php   if (isset($theData)) 
    {echo 
    ' '.$theData;  } ?></p>
    в этом случае он вписывает в файл, а $theData не выводит :confused:
     
    #11132 SaiRus, 7 Aug 2009
    Last edited: 7 Aug 2009
  13. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    Гет тут типа через хитро завязанные на узелок яйца :D
    PHP:
    <a href="hello.php" params="lightwindow_form=sample-form" class="lightwindow_action" rel="submitForm">
    Вот так вот правильнее
    Отправляем:
    PHP:
    <form id="sample-form" name="sample-form" action="script.php"  method="get">      
    <
    input id="name" name="name" type="text" value="What is your name?" /> 
    <
    input type="submit" value="К скрипту" name="send" ></form>
    Принимаем в файл script.php
    PHP:
    <?php
    $myFile 
    "form.txt";

    if(isset(
    $_GET['send'])) {
        
    $fh fopen($myFile'w+') or die("can't open file");
        
    $stringData $_GET['name']."\n";
        
    fwrite($fh$stringData);
        
    fclose($fh);
    } else {
        
    $fh fopen($myFile'r');
        
    $theData fread($fhfilesize($myFile));
        
    fclose($fh);
    }
    ?>


    <p>Hello
    <?php
    if(isset($_GET['name'])) {
        echo 
    ' '.$_GET['name'];
    }
    ?></p>
    Ничего не понял...
    Тут работа с классом и что в нем хз...
    По тому что есть могу сказать что ты создаешь объект, отключаешь в нем киширование, что то еще делаешь =)
    А дальше выводишь шаблон...
    Я не знаю что ты хочешь сделать, я думаю сократить код, тогда в классе допиши метод чтобы он просто вызывал display
    типа
    PHP:
    public function ddd($header,$content,$menu,$footer)
    {
    $return display($header.".tpl");
    $return .=  display($content.".tpl");
    $return .= display($menu.".tpl");
    $return .= display($footer.".tpl");
    return 
    $return;
    }
    И делай так $tpl->ddd(header,content,menu,footer);
     
    #11133 KaMiKadZe, 7 Aug 2009
    Last edited: 7 Aug 2009
  14. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    KaMiKadZe :) тогда хитро завязаные в узилок яйца, которые чувак вязал с 2007 года и до сих пор вяжет мне надо будет связать до середины августа :) а про метод и актион я вроде секу...
     
    #11134 SaiRus, 7 Aug 2009
    Last edited: 7 Aug 2009
  15. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    PHP:
    /* Не работает :( */
    if($_GET['id'])
    {
    if (!
    preg_match ("/^[0-9]$/i" $_GET['id'])){exit;}
    }
    у меня есть ссылка вида page.php?id=287201
    Параметр id принимает только значения rand(0,7777777), выше указанный код не корректно работает, при любых значениях id скрипт продолжает работать :(
     
  16. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    судя по регулярке, ты проверяешь, число ли, тогда тебе нужна функция is_int или is_numeric
     
    #11136 scrat, 7 Aug 2009
    Last edited: 7 Aug 2009
    4 people like this.
  17. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    вместо
    PHP:
     if (!preg_match ("/^[0-9]$/i" $_GET['id'])){exit;}
    Делаем
    PHP:
    if (!is_numeric($_GET['id'])) {exit;}
    Твой код неоднозначный, он возвращает не true или false, а число значений найденных...
     
    1 person likes this.
  18. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    PHP:
    /* Работает */

    mysql_query("INSERT INTO comments (date) VALUES (NOW())");

    /* Не работает :( */


    mysql_query("INSERT INTO `comments` (`date`,`bla`) VALUES ('".NOW()."', ".addslashes($bla)."')") or die(mysql_error()); //line 9

    Fatal error: Call to undefined function NOW() in comments.php on line 9
     
  19. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    PHP:
      $time date('Y-m-d G:i:s'); //или твой формат даты 
      
    $bla $_POST['pic'];
    mysql_query("INSERT INTO `comments` (`date`,`gallery`) VALUES ('" $time "', ".addslashes($bla)."')") or die(mysql_error()); //line 9
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '')' at line 1
     
  20. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    У тебя now() исполняется как функция php =)
    PHP:
    mysql_query("INSERT INTO `comments` (`date`,`bla`) VALUES (NOW(), '".addslashes($bla)."')") or die(mysql_error()); //line 9
    NOW() - функция MySQL и её нужно брать без кавычек =)

    Если хочешь в PHP генерировать дату, то
    PHP:
    $time date('Y-m-d G:i:s'); //или твой формат даты
    mysql_query("INSERT INTO `comments` (`date`,`bla`) VALUES ('" $time "', '".addslashes($bla)."')") or die(mysql_error())
    p.s. ты забыл кавычку открывающую перед аддслешс =)
    p.s.s. я обновил
     
    1 person likes this.
Thread Status:
Not open for further replies.