PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit FILE datei auslesen, inhalte dieses arrays vergleichen und formatiert ausgeben


mimatete
10.06.2009, 16:12:26
Hallo,
ich möchte gerne eine Datei zeilenweise auslesen und formatiert ausgeben. Mit FILE will das nicht so ganz klappen, weil in Abhängigkeit vom Inhalt des Arrays mit jede Zeile etwas anderes passieren soll. Habe ich Tomaten auf den Augen (bitte nicht ja sagen, ich habe erst vor 3 Tagen mit PHP angefangen) oder kann man so erzeugtes array NUR ausgeben?

for $i=0; $i<=1000; $i++)
{echo "danke!";}

mimatete

CeBe
11.06.2009, 04:04:41
ich möchte gerne eine Datei zeilenweise auslesen und formatiert ausgeben. Mit FILE will das nicht so ganz klappen, weil in Abhängigkeit vom Inhalt des Arrays mit jede Zeile etwas anderes passieren soll.

Poste doch mal, wie du es versucht hast, dann können wir dir sagen, was du falsch machst.
btw: Code bitte direkt formatieren, da gibts so nen schicken Button über dem Feld hier. ;-)

Habe ich Tomaten auf den Augen (bitte nicht ja sagen, ich habe erst vor 3 Tagen mit PHP angefangen)
Ja hast du, weil du es erst seit 3 Tagen kennst.
Mein Tipp:
http://tut.php-quake.net/de/
http://www.php.net/

oder kann man so erzeugtes array NUR ausgeben?

Was meinst du damit?
Mehr Code und mehr Erklärung bitte :-)

MfG
Carsten

mimatete
11.06.2009, 11:48:44
Viellen Dank für die Blumen.

OK, hier ein wenig code, auch wenn ich mein Problem fast gelöst habe, aber mit "~" und explode. Da werden wohl keine Zeilen, sondern Strings gespeichert.

$ausgabe = file("auswertung.txt");
for ($i=0; $i<count($ausgabe); $i++)
{
if ($ausgabe[$i] == "verlinkt")
{
$i++;
$n = $i + 1;
echo "<a href=\"mailto:$ausgabe[n]\">$ausgabe[i]</a>";
$i = $i+2;
}
elseif ($ausgabe[$i] == "geheim")
{
$i++;
echo "$ausgabe[i]";
$i = $i+2;
}
echo "ausgabe[$i]";
}

Falls ich hier einen Syntaxfehler eingebaut habe (ein $, " oder ; vergass), war es im Original nicht dabei. Es muss irgend ein logischer Fehler sein. Vielleicht doch in den Typen?
Ich habe schon den Inhalt der if-Anweisung zu "sage gefunden" verkürzt, aber die Schleife wird als einzige abgearbeitet.

Die Datei besteht aus Zeilen:

verlinkt (oder eben geheim)
name
mail@mail.de
text text text

also ein Gästebuch.

Ich weiss - man könnte auf fertige greifen, oder sich Code holen. Aber ich möchte gerne in Rahmen von Beschäftigungstherapie eben PHP lernen. Muss ich hier schreiben, dass ich mal in Pascal, C, Cobol, Pearl, Java und VB auch schon etwas machte? Aber es ist sehr lange hier mit unangenehmen "Sachen" dazwischen die mir vieles vergessen liesen.

Aus Erfahrung weiss ich, dass man am besten mit einem Projekt lernt. Und natürlich mit einigen Foren-Helfer :)

Es dankt
mimatete

mimatete
11.06.2009, 12:09:17
man sollte vielleicht den Feldern hier die value-option einbauern.
mein ganzer Text ist wohl flöten gegangen, weil ich mich das zweite mal anmelden musste.

Und bitte nicht gleich beleidigen. PHP ist die siebte "Sprache" (ich weis, dass es keine ist), die ich erlerne. Eigentlich nur die Syntax, weil PAP immer gleich ist.
Und ich mache es als $Beschäftigungstherapie ( = "langweile").

