php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.12.2011, 08:00  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Wenn die Dateien nicht zu groß werden (z.B. bei kleineren Logs), kann ev. folgende Funktion hilfeich sein:
PHP-Code:
//fügt $content am Anfang von $fileName ein, return anzahl Bytes
function file_insert_contents($fileName,$content) {
  
$oldContent file_get_contents($fileName);
  
$newContent $content.($oldContent ==! false $oldContent "");
  return 
file_put_contents($fileName,$newContent); 

Nun kenn ich nicht den "Umfang" des Gästebuches des TE. Wenn man es solide machen will, sehe ich auch keine Alternative zur Datenbank. Für kleinere Sachen reicht oft schon SQLite.
jspit ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.12.2011, 08:08  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

PHP-Code:
//fügt $content am Anfang von $fileName ein, return anzahl Bytes
function file_insert_contents($fileName,$content) {
  
$oldContent file_get_contents($fileName);
  
$newContent $content.($oldContent ==! false $oldContent "");
  return 
file_put_contents($fileName,$newContent); 


PHP-Code:
file_put_contents($fileName$newContentFILE_APPEND); 


edit, ah sehs grad, es geht um "An den Anfang der Datei schreiben".

PHP-Code:
function saveIt $filename$content ) {
   return 
file_put_contents$filename$content.(string)file_get_contents($file) );

Reicht da aus, Type-Juggeling ftw. Boolean "False" ist als String repräsentierung ein Leerer String.

Des is aber langfristig gesehen nen Memory-Fresser. Entweder gleich ne Datenbank nutzen oder mit fopen() rumeiern und "streamen".
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (16.12.2011 um 08:28 Uhr).
tr0y ist offline   Mit Zitat antworten
Alt 16.12.2011, 09:23  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Open ( Database )
Code:
- connect
- select db
- escape string
- query
- fetch
Store ( Database )
Code:
- connect
- select db
- escape string
- query
das kann man ja fast beliebig fein granulieren oder zusammenfassen. Oder man baut sich halt einen Wrapper, der das abstrahiert.
chorn ist offline   Mit Zitat antworten
Alt 16.12.2011, 09:27  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

nö, use PDO padawan.

connect -> query => use

Ich granulier da nix.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 16.12.2011, 10:00  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Use FileAbstraktor -> query. Punkt.
chorn ist offline   Mit Zitat antworten
Alt 16.12.2011, 10:45  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

wo er dann
Code:
- Read file
- explode Items
- get Name
- get Date
- get Content
einbaut und dann doch tut... äh jo

Ohne Worte.

PDO -> Bordmittel, selbstgebaute Interface Abstraktion -> kein Bordmittel

Derweil: Gästebücher wachsen, Files werden ( zu ) groß, werf dein FileAbstractor(!) weg und benutz direkt PDO und werfs in ein SQL(ite)-File aka Datenbank. Alles andere is für die:

PHP-Code:
abstract class trashCan {
   abstract static public 
clear();

__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 16.12.2011, 11:19  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Ändert nichts daran, dass deine Gegenüberstellung Müll ist, solange du die Hälfte der Schritte beim Datenbankzugriff einfach weglässt und dir beim Dateizugriff welche ausdenkst.
chorn ist offline   Mit Zitat antworten
Alt 16.12.2011, 11:44  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

PHP-Code:
// connect
$db = new PDO('sqlite:file.db','w');

// query
$stmt $db->prepare(/* query */);
$stmt->bindValue(/* ... */);
$stmt->execute();

// use
foreach ( $stmt->fetchObject() as $data ) {


PHP-Code:
// open ( connect )
$fileContent file_get_contents('file.dat');

// create usable dataSet prototype -- ( Überflüssig )
$fileData explode("**ENTRYSEP**"$fileContent);

// create usable structure inside of dataSets, accessible like Mysqli or PDO's Statement Results
// -- ( Überflüssig² )
foreach ( $fileData as $key => &$item ) {
   
$temp explode('**FIELDSEP**'$item);
   
$item = array();
   list ( 
$item['fieldname1'], $item['fieldname2'], $item['fieldname3'], $item['fieldname4'] ) = $temp;
}

// use 
foreach ( $fileData as $data ) {
   
/* ... */

1 GB file.dat -> "ajo ich bin dann ma AFK.."

1 GB Datenbank via PDO -> Fertig beim klickern.

Es mag jetzt sein das ich mich um einen Schritt überschlagen habe, aber stell dir mal vor du duldest alles innerhalb deines Gästebuchs, sodas dir eigentlich nix anderes übrigbleibt als den "Content" auchnoch mit base64 zu verschnipseln...

Nene, soviel Sand und keine Förmchen..
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 16.12.2011, 16:39  
Erfahrener Benutzer
 
Registriert seit: 07.06.2009
Beiträge: 107
PHP-Kenntnisse:
Anfänger
roest befindet sich auf einem aufstrebenden Ast
roest eine Nachricht über ICQ schicken roest eine Nachricht über Skype™ schicken
Standard

Der Junge programmiert seit 2 Tagen und hat Fragen zum einfügen von Text in Textdateien und ihr diskutiert in "seinem" Tread über PDO und sqlite.

Naja die file_insert_contents Funktion ist gut die löst das Problem, was man durchaus auch mal bei anderen Problemsituationen haben kann) gut.
__________________
May the Source be with you.
roest ist offline   Mit Zitat antworten
Alt 17.12.2011, 04:03  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Den "Jungen" möchte ich persönlich davon überzeugen das Text-Dateien die schlechteste Wahl sind ^^
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] margin-bottom erzeugt im Firefox abstand nach oben Squall HTML, Usability und Barrierefreiheit 12 17.03.2011 13:52
Header ganz nach oben Bolder HTML, Usability und Barrierefreiheit 6 13.03.2011 18:03
[Erledigt] jquery fullcalendar events nach oben verschieben Thorus JavaScript, Ajax und mehr 2 24.01.2011 11:38
CSS - Hintergrundbild oben beschneiden luks2com HTML, Usability und Barrierefreiheit 6 09.09.2010 21:00
[Erledigt] Hyperlink ohne Sprung nach oben 9999 HTML, Usability und Barrierefreiheit 10 29.08.2010 19:22
[Erledigt] Css, Grafik-Abstand oben und link owii HTML, Usability und Barrierefreiheit 8 15.01.2010 16:45
FORM -> Schleife in <select> geht nach oben... BEEN madSoul PHP Tipps 2007 13 24.11.2005 15:03
[Erledigt] Firefox springt bei Skripten mit session_start nach oben Off-Topic Diskussionen 18 02.08.2005 12:20
oben Hinweise anzeigen PHP Tipps 2005 4 08.04.2005 16:08
[Erledigt] Text oben bündig mit Textarea &quot;CSS&quot; HTML, Usability und Barrierefreiheit 3 08.03.2005 09:42
*.dat Datei auslesen von unten nach oben! CHRIS PHP Tipps 2004-2 12 30.11.2004 14:15
Dropdownfeld das Aktuelle Oben themonk PHP Tipps 2004 11 15.10.2004 13:56
Funktion schreibt Text links oben hin... PHP Tipps 2004 5 29.09.2004 14:09

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jspit file_put_contents php.de, $contentstring = @file_get_contents

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:26 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum