mboost-dp1

PHP MVC OOP Projekt


Gå til bund
Gravatar #101 - arne_v
11. jul. 2017 17:49
#100

Problemet var aldrig opstået i et static typed language.

Men ...
Gravatar #102 - CBM
11. jul. 2017 17:51
arne_v (101) skrev:
#100

Problemet var aldrig opstået i et static typed language.

Men ...

Ja det er en af de store svagheder ved PHP, en svaghed det deler med bl.a. BASIC.

Gravatar #103 - arne_v
11. jul. 2017 18:36
#102

Der er forskellige niveauer af type sikkerhed:

static very strong like Ada
static strong like Java, C#
static somewhat strong like C/C++
dynamic strong like Python
dynamic weak like PHP

Jeg vil være forsigtig med at antage at stærkere betyder bedre.

Ada er ikke verdens bedste sprog til alle formål.

Man finder det rigtige sprog til det rigtige formål.

Men ja - PHP er i den meget bløde ende med hensyn til type sikkerhed.
Gravatar #104 - arne_v
11. jul. 2017 19:04
#102

Der er iøvrigt meget stor forskel på BASIC varianter.

VB.NET og VMS Basic er ret type sikre.

Mange af de ældre PC Basic ikke helt så meget.
Gravatar #105 - CBM
11. jul. 2017 19:12
@arne: jeg tænkte med gru på gwbasic og qbasic som jeg begge har brugt megen tid med... VB.net er milevidt fra de to på alle punkter og er et rigtigt fint sprog til mange ting. Jeg har fx skrevet et par office plugins i VB.NET og det var overraskende meget nemt og enkelt.
Det var nemmere end c#.net som var det sprog jeg ellers udviklede i på det tidspunkt

Vil du betegne pascal som very strong eller strong? Jeg vil mene pascal og delphi er very strong? Kender ikke ada.

Gravatar #106 - Slettet Bruger [1913734024]
11. jul. 2017 19:14
Det var nu også mere ment som en joke. :-)

Men, da jeg begår mig langt mere Java og C# niveauet end PHP, så er det ikke et problem jeg personligt oplever voldsomt ofte. :-)
Gravatar #107 - arne_v
11. jul. 2017 19:17
#105

Jeg vil nok kun kalde Pascal strong.

Med risiko for at være lidt smalsporet i tankegangen vil jeg defineret skellet mellem strong og very strong som muligheden for at forhindre array index out of range compile time.
Gravatar #108 - arne_v
11. jul. 2017 19:19
IT-ekspert Yvossen (106) skrev:
Men, da jeg begår mig langt mere Java og C# niveauet end PHP, så er det ikke et problem jeg personligt oplever voldsomt ofte. :-)


Så du erklærer ikke alle dine C# variable til at være af type dynamic.

:-) :-) :-)
Gravatar #109 - CBM
11. jul. 2017 19:20
#196: ok :-) jeg må indrømme at jeg bedre kan lide pascal end php, særligt fordi jeg ikke rigtig har gode debug muligheder i php da jeg bruger en gratis host som ikke viser mig php fejl loggen... Dog er de fejl der vises på siden, mere tydelige end pascal fejl... Syntes at mange pascal og delphi fejl virker for indforståede hvor php er mere klar i mælet (når den melder fejl that is)...er min opfattelse ihvertfald :-)

@arne: :-)
Gravatar #110 - arne_v
11. jul. 2017 19:26
#109

Det skulle være muligt at debugge PHP interaktivt.

Se f.eks.:

http://www.eclipse.org/pdt/help/html/working_with_...

Men jeg har aldrig prøvet.
Gravatar #111 - arne_v
12. jul. 2017 02:33
CBM (95) skrev:
det jeg er interesseret i er flowet, hvordan jeg kalder en funktion der via en webservice ændrer data der så skal opdateres...


Altså RESTful POST/PUT/DELETE.
Gravatar #112 - CBM
12. jul. 2017 04:07
arne_v (111) skrev:
CBM (95) skrev:
det jeg er interesseret i er flowet, hvordan jeg kalder en funktion der via en webservice ændrer data der så skal opdateres...


