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

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

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

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

    Joined:
    28 Sep 2007
    Messages:
    587
    Likes Received:
    462
    Reputations:
    5
    мб картинки нету ??
     
  2. ASQX

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

    Joined:
    21 Jun 2008
    Messages:
    47
    Likes Received:
    16
    Reputations:
    1
    нее, все есть, мб кто-нить знает как ето реализовать?


    вот ошибка
    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/userbarscript.php:1) in /www/htdocs/userbarscript.php on line 2
     
  3. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Ты уже делаешь вывод в браузер а потом заново пытаешься послать head, если файл не иклюдиться никуда где идет вывод то возможно что где то выше идут пробелы или сохраняешь в utf-8 с BOM
     
  4. ASQX

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

    Joined:
    21 Jun 2008
    Messages:
    47
    Likes Received:
    16
    Reputations:
    1
    как ето исправить?
    я в пхп ноль.
     
  5. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Помогите с игрой "Сколько лепестков у розы?"
    <html>
    <head>
    <title>Скільки листків в рози?</title>
    </head>
    <body bgcolor = "tan">
    <center>
    <font face ="Comic Sanc MS">
    <h1>Petals Around the Rose</h1>
    <?php


    printGreeting();
    printDice();
    printForm();

    function printGreeting()
    {
    global $guess, $numPetals;
    $guess = $_POST['guess'];

    if (empty($_POST['guess']))
    {
    echo "<h3>Welcome to petals around the rose</h3>";

    }
    else if ($_POST['guess']==$_POST['numPetals'])
    {
    echo "You got it";
    }
    else
    {
    echo "<h3>from last try:</h3><br>
    you guessed:";
    echo $_POST['guess'];
    echo "<br>";
    echo " and the correct answer was:";
    echo $numPetals;
    echo "petals around the rose<br>";
    }// закінчення if
    }// закінчення фунції printGreetin

    function printDice()
    {
    global $numPetals;
    print "<h3>New Roll:</h3>";
    $numPetals = 0;
    $die1 = rand(1,6);
    $die2 = rand(1,6);
    $die3 = rand(1,6);
    $die4 = rand(1,6);
    $die5 = rand(1,6);

    showDie($die1);
    showDie($die2);
    showDie($die3);
    showDie($die4);
    showDie($die5);

    print "<br>";

    calcNumPetals ($die1);
    calcNumPetals ($die2);
    calcNumPetals ($die3);
    calcNumPetals ($die4);
    calcNumPetals ($die5);

    }//закінчення функції printDice

    function showDie($value)
    {
    echo "<img src = dice$value.jpg
    height = 100
    width = 100>";
    }//end of showDie


    function calcNumPetals ($value)
    {
    global $numPetals;
    if ($value==3)
    {
    $numPetals+=2;
    }
    else if ($value==5)
    {
    $numPetals+=4;
    }


    }// end of calcNumPetals

    function printForm ()
    {
    global $numPetals;
    echo '<h3>How many petals around the rose?</h3>
    <form method = "post">
    <input type = "text"
    name = "guess"
    value = "">
    <br>
    <input type="hidden"
    value="$numPetals"
    name="numPetals" /> <!-- передаем прав. число -->
    <input type = "submit">
    </form>
    <br>
    <a href = "petalHelp.html"
    target = "helpPage">
    give me a hint</a>';

    }//end Printform


    echo "<br>Получилось $numPetals лепестков";


    ?>
    </font>
    </center>
    </body>
    </html>
    [​IMG]
    Почему у меня функцыя printGreeting(); не принимает сгенерированое функцыей calcNumPetals значение $numPetals а принимает только запрос guess введеный ф форму функцыи PrintForm
     
    #9205 Patronik, 23 Mar 2009
    Last edited: 23 Mar 2009
  6. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Как можно реализовать такое ... есть html страница, там слово в тегах <TEST>antichat</TEST> ... как можно получить с этой страницы слово antichat ?(оно не статично)

    перелопатил весь гугл, но про парсинг html тэгов ничего конкретного не нашёл(
     
    1 person likes this.
  7. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    preg_match('#<TEST>(.*?)</TEST>#i'$page$match);
    print_r($match);
     
  8. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    А потому что ты сначала выводиш свой $numPetals функцией printGreeting();, а только потом заносиш туда значение в printDice().

    Сначала должны делаться все расчёты, а только потом нужно делать вывод.
     
  9. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    а чем он собственно отличается от парсинга XML?
     
  10. art2222

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

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Страница уже отправлена, а ты модифицируешь заголовки. Тут, имхо, либо юзать ajax либо вот это http://de2.php.net/manual/ru/function.ob-start.php
     
  11. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Ну хотя бы тем что в пхп готовые расширения включеные по умолчанию для парсинга XML и наврятли ты ими отпарсишь html во многих случаях.
     
  12. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Так дело в том что printGreeting(); сначала испоняет TRUE
    PHP:
    if (empty($_POST['guess']))         {             echo "<h3>Welcome to petals around the rose</h3>";              }
    а потом уже при повторном запуске после ввода guess должна вывести и ваш запрос и число лепестков(numPetals)
     
  13. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Разобрался.
    Вместо
    PHP:
    value="$numPetals"
    должно быть
    PHP:
    value="'.$numPetals.'"
    Проверяй что у тебя в переменных хранится.
    UPD
    ан нет, это не решение проблемы, это просто косяк в коде, нужно думать дальше...
     
    #9213 Gray_Wolf, 23 Mar 2009
    Last edited: 23 Mar 2009
  14. 159932

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

    Joined:
    28 Sep 2007
    Messages:
    587
    Likes Received:
    462
    Reputations:
    5
    у тебя в скрипте не должно ничего выводиться до этого .. ни пробелов, ничего ..
    если даже перед <?php есть пробел, то работать не будет

    также у меня както возникали проблеммы с хеадерами в юникоде .. так что ставь анси
     
  15. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Так работает но обясни почему
    PHP:
    value="'.$numPetals.'"
    ? а не просто
    PHP:
    value="$numPetals"
     
  16. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Без апострофов запрос будет
    PHP:
    SELECT FROM TABLE WHERE id=$numPetals
    С аппострофами
    PHP:
    SELECT FROM TABLE WHERE id='$numPetals'
    Правильный синтаксис мускуль - второй вариант.
     
  17. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    2mailbrush там в другом беда. (даже мускуля совсем нету : )

    PHP:
    echo '<h3>How many petals around the rose?</h3>
    <form method = "post">
    <input type = "text"
    name = "guess"
    value = "">
    <br>
    <input type="hidden"
    value="$numPetals"
    name="numPetals" /> <!-- передаем прав. число -->
    <input type = "submit">
    </form>
    <br>
    <a href = "petalHelp.html"
    target = "helpPage">
    give me a hint</a>'
    ;
    При такой записи в value ты заносиш не значение переменной $numPetals, а просто строку "$numPetals".

    P.S. вообще такой способ занесения значения переменной в строку в корне неверен, и возможен только в PHP. Зачем всё время надеятся на непонятную автоматику?
    $a="->".$b."<-";
    Такой способ записи намного наглядней, и точно глучить не будет, в отличии от :
    $a="->$b<-";

    PHP:
    echo '<h3>How many petals around the rose?</h3>
    <form method = "post">
    <input type = "text"
    name = "guess"
    value = "">
    <br>
    <input type="hidden"
    value="'
    .$numPetals.'"
    name="numPetals" /> <!-- передаем прав. число -->
    <input type = "submit">
    </form>
    <br>
    <a href = "petalHelp.html"
    target = "helpPage">
    give me a hint</a>'
    ;
    И сразу видно что, как и куда ты заносиш.
     
    #9217 Gray_Wolf, 24 Mar 2009
    Last edited: 24 Mar 2009
  18. DDoSька

    DDoSька Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    317
    Likes Received:
    352
    Reputations:
    18
    https://forum.antichat.ru/showpost.php?p=1186479&postcount=31
    Хелп :) ПлеаЗэ
     
  19. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Спасибо.
    Я учу пхп из книжки там повсюду так заносят значение переменной и у меня 90% кодов из книжки не работают.
    [​IMG]
    Вот отсюда я писал
     
  20. Shadow_p1raT

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

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    DDoSька
    2
    PHP:
    <?php 
    $url 
    'http://localhost/test/1.php';// Путь до скрипта который принимает файл 
    $file 'C:\wamp\www\test\секас.jpg'// Путь до нашего файла 
    $data = array('file' => '@' $file); // Заголовки при отправке(снифаем снифером) и не забываем ставить @ 
    $ch curl_init(); 
          
    curl_setopt($chCURLOPT_RETURNTRANSFER1); 
          
    curl_setopt($chCURLOPT_TIMEOUT60); 
          
    curl_setopt($chCURLOPT_URL$url); 
          
    curl_setopt($chCURLOPT_POSTtrue); 
          
    curl_setopt($chCURLOPT_POSTFIELDS$data); 
          
    curl_setopt($chCURLOPT_USERAGENT'Opera/9.62 (Windows NT 6.0; U; ru) Presto/2.1.1'); 
          
    curl_setopt($chCURLOPT_HEADERtrue); 
          
    $res curl_exec($ch); 
          
    curl_close($ch); 
    echo 
    $res

    ?>
     
    1 person likes this.
Thread Status:
Not open for further replies.