Dzięki za pomoc. skrypt działa poprawnie. Napisałem też do mojej stronki małego CMSa.
Mam z nim jeden problem. Do każdej komórki bazy danych dodaje spację przy edycji. Jaka jest przyczyna?
index.php
<?php
// zmienna potrzebna do prawidlowego wczytania includowanych plikow
$add_site = true;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<?php
$go = $_GET['go'];
$fp = fopen('meta.csv', 'r'); // otwarcie pliku tylko do odczytu ("r") flock($fp, 1
); // blokowanie pliku do odczytu $i = 0;
while(!feof($fp) && $i < $go) { // do póki nie ma końca pliku lub nie ma linii $linia = fgets($fp, 25000
); // pobranie jednej linii do zmiennej $linia $i++; // podwyższenie zmiennej $i o jeden
}
flock($fp, 3
); // odblokowanie pliku fclose($fp); // zamknięcie pliku
echo "<form action='edit.php' method='POST'> CZĘŚĆ NIEWIDOCZNA - SEKCJA HEAD<br>
<table>
<tr>
<td>id<br><textarea name='id' cols='25' rows='7'>$conf[0] </textarea></td>
<td>description<br><textarea name='description' cols='40' rows='7'>$conf[1] </textarea></td>
<td>keywords<br><textarea name='keywords' cols='40' rows='7'>$conf[2] </textarea></td>
<td>title<br><textarea name='title' cols='40' rows='7'>$conf[3] </textarea><td></tr></table>
CZĘŚĆ WIDOCZNA<br><br>
Tytuł lewego dolnego tekstu - lewydolnytyt<br><textarea name='lewydolnytyt' cols='50' rows='1'>$conf[4] </textarea><br><br>
Lewy dolny tekst - lewydolnytxt<br><textarea name='lewydolnytxt' cols='150' rows='7'>$conf[5] </textarea><br><br>
<input type='submit' name='submit' value='zapisz' />"
?>
i plik edit.php
<?
$new=
$_POST['id']. '|' .
$_POST['description']. '|' .
$_POST['keywords']. '|' .
$_POST['title']. '|' .
$_POST['lewydolnytyt']. '|' .
$_POST['lewydolnytxt']. '|' .
function edycja_linii ($filename, $index, $line) {
$file = file ($filename); $file[$index] = $line;//usunięty fragment powodował dodawanie linii . "\r\n";
$fp = fopen ($filename, "w"); for( $w = 0; $w < count($file); $w++ ) {
}
}
//określenie która linia ma być zmieniona
$nr = $_POST['nr'];
$nrl=$nr-1;
//uruchomienie funkcji zmiany danych w linii:
edycja_linii ('meta.csv', $nrl , $new);
//zamienia linię pliku meta.csv na ciąg $new - czyli ciąg danych z formularza
echo '<a href="http://', $_SERVER['SERVER_NAME'], '/edycja/', $_POST['id'],'">Powrót do edycji ', $_POST['id'], '</a><br>'; echo '<a href="http://', $_SERVER['SERVER_NAME'], '/', $_POST['id'],'" target=_blank>Sprawdzenie efektu zmian na stronie w nowym oknie ', $_POST['id'], '</a><br>'; ?>
Własciwie to dodawanie spacji przy edycji nie miałoby znaczenia, jednak następujący warunek:
<?if ( $src1l == NULL )
{
}
else
{
echo '<img style="border: 0px solid ; width: ', $width1l , '; height: ', $height1l ,'; float: left" alt="',$alt1l,'" src="',$src1l, '">'; }
?>
powoduje, że wkonywana jest część "else ....".
Tak się zaztanawiam jakby to ominąć. Czy jest możliwość żeby napisać ten warunek wg następującego schematu?
<?if ( $src1l == NULL lub same spacje )...
Może ktoś pomóc?
Zlecę poprwakę tego kodu.
Udało się ustalić dlaczego do komórek w tabeli jest dodawana spacja. Tam gdzie w pilku index.php jest $conf[1] itd ze spacją powinno się tą spację usunąć.
prawidłowy kod wygląda następująco:
<?php
// zmienna potrzebna do prawidlowego wczytania includowanych plikow
$add_site = true;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<?php
$go = $_GET['go'];
$fp = fopen('meta.csv', 'r'); // otwarcie pliku tylko do odczytu ("r") flock($fp, 1
); // blokowanie pliku do odczytu $i = 0;
while(!feof($fp) && $i < $go) { // do póki nie ma końca pliku lub nie ma linii $linia = fgets($fp, 25000
); // pobranie jednej linii do zmiennej $linia $i++; // podwyższenie zmiennej $i o jeden
}
flock($fp, 3
); // odblokowanie pliku fclose($fp); // zamknięcie pliku
echo "<form action='edit.php' method='POST'> CZĘŚĆ NIEWIDOCZNA - SEKCJA HEAD<br>
<table>
<tr>
<td>id<br><textarea name='id' cols='25' rows='7'>$conf[0]</textarea></td>
<td>description<br><textarea name='description' cols='40' rows='7'>$conf[1]</textarea></td>
<td>keywords<br><textarea name='keywords' cols='40' rows='7'>$conf[2]</textarea></td>
<td>title<br><textarea name='title' cols='40' rows='7'>$conf[3]</textarea><td></tr></table>
CZĘŚĆ WIDOCZNA<br><br>
Tytuł lewego dolnego tekstu - lewydolnytyt<br><textarea name='lewydolnytyt' cols='50' rows='1'>$conf[4]</textarea><br><br>
Lewy dolny tekst - lewydolnytxt<br><textarea name='lewydolnytxt' cols='150' rows='7'>$conf[5]</textarea><br><br>
<input type='submit' name='submit' value='zapisz' />"
?>
Dodatkowo skrypt z pliku edit.php nie działał prawidłowo ze względu na zapis w 16 linii: $file[$index] = $line;//usunięty fragment powodował dodawanie linii . "\r\n";
Tam powinno być:
$file[$index] = $line. "\n\r";
W zasadzie to nie rozumiem dlaczego po \n nie dodaje linii. Z tego co rozumiem z opisów tak powinno być. Może ktoś doradzić?
A jednak dodaje linię. Sytuacja jest taka, że bez \n linia znajdująca się pod linią edytowaną wskakuje do linii edytowanej, a jak dodam \n to dodaje nową pustą linię. Jak to zrobić żeby było prawidłowo?