D&C GLug - Home Page

[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]

[LUG]Re: PHP working environment - easy development

 

Hello all
Gordon - I'd like to send you many many thanks.

You were so so right.
It's transformed my working experience.
That is with the "command line" hint/lead/pointer.

It's seconds per step building up the code.

You'll be knowing - in emacs its "ESC-! php myscr.php arg1 arg2 ..."
with the output showing in a shell output buffer.
Else a shell buffer when need to see through a lot of output.

The PHP scripted page which was my "this learning exercise" goal - I
got there this early afternoon.

Seen
http://weldsmith.co.uk/cgi_my/degdeci2dms/230719_degdeci2dms.html

The PHP code is as follows... (appended)

Best wishes,
Rich Smith

----------------------------------------------------------------


<!DOCTYPE html>

<html>

<head>
<title>Deg-deci to DMS</title>
<link rel="stylesheet" href="/stylesheets/html_std.css" type="text/css">
</head>

<body bgcolor=#FFFFFF>

<h2>Degrees-deci to DMS convert</h2>

<?php

function val60x ($the_val) {return $the_val * 60;}

function fractpart ($the_float) {return fmod($the_float, 1);}

function coords_nums_valid_q ($tlat_degdeci, $tlong_degdeci) {
   if (!is_numeric($tlat_degdeci) || !is_numeric($tlong_degdeci)) {
      exit("Input must be comma-separated valid numbers");
   }
   // echo nl2br($the_postarg); echo "DEBUG : a1=$tlat_degdeci, a2= $tlong_degdeci"; 
// DEBUG
   if ($tlat_degdeci<-90 || $tlat_degdeci>90 || $tlong_degdeci<-180 || 
$tlong_degdeci>180) {
      exit("Input error : Latitude in range -90 to +90; Longitude in range -180 to 
+180");
   }
}

function dd2dms ($abs_coord_deci) {
   if($abs_coord_deci<0){
      exit("PRG ERROR dd2dms : passed a minus number");
   }
   $absdegs=floor($abs_coord_deci);
   $coord_mins=floor(val60x(fractpart($abs_coord_deci)));
   $coord_secs=val60x(fractpart(val60x(fractpart($abs_coord_deci))));
   return array($absdegs, $coord_mins, $coord_secs);
}

function prettyprint_dms_lat ($pdeg, $pmin, $psec, $pdirn) {
   printf("%02d&deg %02d' %04.1f\" %s", $pdeg, $pmin, $psec, $pdirn);
}

function prettyprint_dms_long ($pdeg, $pmin, $psec, $pdirn) {
   printf("%03d&deg %02d' %04.1f\" %s", $pdeg, $pmin, $psec, $pdirn);
}
?>

<?php
// shouldn't do anything during cmdline dev.
if(isset($_POST['submit'])){
   if(strlen($_POST['degdeci_lat_long'])>64) {
      exit("infeasible form bytesize");
   }
   $the_postarg = filter_var($_POST['degdeci_lat_long'], FILTER_SANITIZE_STRING);
   list($lat_degdeci, $long_degdeci) = explode(',', str_replace(' ', '', 
$the_postarg));
   coords_nums_valid_q($lat_degdeci, $long_degdeci);
}
?>

<?php
list($latdeg, $latmin, $latsec) = dd2dms(abs($lat_degdeci));
if($lat_degdeci<0){$latsymb="S";} else {$latsymb="N";}
list($longdeg, $longmin, $longsec) = dd2dms(abs($long_degdeci));
if($long_degdeci<0){$longsymb="W";} else {$longsymb="E";}
?>

<?php
   // exit("DEBUG exit");
?>

<?php
// DEBUG crude print in DMS
/*
echo "Lat : $latdeg Deg  $latmin Min  $latsec Sec  $latsymb\n";
echo "Long : $longdeg Deg  $longmin Min  $longsec Sec  $longsymb\n";
*/
?>

<p>
Submitted into form box:
<br>
<texttt>
<?php { echo $the_postarg; } ?>
</texttt>
</p>

<p>
Interpretted as:
<br>
<texttt>
<?php
echo "Latitude = $lat_degdeci, Longitude = $long_degdeci";
?>
</texttt>
</p>

<p>
Converts to:
<br>
<texttt>
<?php
prettyprint_dms_lat($latdeg, $latmin, $latsec, $latsymb);
echo "&nbsp&nbsp ";
prettyprint_dms_long($longdeg, $longmin, $longsec, $longsymb);
?>
</texttt>
</p>

<br>

<p>
Reminder - this is <b>only</b> a conversion of a set of coordinates
expressed in one notation to another notation.
</p>

<p>
(a common error were the converted coordinates applied to plot a
position on a map or chart would be that, reading from "Google Maps"
which uses the "WGS84" datum system, the map or chart uses another
geodetic datum system)
</p>

<p><br><br><small>
(R. Smith, 19Jul2023)
</small></p>

</body></html>



> On 18 Jul 2023, at 12:10, Gordon Henderson <gordon+lug@xxxxxxxxxx> wrote:
> 
> On Tue, 18 Jul 2023, rds_met wrote:
> 
>> PHP being "inside out" as intersections in webpages (smart) seems to
>> have this problem of making it uniquely difficult to "fire it up" on
>> its own.
>> 
>> Am I missing something?
> 
> PHP is a general purpose programming language. It can be run from the command line 
> like most others - you don't need to run it inside a web server/browser combo.
> 
> Simply start the file with
> 
>  <?php
> 
> and end it with
> 
>  ?>
> 
> then
> 
>  php filename
> 
> and it will run.
> 
> Anything outside those sections will be printed to the output with variables 
> expanded as usual.
> 
> You can do the usual "shebang" trick
> 
>  #!/path/to/php
>  <?php
>    printf ("Hello, world!\n)
>  ?>
>  This also prints Hello, World!
>  <?php
>    printf ("1+2=%d\n", 1+2)
>  >?
> 
> 
> 
>  chmod +x filename
>  ./filename
> 
> and off you go.
> 
> Gordon
> --
> The Mailing List for the Devon & Cornwall LUG
> FAQ: https://www.dcglug.org.uk/faq/

--
The Mailing List for the Devon & Cornwall LUG
FAQ: https://www.dcglug.org.uk/faq/