2016-04-20 2 views
0


Я сделал простой .php-файл, который должен «нарисовать» строку для меня, для которой пользователь дает начальную и конечную точки, используя форму. И «draw», я имею в виду сказать вам пиксели, которые он окрашивает. И да, я знаю, что это работает только с очень конкретными линиями.
Это весь мой файл:Что не так с моим простым рисунком линии?

<html> 
<head> 
    <title>Thing</title> 
    <?php 
     function positiveLowLine($x,$y,$x0,$x1,$y0,$y1){ 
      return (($x1–$x0)*$y – ($y1–$y0)*$x – $x1*$y0 + $x0*$y1); 
     } 
    ?> 
</head> 
<body> 
    <form name="Q1" method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> 
     <table> 
      <tr> 
       <td align="right">x0</td> 
       <td><input type="number" name="x0" value="<?php echo $_POST["x0"]; ?>"></td> 
      </tr> 
      <tr> 
       <td align="right">x1</td> 
       <td><input type="number" name="x1" value="<?php echo $_POST["x1"]; ?>"></td> 
      </tr> 
      <tr> 
       <td align="right">y0</td> 
       <td><input type="number" name="y0" value="<?php echo $_POST["y0"]; ?>"></td> 
      </tr> 
      <tr> 
       <td align="right">y1</td> 
       <td><input type="number" name="y1" value="<?php echo $_POST["y1"]; ?>"></td> 
      </tr> 
     </table> 
    </form> 
    <?php 
     if (!empty($_POST)){ 
      $x0 = $_POST["x0"]; 
      $x1 = $_POST["x1"]; 
      $y0 = $_POST["y0"]; 
      $y1 = $_POST["y1"]; 

      $y = $y0; 
      for($x = $x0;$x <= $x1; $x++){ 
       echo "Step $x | x=$x | y=$y" 
       if (positiveLowLine($x,$y,$x0,$x1,$y0,$y1) < 0){ 
        $y++; 
       } 
      } 
     } 
    ?> 
</body> 

Я получаю и ошибок, что говорит syntax error, unexpected '$x0' (T_VARIABLE) in /file.php on line 6 (что обратная линия)
Но я не понимаю, в чем проблема.

EDIT Я действительно взглянули на this post («/ синтаксических ошибок PHP Parse, и как их решать?»), Но ответ не был там для меня. По крайней мере, я не мог найти его.

ответ

2

Вы используете неправильный символ минус. Вы используете (код char 8211), а минус - - (код 45). Я не знаю, как у вас был этот различный персонаж, но его изменение будет работать.

<?php 
     function positiveLowLine($x,$y,$x0,$x1,$y0,$y1){ 
      return (($x1 - $x0) * $y - ($y1 - $y0) * $x - $x1 * $y0 + $x0 * $y1); 
     } 
?> 

Но затем он указал ошибку здесь:

for($x = $x0;$x <= $x1; $x++){ 
    echo "Step $x | x=$x | y=$y" 
    if (positiveLowLine($x,$y,$x0,$x1,$y0,$y1) < 0){ 
     $y++; 
    } 

Вы упускаете с запятой ; после эхо-сигнала, выше, если.

Полный рабочий код:

<html> 
<head> 
    <title>Thing</title> 
    <?php 
     function positiveLowLine($x,$y,$x0,$x1,$y0,$y1){ 
      return (($x1 - $x0) * $y - ($y1 - $y0) * $x - $x1 * $y0 + $x0 * $y1); 
     } 
    ?> 
</head> 
<body> 
    <form name="Q1" method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> 
     <table> 
      <tr> 
       <td align="right">x0</td> 
       <td><input type="number" name="x0" value="<?php echo $_POST["x0"]; ?>"></td> 
      </tr> 
      <tr> 
       <td align="right">x1</td> 
       <td><input type="number" name="x1" value="<?php echo $_POST["x1"]; ?>"></td> 
      </tr> 
      <tr> 
       <td align="right">y0</td> 
       <td><input type="number" name="y0" value="<?php echo $_POST["y0"]; ?>"></td> 
      </tr> 
      <tr> 
       <td align="right">y1</td> 
       <td><input type="number" name="y1" value="<?php echo $_POST["y1"]; ?>"></td> 
      </tr> 
     </table> 
    </form> 
    <?php 
     if (!empty($_POST)){ 
      $x0 = $_POST["x0"]; 
      $x1 = $_POST["x1"]; 
      $y0 = $_POST["y0"]; 
      $y1 = $_POST["y1"]; 

      $y = $y0; 
      for($x = $x0;$x <= $x1; $x++){ 
       echo "Step $x | x=$x | y=$y"; 
       if (positiveLowLine($x,$y,$x0,$x1,$y0,$y1) < 0){ 
        $y++; 
       } 
      } 
     } 
    ?> 
</body> 
+0

Вы, сэр, мой е ** король герой. – Kasper

+0

Это решило! Я также заметил, что я должен добавить кнопку отправки и
после того, как каждая строка будет эхом. Благодаря! – Kasper

Смежные вопросы