Ich möchte ein Gästebuch ohne db machen. Durch ein Projekt lernt man am besten.

Jetzt habe ich das Gesamte auf explode mit "~" umgestellt und es funzt.
Nur die Ausgabe ist noch nicht schön (zu mehrfach und überschreibt *hihi*).
Wahrscheinlich war das Prob, dass Zeilen mit Strings nicht vergleicht werden dürfen. Aber darüber habe ich noch nirgendwo gelesen. Ja, leider sind die Syntax-bücher und-seiten nicht immer gut und zu allgemein.
Übrigens - man hätte diese Frage hier beantworten können.
Meine Übungen stehen unter www.meinphp.mimatete.de , das Gästebuch ist die p3.php.

Danke (auch für die Blumen)
mimatete

Indyk
11.06.2009, 12:27:28
Hallo mimatete, solange du dein PHP Code nicht in den PHP Tags des Forums einbettest, und somit die lesbarkeit um ein vielfaches erhöhst, werden dir nur die wenigen helfen die sich nicht daran stören.

[php ] dein code [/php ]

wir sehen uns wieder wenn du uns entgegen gekommen bist. ( :

cortex
11.06.2009, 12:29:58
mein ganzer Text ist wohl flöten gegangen, weil ich mich das zweite mal anmelden musste.

daran sollte es nicht liegen - die texte bleiben i.d.r. nach erneuter anmeldung (eingabefelder in der mitte der seite) erhalten.


PHP ist die siebte "Sprache" (ich weis, dass es keine ist)


wie jetzt - was ist php denn sonst ?

cx

Indyk
11.06.2009, 12:36:38
Wahrscheinlich meinte er dir Unterteilung in eine Scriptsprache.

xabbuh
11.06.2009, 13:11:52
Evtl. stolperst du darüber, dass jede Zeile in der Datei mit einen Zeilenumbruch (je nach Betriebssystem \n, \r oder \r\n) abgeschlossen ist und diese Zeilenendezeichen auch durch file() nicht entfernt werden. Es bietet sich also an, diese Zeichen vor Stringvergleichen (==, !=) mit trim() oder rtrim() zu entfernen.

mimatete
11.06.2009, 15:34:56
vielen Dank für die sehr aufmunternde Worte.

Wenn ich in einem PHP-Forum poste nehme ich an, dass ich PHP-Fragen stelle und die PHP-scriptsprache benutze. Ihr nicht?

Jetzt wollte ich gerade eine Frage stellen und ein Code-Fragment posten:
$element = explode('~',$eintrag[$i]);
if ($element[4] == "geheim")

Ich habe gehofft, dass für jemanden, der in PHP sitzt sofort klar ist, was so ein Schnippsel soll: hier soll in Abhängigkeit von einem Eintrag (steht im vierten arrayFeld "geheim" oder "verlinkt"?) einiges formatiert werden, aber es haut nicht so ganz hin. Ohne if-Anweisung klappt mit der Formatierung.
Deswegen wollte ich wissen, ob man ein String, hier mein "geheim" eben, mit dem Inhalt eines Arrays vergleichen kann, oder in anderer Sprache - ob dieser Vergleich ein Sinn macht.
Ich habe jeden Fragment meines Scriptes einzeln überprüft.
In dem element-ARRAY steht, was stehen soll.

Das gesammte schaut so aus:

<?

$eintrag = file("auswertung.txt");
$temp = count($eintrag)-1;
for ($i=$temp; $i>=0 ; $i--)
{
$element = explode('~',$eintrag[$i]);
if ($element[4] == "geheim")
{ $test .= "<table><tr><td>".$element[0]."</td><td><b>"." - ".$element[1]."</b></td></tr><tr><td>".$element[3]."</td></tr></table>";}
if ($element[4] == "verlinken")
{ $test .= "<table><tr><td>".$element[0]."</td><td><a href=\"mailto:$element[2]\"><b>"." - ".$element[1]."</b></td></tr><tr><td>".$element[3]."</td></tr></table>";}
}
echo $test;
?>

Es ist eigentlich sehr einfach. Wo habe ich was übersehen?

Habe ich Euch mit meine Frage verärgert? Warum werde ich denn so von Oben herab behandelt? Es ist doch das Anfängerforum.

mimatete

Indyk
11.06.2009, 15:47:54
Hallo mimatete,

a) bitte bette dein PHP Script in die vom Forum vorgesehenen PHP Tags, dann sind deine Scripte für uns lesbarer und wir können dir schneller helfen
b) niemand redet von oben herab, vielleicht hast du ja komplexe. (das war wiederum nicht beleidigend gemeint falls du es so wahrgenommen hast. (was dafür sprechen würde das es stimmt ;))

Du hast also geschaut ob in $element[4] der string "geheim" vorkommt. Vielleicht enthält der String ja, wie auch schon von xabbuh angedeutet zeichen die du mit einer einfachen ausgabe nicht sehen kannst.

Funktionen wie
strlen()
var_dump()

können dir vll. weiterhelfen indem du die ausgaben für den inhalt von $element[4] und deinem string vergleichst.

desweiteren weise ich nochmal auf xabbuh´s tip mit dem \n\r umbrüchen hin
(nur not auch auch nl2br() arbeiten)

viel erfolg weiterhin!

EDIT
Ok jetzt hat vt1816 punkt a) schon für dich erledigt

xabbuh
11.06.2009, 15:49:39
Wenn ich in einem PHP-Forum poste nehme ich an, dass ich PHP-Fragen stelle und die PHP-scriptsprache benutze. Ihr nicht?
Es ging wohl eher um deine Aussage nach der PHP keine Sprache ist.

Deswegen wollte ich wissen, ob man ein String, hier mein "geheim" eben, mit dem Inhalt eines Arrays vergleichen kann, oder in anderer Sprache - ob dieser Vergleich ein Sinn macht.
Generell ist der Vergleich so möglich, wenn das Arrayelement ebenfalls eine Zeichenkette (bzw. um genau zu sein ein skalarer Wert ist).
Ich habe jeden Fragment meines Scriptes einzeln überprüft.
In dem element-ARRAY steht, was stehen soll.

[...]Es ist eigentlich sehr einfach. Wo habe ich was übersehen?
Könnten evtl. Zeilenumbrüche, wie von mir in meinem vorherigen Beitrag erwähnt, in Frage kommen?

Aber wie ebenfalls von anderen eben schon erwähnt: Nutze bitte die php-Tags des Forums, um deinen Code lesbar zu gestalten. Damit steigsterst du die Chance, dass dir jemand hilft, enorm.

vt1816
11.06.2009, 15:49:49
vielen Dank für die sehr aufmunternde Worte.

Wenn ich in einem PHP-Forum poste nehme ich an, dass ich PHP-Fragen stelle und die PHP-scriptsprache benutze. Ihr nicht?
[...]
Es ist eigentlich sehr einfach. Wo habe ich was übersehen?


Bitte beachte die Hinweise die man Dir weiter oben gegeben hat, dann wird hier auch die Konversation flüssiger laufen.

cortex
11.06.2009, 17:42:32
Warum werde ich denn so von Oben herab behandelt?

kann ich leider nicht nachvollziehen...

cx

mimatete
11.06.2009, 20:09:14
Hallo,
ich jage ungern nach etwas, was ich nicht sehen kann und daher habe ich eine andere Lösung gefunden: die Fuktion ereg macht es wunderbar.
Ich muss zwischen "geheim" und "verlinken" unterscheiden können und da ich nach dem trim sicher seien kann, dass vorne kein Gespenst steht, konzentriere ich mich nur auf die erste Buchstabe und - tja, es geht !
Es ist vielleicht nicht ganz elegant aber es funzt.
Übrigens trim hat hinten nicht alles weggeputzt, auch nicht Ersetzen von chr(10) und chr(13).

Danke für Eure Geduld.

mimatete