Altså RESTful POST/PUT/DELETE.


Javist..

Men php siden kan vel ikke ændres når først den er vist til brugeren

Jeg kan vel ikke gøre flg i ren PHP? :

1. Kalde webservice og hente variabel foobar
2. Vise foobar i tekstfelt
3. Trykke på knap der læser foobar fra tekstfelt og sender ny værdi til webservice

Nu til det interessante...

4. Nu skal jeg opdatere den side brugeren ser, er jeg nød til at reload hele siden eller bruge js til at opdatere værdier eller kan jeg lave en delvis reload af siden med PHP eller ?

For en side der allerede er vist for en bruger vil ikke bare ændre sig fordi jeg opdaterer en variabel i php


i ASP.NET ville jeg nok bare skrive noget c# til klient siden eller måske reloade en delmængde af siden


---


Edit...

Post, put, delete.. Hmm..

Jeg kalder siden igen efter værdien er sendt til webservice?

Siden skal være stateless men kan måske få nogle informationer via en nyt kald til siden?
Gravatar #113 - CBM
12. jul. 2017 05:45
Glem eksemplet med tekstfeltet,

Det ville jo blive opdateret lokalt når der skrives i detmmm

hvad hvis jeg ville vise en knap hvis foobar var true og ikke hvis den var false og knappen skulle ændre foobar? Hvordan opdaterer jeg siden med den nye info at knappen ikke skal vises? Der er også en label der skal ændre indhold
Gravatar #114 - CBM
12. jul. 2017 14:04
<form>
<fieldset class="uk-fieldset">

<legend class="uk-legend">valg</legend>

<div class="uk-margin">
<select class="uk-select">

<?php
foreach($enListe as $foo)
{
echo '<option>'.$foo->bar.'</option>';
}
?>

</select>
</div>

</fieldset>
</form>

enListe har medlemmerne foo og bar, hvor foo er et tal og bar er en tekst

hvordan finder jeg ud af hvornår der er valgt noget og hvordan finder jeg ud af hvad der er valgt så jeg kan opdatere en variabel til den foo værdi der svarer til den bar tekst der er valgt?


prøvede dette uden held:

https://stackoverflow.com/questions/17139501/using...
Gravatar #115 - CBM
12. jul. 2017 14:19
jeg viser en dropdown box, jeg vil gerne undgå at indlæse siden igen,
jeg har en fælles menu i toppen af siden som giver mulighed for at vælge andre sider, disse sider skal kaldes med en parameter som skal sættes baseret på hvad der er valgt i den dropdown... how to do it?

hvis vi siger php filen med dropdown hedder qwerty.php skal jeg så virkelig til at behandle valget i dropdown menuen i en dropdown.php som så skal kalde qwerty.php igen med en parameter svarende til det valgte, som så skal sætte dropdown boksen somehow til en tilsvarende værdi, sådan at jeg har den valge værdi når jeg bruger menuen i toppen af siden?

er det samme procedure hvis jeg skal opdatere fx om der vises en knap eller ikke baseret på om en bruger trykker på en knap og ændrer en php variabel ?

men vil også gerne have at alt det her møg er stateless
Gravatar #116 - CBM
12. jul. 2017 15:02
hvad går galt i denne kode... ??


if ($foo==='bar') {

$ActionID = $q['actID'];
$ObjectID = $q['objID'];

$file = 'blabla'.$ObjectID.'.txt';

$data = file_get_contents($file);

$info = json_decode($info);

foreach($info as $entry)
{

if ($entry->ActionID == $ActionID)
{

$entry->text='foobar';

}

}

$targetdata = json_encode($info);
file_put_contents($file, $targetdata);

}



den skriver en fil kaldet blabla.txt med indholdet null
mens filen blabla1.txt ikke bliver ændret?


jeg prøvede dette...


file_put_contents($file, $info);


det gav en tom fil ved navn blabla.txt

det er da for pokker den samme variabel jeg bruger til filnavn for både put og get ?

