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

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

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

    TOP4 Banned

    Joined:
    19 Dec 2010
    Messages:
    23
    Likes Received:
    4
    Reputations:
    1
    Будьте добры, подскжите =)
    Есть строка вида
    Разделитель например знак табуляции но в принципе не важно.
    Как грамотно разбить эту строку и загнать в таблицу mysql? В таблице 9 полей, разбиваем строку на массив через preg_split, получаем 9 записей в массиве, а дальше как загнать массив в таблицу через INSERT INTO? Можно конечно по 1 записи вставлять, но мне надо что б одним запросом массив вставить.
     
    #17341 TOP4, 12 Jan 2011
    Last edited: 12 Jan 2011
  2. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    PHP:
    function mysql_insert($table$toAdd){
        
    $fields implode(array_keys($toAdd), ',');
        
    $values "'".implode(array_values($toAdd), "','")."'"# better
        
    $q 'INSERT INTO `'.$table.'` ('.$fields.') VALUES ('.$values.')';
        
    $res mysql_query($q)OR die(mysql_error());
        return 
    true;
    }
    юзать так:
    $toAdd=array(
    'pole1'=>'znachenie1',
    'pole2'=>'znachenie2',
    'pole3'=>'znachenie3'
    );
    mysql_insert('my_table', $toAdd);
     
    #17342 #Wolf#, 12 Jan 2011
    Last edited: 12 Jan 2011
  3. xez

    xez New Member

    Joined:
    11 Jan 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Приветствую всех уважаемые форумчане. Вот хотел поинтересоваться знает ли кто как реализовать скрипт для сайта на движке ДЛЕ или для форума IPB чтобы на автомате распознавал ссылки и менял их автоматом на картинки с нарисованным адресом этой ссылки, но без линка на сайт. (при добавлении поста)
    т.е. человек указал ссылку в посте - она вроде как и осталась но в виде картинки, а хтмл коде [​IMG] и никакой чужой ссылки - только картинка с моего сайта.
     
  4. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    оно чёт серовно отдельно открывается
    мне надо штоб при нажатии на ссылку в страницу инклудилась страница
     
    #17344 qaz, 12 Jan 2011
    Last edited: 12 Jan 2011
  5. GrimmJow

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

    Joined:
    24 Nov 2007
    Messages:
    36
    Likes Received:
    7
    Reputations:
    0
    Ребят, нужно присвоить переменной текст. Проблема в том, что в тексте куча одинарных и двойных кавычек, поэтому экранировать каждую их них - большой геморрой.
    Как произвести присвоение?
     
  6. Semyon

    Semyon New Member

    Joined:
    6 Jan 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Короче есть строка типа

    {a|b|c} afsfsdg {z|n|c} dasjjsa {sda|das|fsdg}

    Как сделать функцию которая будит выбирать случайный вариант для каждой пары скобочек и возвращать получившееся в результати предложение?
     
  7. GrimmJow

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

    Joined:
    24 Nov 2007
    Messages:
    36
    Likes Received:
    7
    Reputations:
    0
    Semyon

    Можно пойти в лоб и распарсить строку рег. выражением. Но мне кажется, генератор текста, который ты делаешь, можно написать по-другому:

    1. создаешь массив, где каждое значение - одно из слов {a|b|c}.
    2. ищешь случайное значение массива
    3. присваиваешь тексту.

    PHP:
    <?php

    $arr 
    = array("один""два""три");
    $rand array_rand($arr);

    $myText $arr[$rand] . " бла-бла-бла";

    ?>
     
  8. TOP4

    TOP4 Banned

    Joined:
    19 Dec 2010
    Messages:
    23
    Likes Received:
    4
    Reputations:
    1
    Это всё не грамотно! Это Local file include или remote file include, и вообще считается дурным тоном)) Юзай mysql, а если не умеешь - то учи, но не лепи дырявую х*йню ;)
     
  9. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    mysql_escape_string?
     
  10. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    То есть addslashes()
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    GrimmJow 1) в Notepad++ есть опция экранирования кавычек в выделенном тексте
    2) Либо варганите следующее:
    PHP:
    $in file_get_contents('fl.txt'); // В fl.txt текст, который нужно экранировать
    echo addcslashes($in"\\'"); // тут будет выведен текст, в котором все кавычки проэкранированы, лучше выводить в файл, а не в браузер
    3) Если в тексте нет знака доллара, то можно так:
    PHP:
    $text = <<<HTT
    тут любой текст с любым набором кавычек
    HTT;
    // HTT должно быть в начале строки
    Semyon
    PHP:
    $text '{a|b|c} afsfsdg {z|n|c} dasjjsa {sda|das|fsdg}';

    function 
    cb($arr)
    {
        
    $arr explode('|'$arr[1]);
        return 
    $arr[array_rand($arr)];
    }

    echo 
    preg_replace_callback('~\{([^{}]+)\}~','cb',$text);
    TOP4 Вы пишете CMS без единого инклуда? Покажите, хочется посмеяться
     
    _________________________
    #17351 Gifts, 12 Jan 2011
    Last edited: 12 Jan 2011
  12. GrimmJow

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

    Joined:
    24 Nov 2007
    Messages:
    36
    Likes Received:
    7
    Reputations:
    0
    miako да, addslashes() неплох

    [/QUOTE]<<<HTT
    HTT;
     
  13. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    Вот возникла маленькая проблемка, я начал писать сайтиг(пробный), там стало получатся много фойлов и я решил разфосовать их по папкам и чегото перестало работать(пути я поправил)

    вот к примегу

    index.php(авторизация)
    находится в корне

    Code:
    <form action = "action/actionvhod.php" method = "post"> 
    

    actionvhod.php(обработка авторизаци)
    находится в папке
    /action/actionvhod.php

    Code:
    <?
     session_start(); 
    if (isset($_POST['user_login']) && isset($_POST['user_pass']))
    include ("db/dbconnect.php");
    
    $query = "SELECT `id`
                FROM `serfinguser`
                WHERE `user_name`='{$user_login}' AND `user_pass`='{$user_pass}'
                LIMIT 1";
        $sql = mysql_query($query) or die(mysql_error());
    if (mysql_num_rows($sql) == 1) {
    $row = mysql_fetch_assoc($sql);
            $_SESSION['id'] = $row['id'];
    header("Location: site.php");   
    }
        else {
            die('Такой логин с паролем не найдены в базе данных.');
        }
    
    
    ?> 
    




    в actionvhod.php инклудится файл dbconnect.php(благодоря которому происходит подключение к БД)

    dbconnect.php
    находится в тоже в другой папке
    db/dbconnect.php


    код ошибки такой


    Code:
    Warning: include(): Unable to access db/dbconnect.php in /usr/home/mai1-ru/htdocs/serfing/action/actionvhod.php on line 4 Warning: include(db/dbconnect.php): failed to open stream: No such file or directory in /usr/home/mai1-ru/htdocs/serfing/action/actionvhod.php on line 4 Warning: include(): Unable to access db/dbconnect.php in /usr/home/mai1-ru/htdocs/serfing/action/actionvhod.php on line 4 Warning: include(db/dbconnect.php): failed to open stream: No such file or directory in /usr/home/mai1-ru/htdocs/serfing/action/actionvhod.php on line 4 Warning: include(): Failed opening 'db/dbconnect.php' for inclusion (include_path='.:/usr/local/share/pear') in /usr/home/mai1-ru/htdocs/serfing/action/actionvhod.php on line 4 Warning: mysql_query(): Access denied for user 'map'@'localhost' (using password: NO) in /usr/home/mai1-ru/htdocs/serfing/action/actionvhod.php on line 10 Warning: mysql_query(): A link to the server could not be established in /usr/home/mai1-ru/htdocs/serfing/action/actionvhod.php on line 10 Access denied for user 'map'@'localhost' (using password: NO)
    


    почему выдаёт ету ошибку???
    пути я ж правильно поставил
     
  14. KATYA

    KATYA Active Member

    Joined:
    9 Feb 2009
    Messages:
    236
    Likes Received:
    121
    Reputations:
    9
    Мб. с правами на файле что-то не то?
     
  15. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz путь для инклуда указывается относительно файла, который пытается инклудить. То есть относительно actionvhod.php, а не index.php. Правильнее будет:
    PHP:
    include ("../db/dbconnect.php");
     
    _________________________
    1 person likes this.
  16. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    Такой вопрос, есть строка в БД

    например
    _______________
    ид/логин/пароль/
    ---------------------
    1/усер/ 12345
    --------------------
    2/усерак/ 1234577
    --------------------

    как например составить запрос штоб изменить только пароль там где ид(который указан)
     
  17. Фараон

    Фараон коКотэ Of Antichat

    Joined:
    7 Nov 2010
    Messages:
    153
    Likes Received:
    105
    Reputations:
    83
    PHP:
    UPDATE users SET password='pass' WHERE id=1
     
  18. TOP4

    TOP4 Banned

    Joined:
    19 Dec 2010
    Messages:
    23
    Likes Received:
    4
    Reputations:
    1
    Почитайте внимательнее, что ему нужно!! Судя по всему
    <a href="include.php?file=valera.php">
     
  19. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75

    чёт не меняет значения в БД

    PHP:
    <?
    if (
    $answer ==1)
    {
     
            include (
    "dbconnect.php");  
            
    $voplata=$_REQUEST['id'];  
           
    $sql"UPDATE  zakaz SET voplata = 'выплачено ' WHERE 'id' = '{$voplata}' ";
               
    $r=mysql_query ($sql);  
         
             
           
    header("Location: site.php");  
      

    }
    elseif  (
    $answer ==2)
    {

     include (
    "dbconnect.php");  
            
    $voplata=$_REQUEST['id'];  
           
    $sql"UPDATE  zakaz SET 'voplata' = 'отказано в выплате ' WHERE 'id' = '{$voplata}' ";
               
    $r=mysql_query ($sql);  
         
      
    header("Location: createzakaz.php");  
    }
    ?>
    где я ошибся?
     
  20. Фараон

    Фараон коКотэ Of Antichat

    Joined:
    7 Nov 2010
    Messages:
    153
    Likes Received:
    105
    Reputations:
    83
    PHP:
    <?php
    if($answer==1

      
            include (
    "dbconnect.php");   
            
    $voplata=mysql_real_escape_string($_REQUEST['id']);   
            
    $sql"UPDATE zakaz SET voplata='выплачено' WHERE id='$voplata'"
               
    $r=mysql_query($sql) or die(mysql_error());   
          
              
           
    header("Location: site.php");   
       


    elseif(
    $answer==2


     include (
    "dbconnect.php");   
            
    $voplata=mysql_real_escape_string($_REQUEST['id']);   
            
    $sql"UPDATE zakaz SET voplata='отказано в выплате' WHERE id='$voplata'"
               
    $r=mysql_query($sql) or die(mysql_error());   
          
      
    header("Location: createzakaz.php");   

    ?>
    В Вашем коде была SQL инъекция.
    Если мой код не сработает, кидайте ошибку сюда.
     
Thread Status:
Not open for further replies.