mboost-dp1
PHP MVC OOP Projekt
- Forside
- ⟨
- Forum
- ⟨
- Programmering
#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.
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.
@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.
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.
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. :-)
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. :-)
#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: :-)
@arne: :-)
#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.
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.
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?
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
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
<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...
<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...
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
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
hvad går galt i denne kode... ??
den skriver en fil kaldet blabla.txt med indholdet null
mens filen blabla1.txt ikke bliver ændret?
jeg prøvede dette...
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
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
dette eksempel virker.. .så jeg må have fundet ud af hvad der går galt
ARGH.TXT
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
$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
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;
@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
regulær applikations udvikling er nu noget nemmere på visse punkter
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
hmm.. min taktik fungerer ikke...
DATA : testdata.txt
KLIENT: SomeClient.php
SERVER: SomeServer.php
Min aktuelle test side
http://qwertyqwerty.atwebpages.com/someClient.php
siger flg. :
alle 3 filer ligger i roden
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
Ændrer jeg det til
får jeg
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?
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?
det er da til at få knald i låget af det her!
nogen der kan hjælpe ?
mine filer PT
someClient.php
someServer.php
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?...
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?...
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
someClient.php
someServer.php
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
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
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
someServer.php
handle.php
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
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 ?????
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 ?????
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
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
@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
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
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
_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...
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...
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.