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

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

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

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    надо было в школе математику учить...
    PHP:
     while($res3 =  mysql_fetch_array($res2)   ) 



        
    $pros ="0.028"
        
    $price $res3['product_price']; 
         
        
    $price $price * ($pros 1)  ; 

    print 
    "<p>$price<p>";

    }
     
  2. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    У тебя скорее всего стоит запятая в цене т.е к примеру:
    Тогда тебе нужно ее заменить!
    Это просто!
    PHP:
    while($res3 =  mysql_fetch_array($res2)   )

    {    
        
        
    $pros ="2.8";
        
    $price $res3['product_price'];
        
    $price str_replace(",","."$price);
        
    $price $price *  $pros  ;
    print 
    "<p>$price<p>";
    }
    -Это должно работать
     
  3. agrofyl2

    agrofyl2 New Member

    Joined:
    25 Apr 2008
    Messages:
    54
    Likes Received:
    4
    Reputations:
    0
    Вы неправильно поняли вопрос.

    Выражусь по другому:
    у меня открыт(!) сокет
    я периодически(в цикле) считываю данные,
    но если их нет, то ПХП ждет, когда они появятся, а мне нужно чтоб он не ждал, а возвращал false.(чем быстрее тем лучше)
     
    #3903 agrofyl2, 5 Jul 2008
    Last edited: 5 Jul 2008
    1 person likes this.
  4. gisTy

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    фигасе процент прибавить надо... вот ты посмотри.. получается что ты цену увеличиваешь пости что в три раза... а что бы цену увеличить на 2,8% надо умножить цену на 1,028 т.е. $price = $price * (1 + $pros / 100);
    в общем как то так=)
     
  5. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Меня попросили модифицировать скрипт а не исправить ошибку в прибавлении. Думаю проблема в запятых.
     
  6. gisTy

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    да и кстати... может я чего то не понимаю... но как ты умножаешь строку на число?
     
  7. PHPoozy

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

    Joined:
    1 Jul 2008
    Messages:
    149
    Likes Received:
    31
    Reputations:
    -22
    вот формуло ($price / 100) * $proc
     
    #3907 PHPoozy, 5 Jul 2008
    Last edited: 5 Jul 2008
  8. gisTy

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    э.. а эта формула не рулит? $price = $price * (1 + $pros / 100); вроде намного короче получается...
     
  9. PHPoozy

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

    Joined:
    1 Jul 2008
    Messages:
    149
    Likes Received:
    31
    Reputations:
    -22
    while(!feof($sock)) {}

    ничего сложного тут нет
     
  10. agrofyl2

    agrofyl2 New Member

    Joined:
    25 Apr 2008
    Messages:
    54
    Likes Received:
    4
    Reputations:
    0
    Может я плохо обьясняю....
    Перечитайте мой пост и попробуйте понять его смысл.
    т.е. если данных на данный момент нет - нужно пропустить считку на этот раз,
    если есть - считать
     
    #3910 agrofyl2, 5 Jul 2008
    Last edited: 5 Jul 2008
  11. PHPoozy

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

    Joined:
    1 Jul 2008
    Messages:
    149
    Likes Received:
    31
    Reputations:
    -22
    agrofyl2

    while(!feof($sock)) {

    if(fgets($sock, 1024) == ""){ break; }

    }

    ---
     
  12. gisTy

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    $b = fgets($fp);
    if ($b !== '') {то что надо сделать если пришли данные на сокет} else {то что надо сделать если данные на сокет не пришли}
    первое что в голову пришло
     
  13. PHPoozy

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

    Joined:
    1 Jul 2008
    Messages:
    149
    Likes Received:
    31
    Reputations:
    -22
    Кто на ты с регулярками?
     
  14. agrofyl2

    agrofyl2 New Member

    Joined:
    25 Apr 2008
    Messages:
    54
    Likes Received:
    4
    Reputations:
    0
    Ладно, спасибо всем кто "помог", думаю тут быстроработающего рещения небудет
     
    #3914 agrofyl2, 5 Jul 2008
    Last edited: 5 Jul 2008
  15. GoodGod

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

    Joined:
    20 Dec 2006
    Messages:
    216
    Likes Received:
    262
    Reputations:
    50
    Помогите оживить скрипт.

    PHP:
    <?
    $accsfile "accs.txt";
    $logsfile "logs.txt";
    $host "vkontakte.ru";
    $urlfriends "/friend.php"// страница, откуда будем парсить френдов
    $urlmail "/mail.php"// страница, откуда будем парсить secure-код и рассылать мессаги
    $title[] = "Привет!";
    $title[] = "Доброго времени дня!";
    $message[] = "Как поживаешь?";
    $message[] = "привет! Как твои дела?";
    set_time_limit(0);
    function 
    GetPage($domain$path$cookie) { $hostname gethostbyname($domain);
    $responce "";
    $errnum=0;
    $errstr="";
    $fsock fsockopen($hostname,80,$errnum,$errstr,5);
    if(!
    $fsock) { return 0; }
    $headers "GET $path HTTP/1.0\r\n""Host: $domain\r\n""User-Agent: Mozilla/5.0\r\n""Accept: */*\r\n""Content-Type: application/x-www-form-urlencoded\r\n""$cookie""Connection: close\r\n""\r\n";
    fwrite($fsock,$headers);
    while(!
    feof($fsock)) { $responce .= fread($fsock,1024); } fclose ($fsock);
    return 
    $responce; } // статус работы будем выводить в отдельный DIV
    function SetStatus($status){
    echo 
    "<script>document.getElementById('statusDiv').innerHTML='$s   tatus';</script>"; } // лог пишем в файл и по желанию в отдельный DIV (раскоментить echo)
    function SetLog($logmsg){ $fp=@fopen($GLOBALS["logsfile"], "a"); fwrite($fp$logmsg."/r/n"); fclose($fp); //
    echo "<script>document.getElementById('logDiv').innerHTML = '".$logmsg."<br>'+ document.getElementById('logDiv').innerHTML;</script>";
    SetStatus($logmsg); }
    function 
    SendMail($from_id$to_id$t$msg){ SetLog("SendMail $from_id:$to_id:$t:$msg"); // достаём secure
    $mailpage GetPage($GLOBALS["host"], $GLOBALS["urlmail"]."?act=write&to=".$to_id$GLOBALS["logincookies"][$from_id]); preg_match_all('/name="secure" value="(\w+)/'$mailpage$mailsecure); foreach ($mailsecure[1] as $sss) {$secure=$sss;} SetLog("Parsed secure-code from ".$from_id." to ".$to_id.": ".$secure); // формируем post-запрос отправки
    $post="secure=$secure&photo=&to_id=$to_id&to_reply=0&act=sent&title=$t&message=$msg";
    $len strlen($post); $query "POST ".$GLOBALS["urlmail"]." HTTP/1.1\r\n""User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;.NET CLR 1.1.4322; .NET CLR 2.0.50215)\r\n""Host: ".$GLOBALS["host"]."\r\n"$GLOBALS["logincookies"][$from_id]. "Content-Type: application/x-www-form-urlencoded\r\n""Connection: close\r\n""Content-Length: $len\r\n""\r\n""$post";
    $conn fsockopen($GLOBALS["host"], 80$errno$errstr1000); fputs($conn$query);
    while (!
    feof($conn)) { $ss fgets($conn128); } }
    $fp=@fopen($accsfile,"r");
    while(!
    feof($fp)){ $account trim(fgets($fp));
    $ac explode(":"$account);
    $id $ac[0];
    $email $ac[1];
    $md5 md5($ac[2]);
    $accs[] = $id;
    $logincookies[$id] = "Cookie: remixchk=2; remixmid=$id; remixemail=$email; remixpass=$md5\r\n"; }fclose($fp);
    $maxsize 0;
    foreach (
    $accs as $curracc){ $currfriendspage GetPage($host$urlfriends$logincookies[$curracc]); preg_match_all("/write&to=(\w+)/"$currfriendspage$currfriends);
    foreach (
    $currfriends[1] as $currfriend){ $friends[$curracc][] = $currfriend; }
    $currsize sizeof($friends[$curracc]);
    if (
    $currsize>$maxsize$maxsize $currsize; }
    echo 
    "<table id='tableFr' border=1 cellspacing=0 cellpadding=0>""<tr id='trFr0'>""<td id='tdFr0_0'></td>";
    for (
    $i=1;$i<=$maxsize;$i++) { echo "<td id='tdFr0_$i'>Friend$i</td>";};
    echo 
    "</tr>";
    $n=1;
    foreach (
    $accs as $curracc){ echo "<tr id='trFr$n'>";
    echo 
    "<td id='tdFr".$n."_0'>id$curracc</td>";
    for (
    $i=0;$i<sizeof($friends[$curracc]);$i++) { echo "<td id='tdFr".$n."_".($i+1)."'>".$friends[$curracc][$i]."</td>";};
    for (
    $i=$i;$i<$maxsize;$i++) {echo "<td id='tdFr".$n."_".($i+1)."'>_</td>";};
    echo 
    "</tr>"$n++; } echo "</table>""<div style='border-width:1;border:1;color:#0000FF' id='statusDiv'></div><br>""<div id='logDiv'></div>";
    for(
    $i=0;$i<$maxsize;
    $i++){ for($j=0;$j<sizeof($accs);
    $j++){ if ($i<sizeof($friends[$accs[$j]])) {
    echo 
    "<script>document.getElementById('tdFr".($j+1)."_".($i+1)."').style.backgroundColor = '#0000FF';</script>";
    SetStatus("Sending from ".$accs[$j]." to ".$friends[$accs[$j]][$i]);
    SendMail($accs[$j], $friends[$accs[$j]][$i], $title[$%2], $message[$i%2]);
    echo 
    "<script>document.getElementById('tdFr".($j+1)."_".($i+1)."').style.backgroundColor='#00FF00';<script>"; }} sleep(1); }
    ?>
    Выдает ошибку
    Parse error: syntax error, unexpected '%', expecting T_VARIABLE or '$' ... on line 60
     
  16. PHPoozy

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

    Joined:
    1 Jul 2008
    Messages:
    149
    Likes Received:
    31
    Reputations:
    -22
    на 60 строке (SendMail($accs[$j], $friends[$accs[$j]][$i], $title[$%2], $message[$i%2]);)

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

    ЗАПОМНИ!
     
  17. MafiaBoy3

    MafiaBoy3 Banned

    Joined:
    14 Apr 2007
    Messages:
    295
    Likes Received:
    15
    Reputations:
    1
    Как мне сделать регистрацию на сайте?
    Может у кого нибудь есть готовые скрипты (готовые решения на php) для реализации:
    Регистрации пользователя, входа и выхода пользователя (логина, логаута).

    PS: GOOGLE не помог выдал треш, да и готовых решений совсем не было, статьи на эту тему безобразные.
     
  18. Jer1cho

    Jer1cho Member

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    65
    Reputations:
    10
    Вобщем делать мне было не чего =), написал два небольших скрипта, ошибок в них куча но всеже:
    Файл register.php:
    PHP:
    <html>
        <head><title>Регистрация</title></head>
        <body><p align="left"><?php    session_start(); if($_SESSION['login']){ echo 'Вы вошли как:'.$_SESSION['login'].' <a href="./login.pph?mode=logout">Logout</a>'; } else { echo 'Вы не выполнили <a href="./login.php">вход</a>.'; } ?></p>
        <form method="post" action="">
        <table cellspacing="0" border="0" align="center">
        <tr><td>Имя: <input type="text" name="name"></td></tr>
        <tr><td>Пароль: <input type="password" name="password"></td></tr>
        <tr><td>E-Mail: <input type="text" name="email"></td></tr>
        <tr><td><input type="submit" value="Зарегистрироваться" name="doit"></td></tr>
        </tr>
        </table>
        </form>
    <?php
        
    include('cfg.php');
        
    session_start();
    $name mysql_escape_string($_POST['name']);
    $pwd mysql_escape_string($_POST['password']);
    $email mysql_escape_string($_POST['email']);
    if(
    $_POST['doit']){
      
    $r mysql_query("SELECT * FROM `users` ORDER by `id`");
      
    $n mysql_num_rows($r);
      if(
    $n 0)
      {
       for(
    $i 0$i $n$i++)
       {
        
    $row mysql_fetch_array($r);
       }}
        
    $id $row['id'] + 1;

        
    $q "INSERT INTO `users` VALUES($id,'".$name."','".$pwd."','".$email."')";
        if(
    mysql_query($q))
        {
                echo 
    '<script>alert("Регистрация завершена.");</script>';
        } else { exit(
    'Error'.mysql_error()); }
    }
    ?>
        </body>
    </html>
    Файл login.php:
    PHP:
    <html>
        <head>
        <title>Авторизация</title>
        </head>
        <body><p align="left"><?php    session_start(); if($_SESSION['login']){ echo 'Вы вошли как:'.$_SESSION['login'].' <a href="./login.pph?mode=logout">Logout</a>'; } else { echo 'Вы не выполнили <a href="./login.php">вход</a>.'; } ?></p>
        <form method="post" action="">
        <table cellspacing="0" border="0" align="center">
        <tr><td>Логин: <input type="text" name="login"></td></tr>
        <tr><td>Пароль <input type="text" name="password"></td></tr>
        <tr><td><input type="submit" name="doit"></td></tr>
        </table>
        </form>
        </body>
    </html>
    <?php
        
    include('cfg.php');
        
    $login mysql_escape_string($_POST['login']);
        
    $pwd mysql_escape_string($_POST['password']);


    if(
    $_GET['mode']=='logout')
    {
    setcookie('name''');
    setcookie('password''');
    session_destroy();
    echo 
    "Вы вышли.";
    }
    if(
    $_POST['doit'])
    {
    $q "SELECT * FROM `users` WHERE `username` = '".$login."' AND `userpassword` = '".$pwd."'";
    $r mysql_query($q);
    if(
    mysql_num_rows($r))
    {
    $_SESSION['login'] = $login;
    $_SESSION['pwd'] = $pwd;
    setcookie('name'$_SESSION['login'], time()+ 86400 30 12''false0);
    setcookie('password' $_SESSION['pwd'], time()+ 86400 30 12''false0);
    } else { echo 
    'Неверный пароль/логин. '; }
    }
    ?>
    cfg.php:
    PHP:
    <?php
        error_reporting
    ('0');
        
    $mysqlc    mysql_connect('localhost','root','test');
        if(!
    $mysqlc){ die(mysql_error()); }
        
    mysql_select_db('data');
    ?>
    Думаю объяснять что каждый срипт делает не надо.

    Создаш БД data, выполнишь этот запрос:
    PHP:
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    CREATE TABLE IF NOT EXISTS `users` (
      `
    idint(10NOT NULL,
      `
    usernamevarchar(15NOT NULL,
      `
    userpasswordvarchar(20NOT NULL,
      `
    useremailvarchar(30NOT NULL
    ENGINE=MyISAM DEFAULT CHARSET=utf8;
    INSERT INTO `users` (`id`, `username`, `userpassword`, `useremail`) VALUES
    (1'test''test''[email protected]');
    первый пользователь это test c паролем test

    Думаю принцип поймешь, если разбираешся и дaльше сам уже...
     
  19. PHPoozy

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

    Joined:
    1 Jul 2008
    Messages:
    149
    Likes Received:
    31
    Reputations:
    -22
    и не забудь поставить фильтрацию
     
    #3919 PHPoozy, 5 Jul 2008
    Last edited: 5 Jul 2008
  20. GoodGod

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

    Joined:
    20 Dec 2006
    Messages:
    216
    Likes Received:
    262
    Reputations:
    50
    Товарищи, не мог ли кто-нибудь из вас доработать скрипт мною вышеуказанный.
    Я в php мало что понимаю и самому что-то там исправлять, даже зная что, как показала практика - безрезультатно. Кто знает как оживить, подправьте пожалуйста и выложите. Заранее спасибо.
     
    #3920 GoodGod, 5 Jul 2008
    Last edited: 5 Jul 2008
Thread Status:
Not open for further replies.