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

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

Thread Status:
Not open for further replies.
  1. >>chiz<<

    >>chiz<< New Member

    Joined:
    4 Sep 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    проблема с InnoDB

    Здравствуйте
    У меня проблема. Есть две таблицы, table1, table2.
    В table2 внешний ключ на поле ид из table1.
    При добавлении данных в table2 выдает ошибку:

    "Cannot add or update a child row: a foreign key constraint fails (`ikr`.`table2`, CONSTRAINT `table2_fk` FOREIGN KEY (`id_name`) REFERENCES `table1` (`id_name`) ON DELETE CASCADE)
    :confused: че не так? если надо - допишу поля таблицы
     
  2. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,378
    Likes Received:
    1,095
    Reputations:
    356
    и снова здравствуйте. :)
    как мы помним из предыдущего вопроса если пишу как в исходнике if (!isset($id)) то форма не выводится, а если вот так if (!isset($_GET['id'])) то выводится, но теперь выдает ошибку
    PHP:
    if (!isset($_GET['id']))
        {
    $result=mysql_query ("select title, id from lessons"); 
    $myrow mysql_fetch_array  ($result);
    do { 
    printf ("<p><a href='edit_lesson.php?id=%s'>%s</a></p>",$myrow["id"],$myrow["title"]);
        }
    while (
    $myrow mysql_fetch_array  ($result));
        } 
        else
        {
           
    $result=mysql_query ("select * from lessons where  id  =$id"); 
           
    $myrow mysql_fetch_array  ($result); //ошибку выдает в этой строке типа Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result .  пробовал строкой выше обыграть id  =$id 
        
    print<<<HERE
    <form name="form1" method="post
    "
    ну так вот пробовал обыграть from lessons where id =$id результаты самые разные кроме нужного. а нужно чтобы из базы подставляла данные в форму.

    то ли гуглил плохо, то ли вопрос не так задвал.
    вопрос:
    1) как правильно написать
    2) что-то поменялось в пхп в последние годы и стоит брать учебники посвежее или что там не так?
     
    _________________________
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    оlbaneс просто в какой то момент люди отошли от концепции, что register_globals - это нормально. У вас не задана переменная $id. Плюс через нее возможно проведение инъекций. Следует писать так:
    PHP:
    $result=mysql_query ('select * from lessons where  id="'.mysql_real_escape_string($_GET['id']).'"');
    // Ну и дополнительно:
    if (!$result) die('Ошибка в запросе: '.mysql_error());
     
    _________________________
    1 person likes this.
  4. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,378
    Likes Received:
    1,095
    Reputations:
    356
    учитэл, я не достоин обращения на Вы. попрошу мне тыкать :)
    я в этот самый момент доставал изиса и он выдал тоже рабочий вариант.
    PHP:
    $result=mysql_query ("select * from lessons where `id` = '" intval($_GET['id']) . "'");
    кстати, пока гуглил прочитал что в следующем выпуске пхп введут какие то супер глобальные переменные.
    спасибо!
     
    _________________________
    #17924 оlbaneс, 13 Mar 2011
    Last edited: 13 Mar 2011
  5. Фараон

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

    Joined:
    7 Nov 2010
    Messages:
    153
    Likes Received:
    105
    Reputations:
    83
    PHP:
    if (!isset($_GET['id'])) 
        { 
    $result=mysql_query("select title, id from lessons");  
    $myrow = mysql_fetch_array ($result); 
    while($myrow=mysql_fetch_array ($result))
    {
    ?><p><a href="edit_lesson.php?id=<?=$myrow['id']?>><?=$myrow["title"]?></a></p>
    <?php
        

        else 
        { 
    $id mysql_real_escape_string($_GET['id']);
           
    $result=mysql_query("select * from lessons where  id  ='$id'");  
           
    $myrow mysql_fetch_array ($result)
    }
     
    ?>
    <form name="form1" method="post 
     
    #17925 Фараон, 13 Mar 2011
    Last edited: 13 Mar 2011
  6. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Как заставить работать mail(); через прокси ?
     
  7. p1oneer

    p1oneer Member

    Joined:
    23 Dec 2008
    Messages:
    192
    Likes Received:
    19
    Reputations:
    2
    Предположим есть страница page.php
    PHP:
    <?php
    session_start
    ();
    if (isset(
    $_SESSION['user_id']))
    {
        print 
    '<p>Здравствуйте, %username%.</p>';
    }
    else
    {
        die(
    'Доступ запрещен.');
    }
    ?>
    Суть: если пользователь авторизовался, то при переходе на page.php он увидит текст "Здравствуйте, %username%.", в противном случае увидит "Доступ запрещен.". У меня все отлично работает, но вместо одной фразы мне нужно отобразить приличную web-страницу (не ссылку). Подразумевается, что юзер увидит то, что находится между первыми фигурными скобками, но туда не скопируешь ведь просто html-код. Не подскажите как мне можно это реализовать, а то не могу дойти своим умом.
     
  8. qssD

    qssD New Member

    Joined:
    16 Dec 2010
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    PHP:
    header("Content-Type: image/png");

    $image imagecreatepng('extruly.png');
    $textcolor imagecolorallocate($image,0,0,255);

    imagestring($image,2,5,2,"I love ub-gen.ru",$textcolor);

    imagepng($image);

    imagedestroy($image);
    Добрый вечер всем, подскажите что не так делаю? Хочу вывесим изображение extruly.png , не получается просто пустая страница получается подскажите где исправить заранее спасибо
     
  9. Player#1

    Player#1 Member

    Joined:
    11 Nov 2008
    Messages:
    95
    Likes Received:
    35
    Reputations:
    10
    p1oneer
    Вариантов много.
    Например так:
    PHP:
    <?php
    session_start
    ();
    if (isset(
    $_SESSION['user_id']))
    {
    ?>
    ЗДЕСЬ HTML ДЛЯ АВТОРИЗОВАННЫХ ЮЗЕРОВ
    <?php
    }
    else
    {
    ?>
    ДОСТУП ЗАПРЕЩЕН
    <?php
    }
    ?>
    Либо так:
    PHP:
    <?php
    session_start
    ();
    if (!isset(
    $_SESSION['user_id']))
    {
    die(
    'Доступ запрещен');
    }
    ?>
    Здесь Html Для авторизованных юзеров
    И еще 100500 вариантов.
     
  10. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    imagecreateFROMpng();
     
  11. p1oneer

    p1oneer Member

    Joined:
    23 Dec 2008
    Messages:
    192
    Likes Received:
    19
    Reputations:
    2
    Player#1
    PHP:
    <?php
    session_start
    ();
    if (isset(
    $_SESSION['user_id']))
    {
    ?>
    ЗДЕСЬ HTML ДЛЯ АВТОРИЗОВАННЫХ ЮЗЕРОВ
    Этот код надо размещать до тега <html> или <body>? А то у меня сейчас появляется ошибка: "Cannot send session cache limiter - headers already sent".
     
  12. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    session_start(); до вывода буфера.
     
  13. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    PHP:
    function get_lang($var){
        global 
    $db;
        
    $page htmlspecialchars($_GET['page']);
        
    $sql "SELECT `page_keywords`, `page_description`, `page_title`, `page_content` FROM `pages` WHERE `page_name` = ? AND page_language = ?";
        
    $statement $db->prepare($sql);
        
    $statement->bind_param('ss'$page$var);
        if(
    $statement->execute()){
            while(
    $row $statement->fetch()){
                
    $rows[] = $row;
            }
        }
    }
    как от сюда достать массив rows, так чтоб потом можно было в контенте использовать?
     
  14. Zhekiss

    Zhekiss Member

    Joined:
    12 Apr 2009
    Messages:
    0
    Likes Received:
    22
    Reputations:
    5
    PHP:

    <?
    $name=$_POST['name'];
    $email=$_POST['email'];
    $phone=$_POST['phone'];
    $message=$_POST['message'];

    $ToEmail = "[email protected]";
    $ToSubject = "Message from your site";

    $EmailBody =   "Name: $name\n 
                    Email: $email\n
                    Phone: $phone\n
                    Message: $message\n";

    $Message = $EmailBody;


    $headers .= "Content-type: text; charset=iso-8859-1\r\n";
    $headers .= "From:".$name." / ".$email."\r\n";

    mail($ToEmail,$ToSubject,$Message, $headers);

    ?>


    В пхп чайник, никогда не связывался.
    Где ошибка?
     
  15. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    *)тут точка перед равно не нужна + <?php - если выключен short_open_tag
     
    1 person likes this.
  16. $Lemur$

    $Lemur$ Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    70
    Likes Received:
    15
    Reputations:
    0
    Есть следующий скрипт(я его уже немного модифицировал от исходного поэтому возможны абсурдные приемы просьба на это внимание не обращать :D )
    PHP:
    <?php
    $lopass 
    file_get_contents("str.txt");
    list(
    $username$password) = split(":"$lopass);
    //$num_str =  count($lopass); //считаю количество строк в str.txt($lopass)
    $header = ($_POST['mytext']);
    $header iconv('Windows-1251''UTF-8'$header);
    $message = ($_POST['msg']);
    $message iconv('Windows-1251''UTF-8'$message);
    $sendto = ($_POST['to']);
    $sendto iconv('Windows-1251''UTF-8'$sendto);
    $boundary '---------------------' substr(md5(rand(032000)), 010);
    $xml  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
    $xml .= "<QUERIS username=\"$username\" password=\"$password\">\r\n";
    $xml .= "  <headerofpost>$header</headerofpost>\r\n";
    $xml .= "  <message>$message</message>\r\n";
    $xml .= "  <username>$sendto</username>\r\n";
    $xml .= "</QUERIS>\r\n";
    $data  "--$boundary\r\n";
    $data .= "Content-Disposition: form-data; name=\"xmlfile\"; filename=\"xmlfile\"\r\n";
    $data .= "Content-Type: text/xml; charset=UTF-8\r\n\r\n";
    $data .= "$xml\r\n";
    $data .= "--$boundary\r\n";
    $headers  "POST /offline_main.php HTTP/1.1\r\n";
    $headers .= "Host: www.host.lc\r\n";
    $headers .= "Content-Type: multipart/form-data, boundary=$boundary\r\n";
    $headers .= "Content-Length: " strlen($data) . "\r\n\r\n";
    $headers .= $data;
    $fs fsockopen('www.host.lc'80$errno$errstr30);
    if (
    $fs) {
    fwrite($fs$headers);
    $content '';
    while(!
    feof($fs)) {
    $content .= fgets($fs128);
    }
    fclose($fs);
    print 
    $content;
    }
    ?>
    в файле str.txt содержатся логин:пасс

    подскажите как мне его модифицировать что бы он выполнился для каждой пары(строки)

    находил упоминание про feof с нечто похожим примером, предполагаю что нужен цикл, но своим умом до окочательной реализации дойти не могу... хелп ми плиз :rolleyes:
     
  17. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    либо foreach, либо for($i=0;$i<$count($lopass);$i++)
    PHP:
    <?php 
    $lopass 
    file_get_contents("str.txt");  
    for(
    $i=0;$i<count($lopass);$i++)
    {
          list(
    $username$password) = split(":"$lopass);
          
    //$num_str =  count($lopass); //считаю количество строк в  str.txt($lopass) 
          
    $header = ($_POST['mytext']); 
          
    $header iconv('Windows-1251''UTF-8'$header); 
          
    $message = ($_POST['msg']); 
          
    $message iconv('Windows-1251''UTF-8'$message); 
          
    $sendto = ($_POST['to']); 
          
    $sendto iconv('Windows-1251''UTF-8'$sendto); 
          
    $boundary '---------------------' substr(md5(rand(032000)), 010); 
          
    $xml  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
          
    $xml .= "<QUERIS username=\"$username\" password=\"$password\">\r\n"
          
    $xml .= "  <headerofpost>$header</headerofpost>\r\n"
          
    $xml .= "  <message>$message</message>\r\n"
          
    $xml .= "  <username>$sendto</username>\r\n"
          
    $xml .= "</QUERIS>\r\n"
          
    $data  "--$boundary\r\n"
          
    $data .= "Content-Disposition: form-data; name=\"xmlfile\"; filename=\"xmlfile\"\r\n"
          
    $data .= "Content-Type: text/xml; charset=UTF-8\r\n\r\n"
          
    $data .= "$xml\r\n"
          
    $data .= "--$boundary\r\n"
          
    $headers  "POST /offline_main.php HTTP/1.1\r\n"
          
    $headers .= "Host: www.host.lc\r\n"
          
    $headers .= "Content-Type: multipart/form-data, boundary=$boundary\r\n"
          
    $headers .= "Content-Length: " strlen($data) . "\r\n\r\n"
          
    $headers .= $data
          
    $fs fsockopen('www.host.lc'80$errno$errstr30); 
          if (
    $fs) { 
          
    fwrite($fs$headers); 
          
    $content ''
          while(!
    feof($fs)) { 
          
    $content .= fgets($fs128); 
          } 
          
    fclose($fs); 
          print 
    $content
          }

    ?>
    скрипт не тестил, но будет примерно так
     
    #17937 SHiNiGaMi, 14 Mar 2011
    Last edited: 14 Mar 2011
    1 person likes this.
  18. p1oneer

    p1oneer Member

    Joined:
    23 Dec 2008
    Messages:
    192
    Likes Received:
    19
    Reputations:
    2
    Что-то я не совсем это понимаю, можешь показать на примере?
    Вот html-страница
    HTML:
    <html>
    <head>
    <title>Главная страница</title>
    </head>
    
    <body>
    <img src="site.jpg">
    <p>Здравствуйте, %username%.</p>
    </body>
    </html>
    Хотя содержимое тега <body> намного больше.
     
  19. qssD

    qssD New Member

    Joined:
    16 Dec 2010
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Добрый день всем, парни подскажите пожалуйста как реализовать следующее:
    Мне надо что бы юзверь выбирал картинку, и нажимал на кнопку и эта картинка, появлялась как это сделать?

    PHP:
    <br>
    <select name="Выберете изображение">
    <Option selected>Картинка1
    <option>Картинка2
    <option>Картинка3
    <option>Картинка4
    </select>
    <br>
    <?php

    header
    ("Content-Type: image/png");

    $image imagecreatefrompng('exwow.png');
    $textcolor imagecolorallocate($image,255255255);

    imagestring($image,2,5,2,"I love ub-gen.ru",$textcolor);

    imagepng($image);

    imagedestroy($image);


    ?>
    <input type = "button" value="View"> 
    Помогите пожалуйста, заранее спасибо.
     
  20. kappa

    kappa New Member

    Joined:
    19 Jul 2010
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    Всем привет!!!
    Вот пытаюсь найти толковый скрипт с фильтрами для моей формы (для комментариев),
    чтобы сохранял сообщение в базе и перенаправлял на исходную страницу.
     
Thread Status:
Not open for further replies.