og jeg ved at
$ActionID = $q['actID'];
$ObjectID = $q['objID'];
begge vil være 1 da det er de parametre skidtet kaldes med
Gravatar #117 - arne_v
12. jul. 2017 15:07
#116

foreach($info as $entry)

->

foreach($info as &$entry)

måske?

Gravatar #118 - CBM
12. jul. 2017 15:21
dette eksempel virker.. .så jeg må have fundet ud af hvad der går galt



$xfile = "ARGH.TXT";
$xuser = "bross";
$xfirst = "Bob";
$xlast = "Ross";
$xjson = json_decode(file_get_contents($xfile),TRUE);
$xjson[$xuser] = array("first" => $xfirst, "last" => $xlast);
file_put_contents($xfile, json_encode($xjson));


ARGH.TXT


{"bross":{"first":"Bob","last":"Ross"}}


fra
https://stackoverflow.com/questions/8858848/php-re...


hmm..

foreach($info as &$entry) ?

det må jeg lige kigge på...

jeg mener bare jeg nøjes med

foreach($info as $entry)

når jeg viser de data på en form


og

$info = json_decode($info);


er natuligvis

$info = json_decode($data);

----


min plan pt er at starte med at få den ene data side til at virke...

siden starter med at spørge webservice efter data
den viser en liste med de data, hver linje har et info felt og indholdet af dette felt bestemmer om der vises en knap for enden af den linje,

trykker bruger på knappen så kaldes webservice der ændrer data i en txt fil på server

og så redirect til siden igen som så starter med at spørge webservice efter data og disse data skulle så gerne være opdateret nu

så hvis jeg blot kunne få min webservice til at opdatere den txt fil med de nye json data så ville det være dejligt


så må jeg takle problemet med start siden (valg fra dropdown) og den anden data side (ændre checkboxe og tekst strenge) bagefter
Gravatar #119 - arne_v
12. jul. 2017 15:22
#118

Du har ingen løkke i den kode.

Jeg tror at problemet er din løkke.

Se #117
Gravatar #120 - arne_v
12. jul. 2017 15:29
CBM (118) skrev:
hmm..

foreach($info as &$entry) ?

det må jeg lige kigge på...

jeg mener bare jeg nøjes med

foreach($info as $entry)

når jeg viser de data på en form


Ja.

Men der er forskel på at vise data og ændre data.

foreach($info as &$entry)

"kalder":

procedure loopbody(var TEntry entry);

begin
...
end;

foreach($info as $entry)

"kalder":

procedure loopbody(TEntry entry);

begin
...
end;
Gravatar #121 - CBM
13. jul. 2017 07:05
@arne: ok :-)

Jeg kiggede på w3schools igen og fandt et eksempel jeg muligvis kan bruge...
sådan at mit flow bliver noget ala dette:

ved tryk på knap -> submit, send data til webservice, kald samme side igen som så læser data fra webservice


<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>

<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
$foundErr = false;

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required"; $foundErr = true;
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
$foundErr = true;
}
}

if (empty($_POST["email"])) {
$emailErr = "Email is required"; $foundErr = true;
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
$foundErr = true;
}
}

if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
$foundErr = true;
}
}

if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}

if (empty($_POST["gender"])) {
$genderErr = "Gender is required"; $foundErr = true;
} else {
$gender = test_input($_POST["gender"]);
}
}

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name" value="<?php echo $name;?>">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail: <input type="text" name="email" value="<?php echo $email;?>">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website: <input type="text" name="website" value="<?php echo $website;?>">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
<br><br>
Gender:
<input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?> value="female">Female
<input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?> value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>

<?php
if ($foundErr === false) {
echo "<h2>Your Input:</h2>";

if ($name !== "") {
echo "NAME: " . $name;
echo "<br>"; }

if ($email !== "") {
echo "EMAIL: " . $email;
echo "<br>"; }

if ($website !== "") {
echo "WEBSITE: " . $website;
echo "<br>"; }

if ($comment !== "") {
echo "COMMENT: " . $comment;
echo "<br>"; }

if ($gender !== "") {
echo "GENDER: " . $gender;
}

}
else
{
echo "<br>";
echo "errors were found! <br>";
}
?>

