Γράψιμο κειμένου σε αρχείο .txt πάντα από τη 2η γραμμή, πώς;

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Γράψιμο κειμένου σε αρχείο .txt πάντα από τη 2η γραμμή, πώς;

Δημοσίευση από felipsemassa » 10 Αύγ 2009 19:21

Έχω μια απορία με τα αρχεία κειμένου .txt και τη php .

Ας πούμε οτι έχουμε ένα αρχείο php με όνομα myfile.php όπου γράφουμε τον κώδικα μας για την εγγραφή κάποιων γραμμών κειμένου μέσα σε ενα αρχείο .txt με όνομα mylist.txt

myfile.php

Κώδικας: Επιλογή όλων

$data = "....to keimeno gia to mylist.txt....."
$openfile = fopen("mylist.txt". "w+");
fwrite($openfile, $data);
fclose($fp);
Με τον κώδικα αυτό θα γράφαμε το κείμενο του $data στο αρχείο myfile.txt .
Το κείμενο που γράφτηκε μπαίνει στο αρχείο .txt από την αρχή του, απο την πρώτη του γραμμή .

Όμως στη περίπτωση που θέλουμε,
το κείμενο του $data να εισάγετε πάντα στη δεύτερη γραμμή του αρχείου mylist.txt, αγνοώντας με κάποιο τρόπο τη πρώτη γραμμή αφήνοντας την ανέπαφη, πως θα το πετυχαίναμε ;

Γνωρίζω αυτή τη λύση με το \n

Κώδικας: Επιλογή όλων

$data = "\n....to keimeno gia to mylist.txt....."
$openfile = fopen("mylist.txt". "w+");
fwrite($openfile, $data);
fclose($fp);
όμως τι γίνεται αν θέλουμε να εισάγεται το κείμενο στη 25η γραμμή του αρχείου txt ; δεν βρίσκω λογική τη λύση να γράψω 25 φορές το \n για αλλαγή γραμμής (!)

ίσως με πίνακες να μπορούσε να βρεθεί μια λύση ; αλλά πως θα πετυχαίναμε να αγνοούμε πάντα τη πρώτη γραμμή αφήνοντας την ανέπαφη, αρχίζοντας το γράψιμο πάντα από τη δεύτερη γραμμή ;

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Γράψιμο κειμένου σε αρχείο .txt πάντα από τη 2η γραμμή, πώς;

Δημοσίευση από ThyClub » 10 Αύγ 2009 19:30

Όπως σου είπε και ο korgr θέλεις να μάθεις πράγματα αλλά θέλεις να τα μάθεις με λάθος τρόπο.

Όλες οι απαντήσεις σου μπορούν να βρεθούν στο manual της php και ειδικά στους τρόπους που ανοίγεις ένα αρχείο.

Ο τρόπος που χρειάζεσαι εσύ είναι ο a -> Append mode

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Γράψιμο κειμένου σε αρχείο .txt πάντα από τη 2η γραμμή, πώς;

Δημοσίευση από felipsemassa » 10 Αύγ 2009 20:03

μάλιστα ThyClub,

σαν πρώτο βήμα αλλάζουμε το mode από w+ σε a γιατί το a ανοίγει το αρχείο .txt μονο για γράψιμο και συγχρόνως μας τοποθετεί στο τέλος του αρχείου

Κώδικας: Επιλογή όλων

$data = "....to keimeno gia to mylist.txt....."
$openfile = fopen("mylist.txt". "a");
fwrite($openfile, $data);
fclose($fp); 
και έχουμε πετύχει αν στο αρχείο κειμένου υπάρχει 1 γραμμή με κείμενο,
το κείμενο του $data να μπει στη 2 γραμμή .

όμως αν προσθέσουμε ξανά ακόμα μια γραμμή τότε με το a που χρησιμοποιούμε, το τέλος του αρχείου θα είναι στο τέλος της δεύτερης γραμμής όπου θα μπει η 3, ενώ αν προσθέσουμε ακόμα μια το τέλος του αρχείου θα είναι το τέλος της 3 γραμμής όπου εκεί θα μπει η 4...... τελικά το τέλος θα μεταφέρετε πάντα στο τέλος του κειμένου που προσθέτουμε (!)

Αυτό που θέλω είναι η πρώτη γραμμή να μένει ανέπαφη και όσες φορές και αν προσθέσουμε κείμενο στο αρχείο, πάντα αυτό να ξεκινάει από τη 2 γραμμή μόνο !

