php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #46 (permalink)  
Alt 22-11-2010, 08:51
dolbyfreak
 Registrierter Benutzer
Links : Onlinestatus : dolbyfreak ist offline
Registriert seit: Nov 2010
Beiträge: 29
dolbyfreak befindet sich auf einem aufstrebenden Ast
Standard

Hab mir mal was anderes ausgedacht. Ich lasse jetzt Textdateien einzelnd automatisch erstellen... wie wäre es denn dann, wenn ich diese direkt über eine Schleife ausgeben könnte. Vielleicht mit readfile, include, file_get_contents in der Bedingung der Schleife? Ich hatte ein wenig Erfolg mit readfile und include gehabt, aber leider nur mit dem ersten Array. Die weiteren blieben unberrührt.

PHP-Code:
$links glob("textdata/links/*.*");

echo 
'<pre>';
for(
$x=0$x<count($links[0]); $x++) {

print_r ($links);


Ausgabe:

HTML-Code:
Array
(
    [0] => textdata/links/link0.txt
    [1] => textdata/links/link1.txt
    [2] => textdata/links/link2.txt
    [3] => textdata/links/link3.txt
)
und mit readfile() oder include() kam das heraus:

Der Eintrag "link 1[x]" im Quelltext:

HTML-Code:
<a href="link" target="_blank">link 1</a><a href="phpdata/link_entf.php style="color:darkred" title="löschen">[x]</a>
HTML-Code:
link 1[x]
Array
(
    [0] => textdata/links/link0.txt
    [1] => textdata/links/link1.txt
    [2] => textdata/links/link2.txt
    [3] => textdata/links/link3.txt
)
link 1[x]
Ne Idee wie man den Unfug so hinbekommt, dass ich die Inhalte der Textdateien ausgeben lassen kann? Das wäre so geil wenn das klappen könnte. Ich hoffe das es jemand lösen kann.

Cheers
Mit Zitat antworten
  #47 (permalink)  
Alt 22-11-2010, 12:03
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard Neustart

Jetzt wird es langsam Zeit, alles über Bord zu werfen, was du bisher aufgetischt hast. Denn deine bisherigen Ansätze sind allesamt zu kompliziert, ungeeignet oder fehlerträchtig.

Du hast bereits einige Hinweise bekommen, wie du es besser machen könntest. Jedoch hast du keinen davon verstanden und umsetzen können. Offenbar liegt es an deinen mangelhaften PHP- oder allgemeinen Programmierkenntnissen. Deshalb erkläre ich es jetzt mal ganz detailliert.

Du willst eine Linkliste pflegen. Bisher speicherst du dazu fertige HTML-Links. Das ist schon mal schlecht. Das ändern wir jetzt. Wir speichern jetzt stattdessen nur die URLs und Linknamen.
Dafür überlegen wir uns eine geeignete Datenstruktur. Die sieht so aus:
Code:
array('url' => <URL>, 'name' => <Name>)
Weil wir mehrere Links speichern wollen, brauchen wir einen Container für eine beliebige Anzahl solcher Links/Arrays. Der sieht so aus:
Code:
array(
    0 => array('url' => <URL>, 'name' => <NAME>),
    1 => array('url' => <URL>, 'name' => <NAME>),
    ...
    n => array('url' => <URL>, 'name' => <NAME>),
)
Praktischerweise hat in diesem Container/Array jeder Eintrag gleich eine ID, nämlich den Key links vom "=>". Diese ID werden wir später fürs Löschen benutzen.

Nun brauchen wir eine Möglichkeit, diesen Container in einer Datei zu speichern. Da man Arrays nicht direkt in eine Datei schreiben kann, müssen wir den Container mit serialize() in einen String umwandeln. Zum Speichern verwenden wir also folgenden Code:
PHP-Code:
file_put_contents(serialize($container), $filename); 
Um die so gespeicherten Daten wieder aus der Datei zu lesen, benutzen wir folgenden Code:
PHP-Code:
$container unserialize(file_get_contents($filename)); 
Weil das Lesen und Schreiben der Daten immer wieder an verschiedenen Stellen in deinem Script gemacht werden muss, legen wir uns dafür Funktionen an:
PHP-Code:
function write($container$filename) {
    
file_put_contents(serialize($container), $filename);
}

function 
read($filename) {
    
$container unserialize(file_get_contents($filename));
    return 
$container;

Jetzt sind wir schon so weit, dass wir die Linkliste anzeigen können:
PHP-Code:
$filename '/pfad/zur/datei.ser';
$links read($filename);
foreach (
$links as $id => $link) {
    
// der Link selbst
    
echo '<a href="'$link['url'] .'">'$link['name'] .'</a>';
    
// ein Link zum Löschen dieses Links
    
echo '<a href="'PHP_SELF .'?action=delete&id='$id .'">löschen</a>';
    echo 
'<br />';

Wie du siehst, wird zum Löschen eines Links das gleiche Script mit dem GET-Parameter action=delete aufgerufen und die ID des zu löschenden Links übergeben. Bauen wir uns also den Code fürs Löschen:
PHP-Code:
if (isset($_GET['action']) && $_GET['action'] == 'delete') {
    
$links read($filename);
    if (isset(
$_GET['id'], $links[$_GET['id']]) {
        
// Löschen des Links aus dem Container
        
unset($links[$_GET['id']);
        
// veränderte Daten zurück schreiben in Textdatei
        
write($links$filename);
    }

Das war auch schon alles. Ich überlasse es dir, die gezeigten Codeschnipsel in der richtigen Reihenfolge zu einem Script zusammen zu setzen.
Außerdem solltest du die Funktionen read() und write() erweitern, so dass sie auch dann korrekt arbeiten, wenn die Datei $filename nicht existiert, nicht les- bzw. schreibbar ist. Überlege dir dafür, wie du diese "Fehler" erkennst (file_exists() u.ä.) und wie du darauf reagierst.

Solltest du nun immer noch Probleme haben, poste bei deinem nächsten Beitrag bitte den relevanten Code deines Scripts, damit wir nachvollziehen können, wie dein Stand ist.
Mit Zitat antworten
  #48 (permalink)  
Alt 22-11-2010, 15:32
dolbyfreak
 Registrierter Benutzer
Links : Onlinestatus : dolbyfreak ist offline
Registriert seit: Nov 2010
Beiträge: 29
dolbyfreak befindet sich auf einem aufstrebenden Ast
Standard

Geht klar... ich nehm mir das vor, sobald ich wieder Zeit habe! Danke für die detaillierte Erklärung! Das wird bestimmt interessant werden.. freu mich schon drauf

LG
Mit Zitat antworten
  #49 (permalink)  
Alt 23-11-2010, 01:28
dolbyfreak
 Registrierter Benutzer
Links : Onlinestatus : dolbyfreak ist offline
Registriert seit: Nov 2010
Beiträge: 29
dolbyfreak befindet sich auf einem aufstrebenden Ast
Standard

Moin Zamme! Bin gerade von der Probe zurück und mach mich jetzt hier mal an die Arbeit.

Mal vorab ein Statement von mir!

Ich hab bisher noch nicht angefangen, dafür aber die Idee näher angeschaut. Ihr müsst mich entschuldigen wenn, ich nochmal in die Basics abschweife, aber es gilt Löcher zu stopfen! Was ich überhaupt noch nicht so richtig nachvollziehen kann ist folgendes:

- Funktionen im allgemeinen (hier: write, read, etc.)
- return
- foreach-Schleife
- isset()^^
- serial-/unserialize

Funktion... tja, da weiß ich so gut wie gar nichts darüber. Darum versuche ich es mal selbst zu erklären:

PHP-Code:
function read($filename
Ich nehme mal an die Funktion read() wird nur dann in Betracht gezogen, wenn $filename wahr ist, bzw. existiert. Und wenn die Bedingung wahr ist, werden die Aufgaben in den geschweiften Klammern ausgeführt. Im Nachhinein kann man dann immer auf die Funktion zurückgreifen, um nicht dauernd den Code auf's neue zu beginnen, ist das in etwa richtig? Was würde passieren wenn die Bedingung nicht ausführbar ist weil z.B. der Inhalt der Var nicht existiert oder in diesem Fall der Pfad zur Datei fehlerhaft ist. Gibt das eine Serverfehlermeldung zurück mit Hinweis zur Zeile?

Ist es auch richtig das Funktionen beliebig benannt werden können wie in etwa die Variablen? Also ist write und read ein Produkt der Eigenkreation?

PHP-Code:
return 
Ein Sprachprodukt laut php.net.. übergibt den Parameter als Rückgabewert der Funktion. Verstehe ich jetzt nur halb und halb. Die Klammern können also weggelassen werden? Wie sieht so ein Fall aus? Ist das vielleicht in ähnlicher Weise mit exit; zu vergleichen? Nur das exit; nichts mehr zurückgibt? Ich hab das mal bei HTML/Javascript aufgeschnappt (return false). Hat aber damit nichts zu tun oder?

PHP-Code:
foreach ($links as $id => $link
Die Schleifen-Funktion habe ich mir jetzt mal näher angeschaut. Die erste Variable ist - ich weiß nicht ob das stimmt - "immer?" der Container für die Inhalte und die zweite Var speichert, bzw. hat bereits schon den Inhalt - der evtl. schon vorher definiert wurde - enthalten. In unserem Fall sind es die IDs an den Löschlinks, die ja mit den Zahlen im Array verglichen werden, richtig?

PHP-Code:
isset() 
Prüft, ob eine Variable existiert und ob sie nicht NULL ist...
Jo, das leuchtet mir ein. Ich stolpere allerdings ständig über den Vergleich von if($var == true) und if(isset($var))
Das scheinen aber beides verschiedene Welten zu sein. Bei dem ersten Vergleich ist es wie bei einer Session wenn man z.B. so etwas hat:

PHP-Code:
if ($user == $Benutzername and $Passwort == $pwd) { // hier hab ich das dumme Gefühl das da ein isset() reingehört!?
$_SESSION["login"] = true
}
if (
$_SESSION["login"] == true// die ist gemeint! 

und bei isset()

PHP-Code:
if (isset($var)) {
    echo 
"Die Variable ist gesetzt, also wird etwas ausgegeben.";

Wann wird es entscheidend die richtige Wahl zu treffen? Ich habe bisher immer ohne die isset() Funktion gearbeitet. Kann man isst() am besten für die Passwort/Benutzerabfrage verwenden? Also z.B. so ausgedrückt isset wenn User falsch print rote Schrift else grüne Schrift und isset wenn Passwort falsch print rote Schrift else grüne Schrift.. klingt doof, aber so ist es schnell erklärt

Dient nur zur Erklärung! Aussehen soll das so hier - wäre hier isset() wichtig? (Beispiel Username):

PHP-Code:

<?php if ($_GET["check"] == "login")   { 
if (
$user == $Benutzername and $pwd != $Passwort) { 

echo 
'<font color="green">Benutzername korrekt!</font>'

}else{ 
       echo 
'<font color="red">Benutzername: </font>';  }
}else{
       echo 
"Benutzername";

?>

PHP-Code:
file_put_contents(serialize($container), $filename); 
Hier habe ich schon ganz gute Erkenntnisse gesammelt. serialize() wandelt also ein oder mehrere Arrays in einen String, Zeichenkette um? Das was ich vorher in diesem Posting versucht habe zu verstehen.. also dieses b:0; was nach der Ausgabe in der Textdatei zu finden war. Das war aber völliger Unsinn, weil das ganze im Code stattfindet, bzw. wird das "virtuell gesehen" im Array abgelegt und kann bei einer Ausgabe mit unserialize(); wiederhergestellt werden, korrekt?

Im ganzen hab ich verstanden, dass man mit Hilfe der Funktionen Arbeitsschritte, bzw. den Code verkürzen / übersichtlicher machen kann. In unserem Fall muss dann nicht dauernd - na ja, 2x read und 1x write mit der Funktion serial-/unserialize für den Container geschrieben werden. Aber würde natürlich auch ohne die Funktionen: write und read funktionieren, richtig?

Was mir allerdings unklar ist: => $link)
Hmm.. bedeutet das vielleicht gleichgrößer oder ist das wieder so ein Zeichen wie aus einem Array (aus der print_r-Ansicht)?

grrrr.. jetzt ist mir schon zu spät, um mit dem proggen anzufangen
morgen gehts dann los... es ist mir ja auch wichtig das ganze zu kapieren und nicht nur copy&past anzuwenden. Sondern ich will ja auch mal selbst drauf losschreiben können. Bei vielen Sachen klappt das schon ganz gut, aber das ist untere Schublade

Wünsch was!
und danke für diese tolle Idee nochmal!

Geändert von dolbyfreak (23-11-2010 um 01:49 Uhr)
Mit Zitat antworten
  #50 (permalink)  
Alt 23-11-2010, 02:35
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Auweia, deine PHP-Kenntnisse sind viel geringer als ich annahm. Mehr als Variablen ausgeben kannst du scheinbar nicht.
Das ist nicht schlimm, jeder hat mal angefangen. Aber bitte hör auf, dir selbst einen Reim zu machen! Lies PHP: Language Reference - Manual, Anfängertutorials oder ein gutes Fachbuch! Und immer alles ausprobieren …
Mit Zitat antworten
  #51 (permalink)  
Alt 23-11-2010, 19:03
dolbyfreak
 Registrierter Benutzer
Links : Onlinestatus : dolbyfreak ist offline
Registriert seit: Nov 2010
Beiträge: 29
dolbyfreak befindet sich auf einem aufstrebenden Ast
Standard

Lecker Lektüre!! Schau ich mir an.. thx!
Ja ich bin noch nicht so super darin.. aber das kommt hoffentlich noch. Schön Piano arbeiten, dann wird das auch was.

Uii.. ich hab 2 Fehler in deinem Skript gefunden.. eine runde und eine eckige Klammer hat gefehlt

Sind anfangs bevor der Code überhaupt ausgeführt wird Informationen in der Textdatei gespeichert? Ich verstehe gerade nicht wo das Array hin soll in den Code oder in die Datei? Ich nehme mal an in die Datei... weil der container ja mit unserialize geladen wird.. aber mit print_r() bekomme ich keine Inhalte angezeigt! Warum?

Geändert von dolbyfreak (23-11-2010 um 19:45 Uhr)
Mit Zitat antworten
  #52 (permalink)  
Alt 25-11-2010, 23:26
dolbyfreak
 Registrierter Benutzer
Links : Onlinestatus : dolbyfreak ist offline
Registriert seit: Nov 2010
Beiträge: 29
dolbyfreak befindet sich auf einem aufstrebenden Ast
Standard

Ich bitte um Hilfe.. komme nicht weiter mit dieser for-Schleife Aber die Idee ist super. Ich hab es in einer anderen Art und Weise ohne serialize und mit der vereinfachten for-Schleife probiert, da funzt es. Aber ich würde gern diese Version lernen, bzw. nutzen. Warum bekomme ich nichts ausgegeben?? Auch wenn ich die Funktion an das ? hänge, bekomme ich keine Ausgabe
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bestimmte Zeilen aus Textdatei lesen moinmoin666 PHP Developer Forum 7 18-07-2008 17:08
löschen von 8 Zeilen aus Textdatei mit for-Schleife israelsson PHP Developer Forum 6 16-11-2004 19:27
Zeilen in Textdatei ändern Patryn PHP Developer Forum 9 23-08-2002 19:40
Textdatei aufrufen - Mehrere Zeilen refLor PHP Developer Forum 2 12-04-2002 20:18
Zeilen einer Textdatei zählen Blueworker PHP Developer Forum 4 21-09-2001 08:32

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:40 Uhr.