</body>
</html>


regulær applikations udvikling er nu noget nemmere på visse punkter
Gravatar #122 - CBM
13. jul. 2017 08:49
hmm.. min taktik fungerer ikke...

DATA : testdata.txt


[{"Index":"1","Name":"Steve Jobs","LikesCats":"true","LikesDogs":"false","Notes":"Apple","NextMeeting":"01-01-1970","Status":"dead"},
{"Index":"2","Name":"Bill Gates","LikesCats":"true","LikesDogs":"true","Notes":"Microsoft","NextMeeting":"01-01-1970","Status":"alive"},
{"Index":"3","Name":"Mark Zuckerberg","LikesCats":"false","LikesDogs":"Notes":"Facebook","NextMeeting":"01-01-1970","Status":"alive"}]


KLIENT: SomeClient.php


<?php

parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
$index = $q['index'];

//if ($id==='AddYear') or ($id==='Resurrect') {
$idliste = file_get_contents('SomeServer.php?id='.$id.'&index='.$index);
//}

$idliste = file_get_contents('SomeServer.php?id=DownloadData');
$showdata = json_decode($idliste);

?>

<!DOCTYPE html>

<html>
<head>
<title>PHP Test</title>
<link rel="stylesheet" type="text/css" href="/css/uikit.min.css">
<script src="/js/uikit.min.js"></script>
</head>

<body>
TEST TEST TEST


<br/><br/>
Velkommen til TEST TEST TEST
<br/><br/>

<br/><br/>
<table class="uk-table uk-table-striped">
<thead>
<tr>
<th>Name</th>
<th>Cat fan?</th>
<th>Dog fan?</th>
<th>Notes</th>
<th>Next Meeting</th>
<th>Status</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>

<?php

foreach($showdata as $member)
{
echo '<tr>';
echo '<td> '.$member->Name.' </td>';
echo '<td> TODO </td>';
echo '<td> TODO </td>';
echo '<td> '.$member->Notes.' </td>'; // should be editable
echo '<td> '.$member->NextMeeting.' </td>'; // can be edited with a button
echo '<td> '.$member->Status.' </td>';
echo '<td><p uk-margin><a class="uk-button uk-button-default" href="someClient.php?id=AddYear&index='.$member->Index.'">Add one year to date</a></p></td></tr>'; // todo
if ($member->Status==='dead') {
// <input type="submit" name="submit" value="Submit"> ?
echo '<td><p uk-margin><a class="uk-button uk-button-default" href="someClient.php?id=Resurrect&index='.$member->Index.'">Resurrect</a></p></td></tr>';
}
}
?>

</tbody>
</table>

</body>
</html>



SERVER: SomeServer.php


<?php

parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
$index = $q['index'];

if ($id==='AddYear') {

$return = 'ok';

// TODO

echo $return;

}

if ($id==='Resurrect') {

$return = 'ok';

$sourceData = file_get_contents('testdata.txt');
$decodedData = json_decode($sourceData);

foreach($decodedData as &$entry)
{

if ($entry->Index == $index)
{

$entry->Status='alive';

}

}

$targetData = json_encode($decodedData);
file_put_contents('testdata.txt', $targetData);

echo $return;
}

if ($id==='DownloadData') {

$return = '';
$return = file_get_contents('testdata.txt');
echo $return;

}


?>



Min aktuelle test side

http://qwertyqwerty.atwebpages.com/someClient.php

siger flg. :


Warning: file_get_contents(SomeServer.php?id=&index=): failed to open stream: No such file or directory in /srv/disk8/2381291/www/qwertyqwerty.atwebpages.com/someClient.php on line 8

Warning: file_get_contents(SomeServer.php?id=DownloadData): failed to open stream: No such file or directory in /srv/disk8/2381291/www/qwertyqwerty.atwebpages.com/someClient.php on line 11
TEST TEST TEST

Velkommen til TEST TEST TEST




Warning: Invalid argument supplied for foreach() in /srv/disk8/2381291/www/qwertyqwerty.atwebpages.com/someClient.php on line 51
Name Cat fan? Dog fan? Notes Next Meeting Status



alle 3 filer ligger i roden
Gravatar #123 - CBM
13. jul. 2017 09:00
Ændrer jeg det til


if ($id==='AddYear') or ($id==='Resurrect') {
$idliste = file_get_contents('SomeServer.php?id='.$id.'&index='.$index);
}


får jeg


Parse error: syntax error, unexpected 'or' (T_LOGICAL_OR) in /srv/disk8/2381291/www/qwertyqwerty.atwebpages.com/someClient.php on line 7


skal jeg til og involvere endnu en php fil der kan tage imod parametre, kalde webservice og så redirect til SomeClient.php?

UIKIT knapper skal åbenbart være links forklædt som knapper?
Gravatar #124 - CBM
13. jul. 2017 10:19
det er da til at få knald i låget af det her!

nogen der kan hjælpe ?

mine filer PT

someClient.php


<?php

//parse_str($_SERVER['QUERY_STRING'], $q);
//$id = $q['id'];
//$index = $q['index'];

//if ($id==='AddYear') or ($id==='Resurrect') {
// $idliste = file_get_contents('SomeServer.php?id='.$id.'&index='.$index);
//}

$idliste = file_get_contents('http://qwertyqwerty.atwebpages.com/someServer.php?id=DownloadData');
$showdata = json_decode($idliste);

?>

<!DOCTYPE html>

<html>
<head>
<title>PHP Test</title>
<link rel="stylesheet" type="text/css" href="/css/uikit.min.css">
<script src="/js/uikit.min.js"></script>
</head>

<body>
TEST TEST TEST


<br/><br/>
Velkommen til TEST TEST TEST
<br/><br/>

<br/><br/>
<table class="uk-table uk-table-striped">
<thead>
<tr>
<th>Name</th>
<th>Cat fan?</th>
<th>Dog fan?</th>
<th>Notes</th>
<th>Next Meeting</th>
<th>Status</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>

<?php

foreach($showdata as $member)
{
echo '<tr>';
echo '<td> '.$member->Name.' </td>';
echo '<td> TODO </td>';
echo '<td> TODO </td>';
echo '<td> '.$member->Notes.' </td>'; // should be editable
echo '<td> '.$member->NextMeeting.' </td>'; // can be edited with a button
echo '<td> '.$member->Status.' </td>';

echo '<td> TODO </td>';
echo '<td> TODO </td>';

//echo '<td><p uk-margin><a class="uk-button uk-button-default" href="someClient.php?id=AddYear&index='.$member->Index.'">Add one year to date</a></p></td></tr>'; // todo
//if ($member->Status==='dead') {
// <input type="submit" name="submit" value="Submit"> ?
// echo '<td><p uk-margin><a class="uk-button uk-button-default" href="someClient.php?id=Resurrect&index='.$member->Index.'">Resurrect</a></p></td></tr>';
//}
}
?>

</tbody>
</table>

</body>
</html>



someServer.php


<?php

parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
$index = $q['index'];

if ($id==='AddYear') {

$returnAY = 'ok';

// TODO

echo $returnAY;

}

if ($id==='Resurrect') {

$returnR = 'ok';

$sourceData = file_get_contents('testdata.txt');
header('Content-type: application/json');
$decodedData = json_decode($sourceData);

foreach($decodedData as &$entry)
{

if ($entry->Index == $index)
{

$entry->Status='alive';

}

}

$targetData = json_encode($decodedData);
header('Content-type: application/json');
file_put_contents('testdata.txt', $targetData);
echo $returnR;
}

if ($id==='DownloadData') {

$returnDD = '';
$returnDD = file_get_contents('testdata.txt');
header('Content-type: application/json');
echo $returnDD;

}


?>


data fil er uændret

jeg får dette svar pt..


Warning: Invalid argument supplied for foreach() in /srv/disk8/2381291/www/qwertyqwerty.atwebpages.com/someClient.php on line 51


men... DET ER100% MAGEN TIL et ANDET eksempel, SOM VIRKER!??

