Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedoston muokkaus

Sivun loppuun

pistemies [07.05.2003 14:30:19]

#

Eli pikku-ongelma on tiedoston avaaminen linkistä muokkausta/poistamista varten.

Skripti on tämän tapainen:

<a href="admin.php?muokkaa=<?php echo $rivi[0]">

Tuohon $rivi[0] tulee teksti "palat/jokin_satunnainen_tiedosto.txt".

Myöhemmässä skriptissä tuo ei virkkanut mitään eli tuon $rivi[0] tiedot kai ei pysynyt perässä. Miten tuo tulisi mennä? Tartteeko jonkinlaista whileä?

trinit [07.05.2003 16:36:20]

#

Jos tuo on noin koodissakin niin kokeilepa muuttaa se:

<a href="admin.php?muokkaa=<?php echo $rivi[0]; ?>">

Jollei auta niin pistäpä vähän enemmän koodia tänne, kuten esim. se kohta jossa tiedostot luetaan $rivi taulukkoon

pistemies [07.05.2003 20:03:03]

#

Katos, ei se noin ole koodissa, on siinä tuo puolipiste. Olen sen jälkeen muuttanut koodia määrittämällä muuttujan $rivi[0] nimeksi $tiedot, niin on sitä helpompi kirjoitella...
Tässä linkki:

<a href="admin.php?muokkaa=<?php echo $tiedot; ?>">

Tässä luku;

if ($_GET['muokkaa']=='tiedot')
{

$df=file($tiedot);
echo "Käsitellään: ".$tiedot." Huom: Älä käytä muokatessa rivinvaihtoa!<br>";
echo "<form action='admin.php?muokkaa=vaikea_merkkijono2&tiedot=".$tiedot."' method='post'>";
echo "<textarea name='data' rows=20 cols=90>";

for ($i=0;$i<count($df);$i++)
{
    echo $df[$i];}
}
echo "</textarea><br>";
echo "<input type='submit' value='tallenna'>";
echo "</form>";

Ei sano mitään... Haittaako tuo "/" kauttaviiva tuossa if-lauseessa, joka tulee $tiedot muuttujan mukana?

pistemies [07.05.2003 21:22:37]

#

Kyse on samankaltaisesta toiminnosta kuin täällä tuo muokkaa (jossa tällä hetkellä ei ole linkkiä noissa ylemmissä (tähän tuli linkki, kun tallensin viestin)), mutta ilman Mysqliä.

trinit [07.05.2003 21:53:27]

#

Tuo If-lause ei tule toteutumaan koskaan, jos linkin osoitteeksi tulee esim:

admin.php?muokkaa=satunnainen_tiedosto.txt

Nyt kun mennään lukurutiiniin, niin If-lauseessa tarkistetaan onko muokkaa-parametrin sisältö merkkijono "tiedot" vaikka sen sisältönä on tiedostonnimi. Oletin tässä että $tiedot muuttujan sisällöksi tulee jonkin tiedoston nimi (kuten olet 1. viestissä kertonut)

pistemies [08.05.2003 12:40:39]

#

Nyt sain sen tuon iffin sisään, kun muutin linkin yläpuolelle näin;

$tiedot=str_replace("lat/","latX",$tiedot);
$tiedot=str_replace(".txt","_txt",$tiedot);

Iffissä olen muuttanut takaisin tiedostonimeksi
Tulostaa pelkän submit nappulan, ei avaa textareaan.

pistemies [08.05.2003 13:40:46]

#

lainaus:

Tulostaa pelkän submit nappulan, ei avaa textareaan.

Oikeastaan ei tulosta ollenkaan textareaa.

pistemies [08.05.2003 15:39:09]

#

Löysin itse yhden ylimääräisen } sulun:

echo $df[$i];}

Mutta nyt se taas ei pääse sisään iffiin.

Tuolla on näkyvissä tämän hetkinen koodi, joka liityy tuohon muokaamiseen:
http://www.pm-netti.com/testi/projekti/admin.php

Toistaiseksi sen tulisi avata muokkausikkuna viestien alle.

trinit [08.05.2003 22:33:12]

#

lainaus:

Tuolla on näkyvissä tämän hetkinen koodi, joka liityy tuohon muokaamiseen:
http://www.pm-netti.com/testi/projekti/admin.php

Tuon koodin toiminnan perusteella katselin, että osoitteen mukana välitettävä $muokkaa parametri sisältää viestin ajan ja tiedoston nimen - otetaan nyt esimerkiksi se 1. viesti ja sen Muokkaa-linkki:

admin.php?muokkaa=palatX03453480503pekka_mansikka_txt

Nyt siis $muokkaa muuttujassa on sisältönä "palatX03453480503pekka_mansikka_txt" merkkijono. Kuitenkin ensimmäisessä If-lauseessa

if ($_GET['muokkaa']=="tiedot")

tarkistetaan löytyy em. $muokkaa muuttujasta merkkijonoa "tiedot". Ja sitähän siellä ei ole koska siellä on se "palatX03453480503pekka_mansikka_txt" merkkijono. Tämän takia If-lause ei koskaan toteudu eikä sitä ajeta.

Näin sen koodin toiminnan olen em. osoitteessa ymmärtänyt toimivan.

PS.

Niin ja rivi

if ($muokkaus=='vaikea_merkkijono2')

kannattaa muuttaa muotoon

if ($_GET['muokkaus']=="vaikea_merkkijono2")

koska $muokkaus muuttuja tulee GET-metodilla lomakkeen (form) lähetyksen aikana.

pistemies [08.05.2003 23:19:26]

#

Kiitoksia! Keksin tuossa yhden homman; Laitoin tuon iffin ulkopuolelle komennon echo $muokkaa $tiedot;
Arvaas mikä oli tulos.

Tuo muokkaa sisälsi alkuperäisen linkissä olevan tiedoston nimen, sen sijaan $tiedot oli ottanut jostakin syystä tuon $max_indexin eli rivillä 10 olevan tiedoston nimen.

Tein tälläaisen yksinkertaisen lisäyksen linkkiin:

<a href="admin.php?id=edit&muokkaa=<?php echo $tiedot; ?>">

ja if-lauseen muutin :

if ($_GET['id']=="edit")

samoin tallennukseen muutin $tiedot =>$muokkaa, niin alkoi toimimaan.
Vielä on tuon kanssa pikku hommia tuon replacen kanssa. Nimittäin kun muuttaa esim. tuollaista koodi-viestiä, on hankala saada se tallentumaan alkuperäisesnä, varsinkin jos koodiviesti itsessään sisältää <br> -merkkijonon, joka täytyy säilyttää tallennuksessa htmlspecialcharsin avulla, mutta ne <br> -merkit, jotka on lisätty koodiin str_replacella, tulisi säilyttää muuttumattomina.

pistemies [09.05.2003 10:48:54]

#

Vähän taisin sekoilla eilisiltana. Eihän tuossa taida olla mitään ongelmaa tuon suhteen. Str-replace vaan samoin kuin ennenkin:
$data=str_replace("\n","£&G",$data);
ja tuo £&G muutetaan htmlspecialcharsin jälkeen <br>:ksi.

pistemies [09.05.2003 12:38:35]

#

Sitten siinä alkaakin tuo poiston suunnittelu. Se voi olla vielä hankalampi...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta