Gå til innhold

Legge til tekst på en postet kommentar


Anbefalte innlegg

Jeg er helt nybegynner innen PHP, men har klart å lappe sammen et gjestebok script som fungerer som en siden man kan legge inn ledige vakter. (lager dette gratis for en frivillig organisasjon).

 

Alle ledige vakter som blir lagt til(postet) legger seg øverst og får en "sett meg opp på denne vakten" link.

 

Linken fører til en ny side som inneholder 2 inputfields for å sette seg opp på vakten.

Men når jeg poster teksten fra de 2 feltene, legger de seg som en ny post øverst på siden.

 

Det jeg ønsker er at teksten fra disse felten bli overført til, enten nederst på den aktuelle vakten/posten. Eller i et eget table under den aktuelle vakten/posten.

 

Det må også være mulig for flere å sette seg opp på samme vakt.

 

Siden kan sees her: http://80.111.181.221:55555/fa/index.php

 

Kilden kan sees her: http://80.111.181.221:55555/fa/index.php.txt

 

Siden lagrer i såkalt flatline. Et rent tekstdok (vakter.dat)

 

"case "edit":" er siden som man setter seg opp på vakt på (neders på scriptet).

 

Hadde vært utrolig snillt om noen kunne skrevet (case "edit":) siden riktig for meg. Eller gitt meg noen tips.

Endret av Sliver
Lenke til kommentar
Videoannonse
Annonse

Et lite råd: "ikke post flere hundre linjer med kode ( :no: ) da det er ytterst få som kommer til å tilby hjelp. Tar altfor lang tid å sette seg inn i. Jeg er villig til å hjelpe hvis du spesifiserer problemet litt mer. Kanskje litt om hvordan dat-filen er bygd opp og hva som skal inn det i tillegg og hva kjernen i problemet ditt er. :yes:

Lenke til kommentar

Jeg ville ha gått vekk fra hele flat-file opplegget. Å lagre data på den måten er bare tull, og fører bare til hårete kode.

Strukturer heller dataen i et 2-dimensojnalt array med streng-indexer, og benytt timestamp som id. Eksempel:

Legge til en vakt:

//Last inn alle vaktene til $vakter
$vakter = unserialize(implode('',@file('vakter.dat')));

$tid = time();

$vakter[$tid]['tid'] = $_POST['vdato'];
$vakter[$tid]['objekt'] = $_POST['vobjekt'];
$vakter[$tid]['o_leder'] = $_POST['vobjl'];
$vakter[$tid]['kommentar'] = $_POST['vcomment'];

//Lagre
$fp = fopen('vakter.dat','w');
fwrite($fp, serialize($vakter));
fclose($fp);

 

Endre en vakt(de to postene:)

I dette skjemaet trenger du en hidden input som holder id'en.

//Last inn alle vaktene til $vakter
$vakter = unserialize(implode('',@file('vakter.dat')));

$tid = $_POST['id'];

$vakter[$tid]['vvnavn'] = $_POST['vvnavn'];
$vakter[$tid]['vvkommentar'] = $_POST['vcomment2'];

//Lagre
$fp = fopen('vakter.dat','w');
fwrite($fp, serialize($vakter));
fclose($fp);

 

For å liste opp alle vaktene(formater slik du ønsker det):

$vakter = unserialize(implode('',@file('vakter.dat')));

foreach(array_keys($vakter) as $tid){
echo "Tid/dato: ".$vakter[$tid]['tid']."<br>";
echo "Objekt: ".$vakter[$tid]['objekt']."<br>";
echo "Objektleder: ".$vakter[$tid]['o_leder']."<br>";
echo "Kommentar: ".$vakter[$tid]['kommentar']."<br>";
echo "Vakt: ".$vakter[$tid]['vvnavn']."<br>";
echo "Kommentar: ".$vakter[$tid]['vvkommentar']."<br><br>";
}

 

Jeg har ikke testet dette, men i teorien bør det funke. Jeg har gjort noe liknende før.

Det digge med serialisering er at du slipper alt køddet med å parse en haug linjer i en fil.

Lenke til kommentar

Takk Sven-O dette kan jeg nok bruke ja!

Eneste problemet er at det er bare en som kan sette seg opp på hver enkelt vakt. Det ideelle hadde vært at flere kunne satt seg opp på samme vakt.

At det ble lagt til 2 rows med tekst under vakten, for hver som satte seg opp.

Noen tips?

Lenke til kommentar

Istedetfor å ha:

$vakter[$tid]['vvnavn'] = $_POST['vvnavn'];
$vakter[$tid]['vvkommentar'] = $_POST['vcomment2'];

kan du la dette være enda et array, slik:

$svar['vvnavn'] = $_POST['vvnavn'];
$svar['vvkommentar'] = $_POST['vcomment2'];

$vakter[$tid]['vsvar'][] = $svar;

 

Her vil $vakter[$tid]['vsvar'][] fungere som et array av svar som per vakt kan hentes ut slik:

foreach($vakter[$tid]['vsvar'] as $svar){
   echo "Vakt: ".$svar['vvnavn']."<br>";
   echo "Kommentar: ".$svar['vvkommentar']."<br><br>";
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...