DATA filen har data liggende NØJAGTIGT på samme måde,
det sendes fra server php filen på NØJAGTIG samme måde,
klient php filen looper på NØJAGTIG samme måde.... FFS!!!

det er til at blive BIMS af... nå det var en fejl i data text filen.... nu kan jeg i det mindste VISE data...

hmm... klap hesten... måske virker det nu

yes, nu virker det faktisk... sort of... men har nu denne url efter at have trykket på knappen... IKKE optimalt

http://qwertyqwerty.atwebpages.com/someClient.php?...

Gravatar #125 - CBM
13. jul. 2017 10:30
så nu virker det, kan jeg gøre det på en bedre måde, og gerne uden at skulle ændre min URL ??

her er alle filerne som de er nu...

testdata.txt


[{"Index":"1","Name":"Steve Jobs","LikesCats":"true","LikesDogs":"false","Notes":"Apple","NextMeeting":"01-01-1970","Status":"dead"},{"Index":"2","Name":"Bill Gates","LikesCats":"true","LikesDogs":"true","Notes":"Microsoft","NextMeeting":"01-01-1970","Status":"alive"},{"Index":"3","Name":"Mark Zuckerberg","LikesCats":"false","LikesDogs":"true","Notes":"Facebook","NextMeeting":"01-01-1970","Status":"alive"}]


someClient.php


<?php

parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
$index = $q['index'];

//if ($id==='AddYear') or ($id==='Resurrect') {
$idliste = file_get_contents('http://qwertyqwerty.atwebpages.com/someServer.php?id='.$id.'&index='.$index);
//}

$idliste = file_get_contents('http://qwertyqwerty.atwebpages.com/someServer.php?id=DownloadData');
$showdata = json_decode($idliste);

?>

<!DOCTYPE html>

<html>
<head>
<title>PHP Test</title>
<link rel="stylesheet" type="text/css" href="/css/uikit.min.css">
<script src="/js/uikit.min.js"></script>
</head>

<body>
TEST TEST TEST


<br/><br/>
Velkommen til TEST TEST TEST
<br/><br/>

<br/><br/>
<table class="uk-table uk-table-striped">
<thead>
<tr>
<th>Name</th>
<th>Cat fan?</th>
<th>Dog fan?</th>
<th>Notes</th>
<th>Next Meeting</th>
<th>Status</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>

<?php

foreach($showdata as $member)
{
echo '<tr>';
echo '<td> '.$member->Name.' </td>';
echo '<td> TODO </td>';
echo '<td> TODO </td>';
echo '<td> '.$member->Notes.' </td>'; // should be editable
echo '<td> '.$member->NextMeeting.' </td>'; // can be edited with a button
echo '<td> '.$member->Status.' </td>';



echo '<td><p uk-margin><a class="uk-button uk-button-default" href="someClient.php?id=AddYear&index='.$member->Index.'">Add one year to date</a></p></td></tr>'; // todo
if ($member->Status==='dead') {
// <input type="submit" name="submit" value="Submit"> ?
echo '<td><p uk-margin><a class="uk-button uk-button-default" href="someClient.php?id=Resurrect&index='.$member->Index.'">Resurrect</a></p></td></tr>';
}
}
?>

</tbody>
</table>

</body>
</html>


someServer.php


<?php

parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
$index = $q['index'];

if ($id==='AddYear') {

$returnAY = 'ok';

// TODO

echo $returnAY;

}

if ($id==='Resurrect') {

$returnR = 'ok';

$sourceData = file_get_contents('testdata.txt');
header('Content-type: application/json');
$decodedData = json_decode($sourceData);

foreach($decodedData as &$entry)
{

if ($entry->Index == $index)
{

$entry->Status='alive';

}

}

$targetData = json_encode($decodedData);
header('Content-type: application/json');
file_put_contents('testdata.txt', $targetData);
echo $returnR;
}

if ($id==='DownloadData') {

$returnDD = '';
$returnDD = file_get_contents('testdata.txt');
header('Content-type: application/json');
echo $returnDD;

}


?>



med get kan man se parametre, så ved at bruge links er det vel den metode jeg bruger... kunne jeg ændre knapperne til at lave en post request? problemet er bl.a. at det skal være UIKIT knapper..


jeg har været inde og kigge på
https://www.w3schools.com/php/

og
https://www.w3schools.com/php/php_form_validation....

eller må jeg prøve igen med en form og en button... der er åbenbart button styling til UIKIT:

https://github.com/uikit/uikit/issues/805
Gravatar #126 - CBM
13. jul. 2017 12:42
måtte smide håndklædet i ringen og bruge en ekstra php fil til at sende til server og til at vende tilbage med, måtte også ty til js for at lave en redirect

hmm så troede man at man kunne få sin eksempel server til at virke nu når man endelig fandt ud af en simpel ting som at føje et år til en dato i php.. men nej...

someClient udpluk


<?php

foreach($showdata as $member)
{
echo '<tr>';
echo '<td> '.$member->Name.' </td>';
echo '<td> TODO </td>';
echo '<td> TODO </td>';
echo '<td> '.$member->Notes.' </td>'; // should be editable
echo '<td> '.$member->NextMeeting.' </td>'; // can be edited with a button
echo '<td> '.$member->Status.' </td>';

echo '<td><p uk-margin><a class="uk-button uk-button-default" href="handle.php?id=AddYear&index='.$member->Index.'">Add one year to date</a></p></td></tr>'; // todo
if ($member->Status==='dead') {
// <input type="submit" name="submit" value="Submit"> ?
echo '<td><p uk-margin><a class="uk-button uk-button-default" href="handle.php?id=Resurrect&index='.$member->Index.'">Resurrect</a></p></td></tr>';
}
}
?>




someServer.php


<?php

parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
$index = $q['index'];

if ($id==='AddYear') {

$returnAY = 'ok';

// TODO

$sourceDataAY = file_get_contents('testdata.txt');
header('Content-type: application/json');
$decodedDataAY = json_decode($sourceDataAY);

foreach($decodedDataAY as &$entryAY)
{

if ($entryAY->Index == $index)
{

//$entry->NextMeeting = echo date(strtotime("+1 year ".$entry->NextMeeting));

$string = $entry->NextMeeting;
$newdate = strtotime ( '+1 year' , strtotime ( $string ) ) ;
$newdate = date ( 'd-m-Y' , $newdate );
$entry->NextMeeting = $newdate;

}

}

$targetDataAY = json_encode($decodedDataAY);
header('Content-type: application/json');
file_put_contents('testdata.txt', $targetDataAY);


echo $returnAY;

}

if ($id==='Resurrect') {

$returnR = 'ok';

$sourceDataR = file_get_contents('testdata.txt');
header('Content-type: application/json');
$decodedDataR = json_decode($sourceDataR);

foreach($decodedDataR as &$entryR)
{

if ($entryR->Index == $index)
{

$entryR->Status='alive';

}

}

$targetDataR = json_encode($decodedDataR);
header('Content-type: application/json');
file_put_contents('testdata.txt', $targetDataR);

echo $returnR;
}

if ($id==='DownloadData') {

$returnDD = '';
$returnDD = file_get_contents('testdata.txt');
header('Content-type: application/json');
echo $returnDD;

}


?>



handle.php


<?php
parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
$index = $q['index'];

$idliste = file_get_contents('http://qwertyqwerty.atwebpages.com/someServer.php?id='.$id.'&index='.$index);

$newpage = 'someClient.php';

?>

<script type="text/javascript">
window.location.replace("<?php echo $newpage ?>");
</script>


naturligvis så virker det ikke, årstallet bliver ikke ændret

ændring af string status virker fint...
$entryR->Status='alive';

ændring af dato med flg. kode virker fint...

dates.php


<?php


$string = '01-01-1970';

echo 'string: ' . $string . ' ';



//$dmy = DateTime::createFromFormat('d-m-Y', $string)->format('d-m-Y');

//$time = strtotime('d-m-Y',$string);

//$dmy->add(new DateInterval('P10Y'));

//echo 'time: ' . date($dmy) . ' ';



//$date = "1998-08-14";

$newdate = strtotime ( '+1 year' , strtotime ( $string ) ) ;
$newdate = date ( 'd-m-Y' , $newdate );

echo $newdate;

?>


NextMeeting er en tekst streng ligesom Status, så hvorfor virker det ikke?


--


edit... hvor skønt..... det var en variabel der havde et forkert navn... "juhuu"

jo mere jeg koder php, jo mere glad bliver jeg for delphi!



nu virker det, men jeg kan kun sige +1 år en gang ?????
Gravatar #127 - CBM
13. jul. 2017 13:16
jeg er nu 50% i mål... og har brugt 12!! dage indtil videre... :(

jeg har 2 timer mere i dag og en kort dag imorgen til at blive færdig...

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

den ene data side og login virker

jeg mangler nu:

hovedmenu, der er en dropdown hvor der skal kunne vælges og baseret på valget, kaldes data sider med forskellige parametre

nr 2 data side, der er en dato, 2 tekst felter og 4 checkboxe som alle skal kunne opdateres op mod webservice

Gravatar #128 - arne_v
13. jul. 2017 14:27
#127

"The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Gravatar #129 - CBM
13. jul. 2017 14:36
@arne: jo men jeg syntes bare php er så håbløst ulogisk... jeg ender med at hade php inderligt...

jeg har det som om jeg desperat prøver at bygge et korthus i stormvejr... hvert øjeblik kan HELE skidtet vælte og jeg skal begynde forfra

det kan være jeg bare ikke har "set lyset" med php endnu


det er som at slå i en dyne på en ukendt placering med bind for øjnene efter man er snurret rundt 10 gange efter hvert slag
Gravatar #130 - CBM
13. jul. 2017 14:50
jeg har lige prøvet at at forsøge at bruge POST til at læse alle mine checkboxe og tekst felter ... og min belønning var en voldsom mængde af PHP fejl

og jeg er stadig kommet ingen vegne med den skid start side hvor jeg skal læse indholdet af min dropdown box og gemme i en lokal variabel


start siden...
sådan cirka



<?php include '_enHeader.php';?>
<?php include 'nogetModel.php';?>

<br/><br/>
Velkommen til TEST TEST TEST
<br/><br/>
<form>
<fieldset class="uk-fieldset">

<legend class="uk-legend">Valg</legend>

<div class="uk-margin">
<select class="uk-select" name="dropdown">

<?php
foreach($enListe as $linje)
{
echo '<option value="'.$linje->NR.'">'.$linje->FooBar.'</option>';
}
?>
</select>
</div>

</fieldset>

</form>

<?php include '_enFooter.php';?>

</body>
</html>



_enHeader.php har en menu i toppen med links til de andre sider... disse sider skal vide hvad der er valgt i min dropdown... men jeg kan simpelthen ikke finde noget der kan fungere til dette formål...

så skulle det være noget med at links til de andre sider var variable som jeg så ændrede i en post efter at have genhentet siden og læst min dropdown... men jeg kan ikke få det til at virke...

nogen der kunne være søde at skrive et hurtigt php eksempel? please?

----

jeg er OGSÅ stadig et stort spørgsmålstegn hvad angår den anden data side...

den ene side der virker er heller ikke optimal, men som det ser ud lige nu så bliver det ikke bedre end det er nu...
Gravatar #131 - CBM
13. jul. 2017 15:05
men jeg kan vist godt opgive enhver illusion om at blive færdig inden kl 14 imorgen :( :( :(
Gravatar #132 - CBM
9. aug. 2017 19:23
Jeg er blevet færdig og har endda fået gjort de Quick and dirt Bits clean med AJAX (phun intended)
Gravatar #133 - arne_v
9. aug. 2017 19:51
#132

PHP kan godt virke som et lidt spøjst sprog, hvis man er vant til mere traditionelle sprog (Pascal, C, C++, Java, C# etc.). Det er rigtigt meget Bazaar og ikke ret meget Cathedral. Men der er rigtigt meget funktionalitet. LOC/FP er formentligt ret lac.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login