Αν προσθέσουμε ξανά κείμενο αυτό να γράφεται πάνω στο κείμενο που υπάρχει και αρχίζει από τη δεύτερη γραμμή - να σβήνει ή να επικαλύπτει το προηγούμενο με λίγα λόγια, έτσι που να αρχίζουμε πάντα από τη δεύτερη γραμμή - χωρίς να αλλάζει η πρώτη γραμμή (!)

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Γράψιμο κειμένου σε αρχείο .txt πάντα από τη 2η γραμμή, πώς;

Δημοσίευση από korgr » 10 Αύγ 2009 20:39

Με τον τροπο που το προσεγγιζεις το θεμα, θα σε βοηθησει να καταλαβεις τα αδιεξοδα της μεθοδου και να στραφεις στην mysql :)
Εμεις δεν εχουμε προβλημα να σου δινουμε τις λυσεις σε συγκεκριμενες ερωτησεις, αλλα παραλληλα θα πρεπει να σου τονιζουμε πως ειναι λαθος.
Σε αυτο που ρωτησες:
1. Δημιουργεις ενα αρχειο με πρωτη γραμμη κενη (\n)
2. Κανεις append οπως σου ειπε ο ThyCLub την δευτερη γραμμη ($data)
3. Ανοιγεις το αρχειο και διαβαζεις τα περιεχομενα του σε ενα πινακα (σου εδειξα πως)
4. Στον πινακα αυτο ο δεικτης 0 ειναι η κενη γραμμη
5. Αλλαξε την εγγραφη του πινακα με δεικτη 1 με τα νεα περιεχομενα που θες (αν θες να αλλαξεις μετα την 25η γραμμη, τοτε επεμβαινεις στα περιεχομενα του πινακα με δεικτη 24)
6. Στον πινακα $table εχεις τωρα τα νεα περιεχομενα και ιδου πως τα γραφεις ξανα στο αρχειο:

Κώδικας: Επιλογή όλων

<?
$file=fopen&#40;"mylist.txt","w+"&#41;;
for &#40;$n=0;$n<$sizeof&#40;$table&#41;;$n++&#41;&#123;
$record=$table&#91;$n&#93;;
fputs&#40;$file, $record."\n"&#41;;
&#125;
fclose&#40;$file&#41;;
?>

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Γράψιμο κειμένου σε αρχείο .txt πάντα από τη 2η γραμμή, πώς;

Δημοσίευση από felipsemassa » 10 Αύγ 2009 21:20

ok korgr κατανοητά αυτά που περιγράφεις, δεν πρόκειται να κάνω άλλη ερώτηση στα txt αρχεία, θα προσπαθήσω όμως να μελετήσω την τελευταία σου απάντηση και να δώσω μια απάντηση δεν ξέρω κατά πόσο θα τα καταφέρω, μετά θα στραφώ στη mysql αυτό μου την προτείνετε τόσο να μη σας παιδεύω άλλο :) :P

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Γράψιμο κειμένου σε αρχείο .txt πάντα από τη 2η γραμμή, πώς;

Δημοσίευση από ThyClub » 10 Αύγ 2009 21:34

Να κάνεις πολλές ερωτήσεις για txt files όπως και για INI,YAML & XML αλλά να ξέρεις κάθε φορά τι θέλεις να κάνεις μ αυτά.

Πχ στην περίπτωσή σου θέλεις να αποφύγεις την πρώτη γραμμή ενός αρχείου php γιατί εκεί νομίζεις οτι υπάρχουν τα <?php.. αλλά αυτός δεν είναι κανόνας. Τα php tags μπορεί να είναι σε 100 σημεία μέσα στο αρχείο ή να ξεκινάνε απο την δεύτερη ή και 30η γραμμή.

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1952
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Γράψιμο κειμένου σε αρχείο .txt πάντα από τη 2η γραμμή, πώς;

Δημοσίευση από vassilism » 10 Αύγ 2009 23:01

Φίλε felipsemassa κάθεσαι και παιδεύεσαι με τα .txt ενώ όπως πολύ σωστά σου είπε ο korgr να χρησιμοποιείς sql.

Άλλωστε ποιος ο λόγος ύπαρξης της sql?
Αυτά που παλεύεις να κάνεις με τα txt θα βρεις απίστευτες δυσκολίες για απλά πράγματα ενώ αν χρησιμοποιείς sql θα δεις ότι θα σου λύσει τα χέρια.

Σκέψου ένα απλό update να θες να κάνεις στα δεδομένα ενός txt πόσο κώδικα θα χρειαστείς και πόσο αν το έκανες με sql.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης