Newz.dk abonnement

Slip for reklamerne på newz.dk ved at oprette en bruger og tegne et abonnement.




PHP MVC OOP Projekt

Gå til bund
Gravatar

#101 arne_v 11. jul. 2017 19:49

#100

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

Men ...
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#102 CBM 11. jul. 2017 19: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.

#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#103 arne_v 11. jul. 2017 20: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.
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#104 arne_v 11. jul. 2017 21: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.
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#105 CBM 11. jul. 2017 21: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.

Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#106 IT-ekspert Yvossen 11. jul. 2017 21: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. :-)
Real cryptography has curves!
Gravatar

#107 arne_v 11. jul. 2017 21: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.
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#108 arne_v 11. jul. 2017 21: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.

:-) :-) :-)
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#109 CBM 11. jul. 2017 21: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: :-)
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#110 arne_v 11. jul. 2017 21: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.
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#111 arne_v 12. jul. 2017 04: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.
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#112 CBM 12. jul. 2017 06: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?
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#113 CBM 12. jul. 2017 07: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
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#114 CBM 12. jul. 2017 16: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...
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#115 CBM 12. jul. 2017 16: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
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#116 CBM 12. jul. 2017 17: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
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#117 arne_v 12. jul. 2017 17:07

#116

foreach($info as $entry)

->

foreach($info as &$entry)

måske?

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#118 CBM 12. jul. 2017 17: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
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#119 arne_v 12. jul. 2017 17:22

#118

Du har ingen løkke i den kode.

Jeg tror at problemet er din løkke.

Se #117
Redigeret
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#120 arne_v 12. jul. 2017 17: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;
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#121 CBM 13. jul. 2017 09: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
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#122 CBM 13. jul. 2017 10: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
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#123 CBM 13. jul. 2017 11: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?
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#124 CBM 13. jul. 2017 12: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?...

Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#125 CBM 13. jul. 2017 12: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
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#126 CBM 13. jul. 2017 14: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 ?????
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#127 CBM 13. jul. 2017 15: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

Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#128 arne_v 13. jul. 2017 16: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."
The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.
Gravatar

#129 CBM 13. jul. 2017 16: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
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#130 CBM 13. jul. 2017 16: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...
Redigeret
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
Gravatar

#131 CBM 13. jul. 2017 17:05

men jeg kan vist godt opgive enhver illusion om at blive færdig inden kl 14 imorgen :( :( :(
#ComeToTheDuckSide www.duckduckgo.com, BB Priv because REAL QWERTY is a privilege
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