| Daten aus Textdatei richtig auslesen |
Diamo
Feiertags-Poster
Beiträge: 38
|
Hi zusammen,
ich hab ein Script programmiert, dass ein Bild in ein Verzeichnis uploadet und einen Text in eine Datei schreibt:
1: | fwrite($fp, $_FILES['upload']['name']."#".$text."\n"); |
Beispiel: frank.jpg#Ein guter Kumpel
Das funktioniert auch soweit. Mein Problem ist, dass ich nicht weiß wie ich die Daten wieder auslesen kann. Bis jetzt wird nur das Bild angezeigt. Ich möchte aber, dass das script den entsprechenden Text auch noch ausgibt.
Der link zur Textdatei: http://www.styleworker.de/koala/uploads/info.txt
Falls es euch noch hilft, hier ist der Quellcode für pics.php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115: | <html>
<head>
<title>Pics Admin-Bereich</title>
<link href="../standard.css" rel="stylesheet" media="screen">
<style>
<!--
body { scrollbar-3dlight-color: #666666;
scrollbar-arrow-color: #666666;
scrollbar-darkshadow-color: #666666;
scrollbar-face-color: #C7CED4;
scrollbar-highlight-color: white;
scrollbar-shadow-color: #95A2B1;
scrollbar-track-color: #83909C }
td.top
{
background-color: #9CA2A7; border-color: #FFFFFF #000000 #000000 #FFFFFF; padding-top: 2px;
padding-right: 2px; padding-bottom: 2px; padding-left: 2px; border-style: outset; border-top-width: 1px;
border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px
}
input, textarea { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10 px; color: #000000; text-decoration: none; background-color: #83909C; border-color: #C4CBD1 #C4CBD1 #C4CBD1; border-style: dashed; border-top-width: 1 px; border-right-width: 1 px; border-bottom-width: 1 px; border-left-width: 1 px }
-->
</style>
</head>
<body BGCOLOR="#5E6C77">
<?php
//Define some variables
$dir = "../uploads/$section/"; //Change this to the correct dir
//MIME types to allow, Gif, jpeg, zip ::Edit this to your liking
$types = array("image/gif","image/pjpeg","application/x-zip-compressed");
//Check to determine if the submit button has been pressed
if(isset($_POST['submit'])){
//Shorten Variables
$tmp_name = $_FILES['upload']['tmp_name'];
$new_name = $_FILES['upload']['name'];
//Check MIME Type
if (in_array($_FILES['upload']['type'], $types)){
//Move file from tmp dir to new location and update info.txt
move_uploaded_file($tmp_name,$dir . $new_name);
$fp = fopen ("../uploads/info.txt","a");
fwrite($fp, $_FILES['upload']['name']."#".$text."\n");
fclose($fp);
echo "{$_FILES['upload']['name']} was uploaded sucessfully!";
}else{
//Print Error Message
echo "<small>File <strong><em>{$_FILES['upload']['name']}</em></strong> Was Not Uploaded!</small><br />";
//Debug
$name = $_FILES['upload']['name'];
$type = $_FILES['upload']['type'];
$size = $_FILES['upload']['size'];
$tmp = $_FILES['upload']['name'];
echo "Name: $name<br/ >Type: $type<br />Size: $size<br />Tmp: $tmp";
}
}
else{
echo 'Could Not Upload Files or No File Is Selected';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<table class="copytext" border="0" cellspacing="2" cellpadding="2">
<tr>
<td class="top"><b>Dateiname </b></td>
<td class="top"><input type="file" name="upload"></td>
</tr>
<tr>
<td class="top"><b>Section</b></td>
<td class="top"><select NAME="section" STYLE="background-color : #283542; color : #F7F7F7; font-size : 9px; font-family : Verdana, Arial, Helvetica, sans-serif;">
<option value="ultra"> - ultra</option>
<option value="pics">- pics</option>
<option value="friends">- friends</option>
</select></td>
</tr>
<tr>
<td class="top"><b>Text</b></td>
<td class="top"><input type="text" name="text" size="24" border="0"></td>
</tr>
<tr>
<td class="top"><input type="submit" value="Upload Files" name="submit"></td>
<td></td>
</tr>
</table>
</form>
</body>
</html> |
Diese Nachricht wurde geändert von: Diamo |
|  Profil
E-Mail
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150
|
Moin Moin,
du könntest zum Beispiel die *.txt Datei in ein Array einlesen und dann in die beiden Teile splitten, die wichtig sind.
1:
2:
3:
4:
5: | $file = file(info.txt); //liest den Inhalt der Datei zeilenweise in ein Array
for ($x=0; $x<count($inhalt); $x++)
{
$inhalt = explode("#", $inhalt[$x]);
} |
Die Daten liegen dann wie folgt vor:
$inhalt[$x][0]="013720300.jpg"
$inhalt[$x][1]="geiler Text";
Hoffe, das es hilft!
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
Diese Nachricht wurde geändert von: bastir |
|  Profil
Website
Editieren
Zitieren
|
Diamo
Feiertags-Poster
Beiträge: 38
|
Danke !
Habs jetzt soweit hingekriegt, dass er die Bilder mit Text anzeigt:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14: | <?php
$file = file("http://www.styleworker.de/koala/uploads/info.txt");
echo "<table><tr>";
for ($i=0;$i<=count($file);$i++) {
$array[$i] = explode("#",$file[$i]);
echo "<td><a href=uploads/pics/". $array[$i][0] ." target=_blank><img src=uploads/pics/". $array[$i][0] ." height=100 width=150 border=0></a><br>". $array[$i][1] ."</td>";
if (($i % 3 == 0) && ($i != 0)) echo"</tr><tr>";
}
echo"<td colspan=3></td></tr></table>"
?> |
Mein Problem ist jetzt aber, dass er nur 3 Spalten(3Bilder) pro Zeile einfügen soll, aber dies nicht ordnungsgemäß funktioniert. Außerdem wird am Ende noch eine leere image angefügt, was ich nicht so richtig verstehe ?! Der Link: http://www.styleworker.de/koala/?link=content_pics
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150
|
Ok, du hast da noch 2 Fehler drin.
Punkt 1:
1: | for ($i=0;$i<=count($file);$i++) { |
$i<=count ist falsch und dadurch wird dein letztes überflüssiges Bild verursacht.
Lösche einfach das "=":
1: | for ($i=0;$i<count($file);$i++) { |
Das am Anfang 4 Bilder angezeigt werden, liegt daran daß er von 0 bis 3 zählt, also pic0, pic1, pic2, pic3.
Du könntest es also so schreiben:
1: | if ((($i + 1) % 3 == 0) && ($i != 0)) echo"</tr><tr>"; |
Dann sollte es gehen!
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
|
|  Profil
Website
Editieren
Zitieren
|
Diamo
Feiertags-Poster
Beiträge: 38
|
super funktioniert !!!
Ich hab noch ne Variable hinzugefügt, die section_variable:
test.jpg#der text#pics
Jetzt hab ich in den Code noch ne if abfrage eingefügt, die nur die anzeigt, die die section pics beinhaltet. Trotzdem werden auch die Bilder mit der Section friends angezeigt, was hab ich da falsch gemacht ?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14: | <?php
$file = file("http://www.styleworker.de/koala/uploads/info.txt");
echo "<table><tr>";
for ($i=0;$i<count($file);$i++) {
$array[$i] = explode("#",$file[$i]);
if ($array[$i][2]=="friends")
continue;
echo "<td><a href=uploads/pics/". $array[$i][0] ." target=_blank><img src=uploads/pics/". $array[$i][0] ." height=100 width=150 border=0></a><br>". $array[$i][1] ."</td>";
if ((($i + 1) % 3 == 0) && ($i != 0)) echo"</tr><tr>";
}
echo"<td colspan=3></td></tr></table>"
?> |
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150
|
hmm,
ich kannte continue noch gar nicht
Probiere es doch mal so:
1:
2:
3:
4:
5: | if ($array[$i][2]!="friends")
{
der ganze Code
}
|
Das erzeugt am Ende doch das Gleiche.
Und was machen dann die Bilder?
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
Diese Nachricht wurde geändert von: bastir |
|  Profil
Website
Editieren
Zitieren
|
Diamo
Feiertags-Poster
Beiträge: 38
|
Habs jetzt geschafft, aber jetzt gibt es schon wieder ein Problem. Jetzt zeigt er die Tabelle nicht mehr richtig an. Es sollten normal 3 Bilder pro Zeile angezeigt werden:
http://www.styleworker.de/koala/?link=content_pics
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15: | <table width="100%" border="0" cellspacing="5" cellpadding="0">
<tr align="center">
<?php
$datei = file("uploads/info.txt");
for ($i=0;$i<count($datei);$i++) {
$split[$i] = explode("#",$datei[$i]);
if ($split[$i][2]=="pics\n"){
echo "<td valign='top' align='center' class='copytext'><a href=uploads/pics/".$split[$i][0]." target=_blank><img src=uploads/pics/". $split[$i][0] ." height=100 width=150 border=0></a><br>". $split[$i][1] ."</td>";
if ((($i + 1) % 3 == 0) && ($i != 0)) echo"</tr><tr>";
}}
?>
</tr>
</table> |
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150
|
Habe den Code noch einmal überflogen und ein paar Macken entfernt. So wie er jetzt ist, funktioniert er bei mir.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21: | <table width="100%" border="0" cellspacing="5" cellpadding="0">
<tr align="center">
<?php
$datei = file("http://www.styleworker.de/koala/uploads/info.txt");
for ($i=0; $i < count($datei); $i++)
{
$split[$i] = explode("#",$datei[$i]);
if (trim($split[$i][2])=="pics")
{
$y=$y+1;
echo "<td valign='top' align='center' class='copytext'>\n"
." <a href=http://www.styleworker.de/koala/uploads/pics/".$split[$i][0]." target=_blank>\n"
." <img src=http://www.styleworker.de/koala/uploads/pics/". $split[$i][0] ." height=100 width=150 border=0>\n"
." </a><br>". $split[$i][1] ."\n"
."</td>\n";
if ($y % 3 == "0") echo "</tr><tr>";
}
}
?>
</tr>
</table> |
Ich hoffe, daß dir das jetzt geholfen hat und jetzt alles funktioniert.
so long
sebastian
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
|
|  Profil
Website
Editieren
Zitieren
|
Diamo
Feiertags-Poster
Beiträge: 38
|
Danke für deine ganze Hilfe. Das Script funktioniert wunderbar !
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150
|
Schön das es geht und danke für dein Lob!
Viel Spaß mit deinem Script!
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
|
|  Profil
Website
Editieren
Zitieren
|
Diamo
Feiertags-Poster
Beiträge: 38
|
Ich bins nochmal. Wollte kein neues Thema aufmachen, da es eigentlich noch zu diesem gehört.
Dank dir zeigt er ja die Bilder jetzt ordnungsgemäß an. Jetzt möchte ich aber noch, dass er die Bilder löscht und den Eintrag aus der info.txt wieder löscht. Ich hab jetzt hinbekommen, dass er ein Bild löschen kann, sobald aber man mehrere Bilder auswählt, löscht er auch nur eins.
Meine Frage ist jetzt wie ich mehrere Bilder auf einmal löschen kann und wie ich den Eintrag zu dem Bild x wieder lösche
Der Komplette Code für die pics.php(Einfügen und Löschen von Bildern)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159: | <html>
<head>
<title>Pics Admin-Bereich</title>
<link href="../standard.css" rel="stylesheet" media="screen">
<style>
<!--
body { scrollbar-3dlight-color: #666666;
scrollbar-arrow-color: #666666;
scrollbar-darkshadow-color: #666666;
scrollbar-face-color: #C7CED4;
scrollbar-highlight-color: white;
scrollbar-shadow-color: #95A2B1;
scrollbar-track-color: #83909C }
td.top
{
background-color: #9CA2A7; border-color: #FFFFFF #000000 #000000 #FFFFFF; padding-top: 2px;
padding-right: 2px; padding-bottom: 2px; padding-left: 2px; border-style: outset; border-top-width: 1px;
border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px
}
input, textarea { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10 px; color: #000000; text-decoration: none; background-color: #83909C; border-color: #C4CBD1 #C4CBD1 #C4CBD1; border-style: dashed; border-top-width: 1 px; border-right-width: 1 px; border-bottom-width: 1 px; border-left-width: 1 px }
-->
</style>
</head>
<body BGCOLOR="#5E6C77">
<?php
//Define some variables
$dir = "../uploads/$section/"; //Change this to the correct dir
//MIME types to allow, Gif, jpeg, zip ::Edit this to your liking
$types = array("image/gif","image/pjpeg","application/x-zip-compressed");
//Check to determine if the submit button has been pressed
if(isset($_POST['submit'])){
//Shorten Variables
$tmp_name = $_FILES['upload']['tmp_name'];
$new_name = $_FILES['upload']['name'];
//Check MIME Type
if (in_array($_FILES['upload']['type'], $types)){
//Move file from tmp dir to new location and update info.txt
move_uploaded_file($tmp_name,$dir . $new_name);
$fp = fopen ("../uploads/info.txt","a");
fwrite($fp, $_FILES['upload']['name']."#".$text."#".$section."\n");
fclose($fp);
echo "{$_FILES['upload']['name']} was uploaded sucessfully!";
}else{
//Print Error Message
echo "<small>File <strong><em>{$_FILES['upload']['name']}</em></strong> Was Not Uploaded!</small><br />";
//Debug
$name = $_FILES['upload']['name'];
$type = $_FILES['upload']['type'];
$size = $_FILES['upload']['size'];
$tmp = $_FILES['upload']['name'];
echo "Name: $name<br/ >Type: $type<br />Size: $size<br />Tmp: $tmp";
}
}
else{
echo 'Could Not Upload Files or No File Is Selected';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<table class="copytext" border="0" cellspacing="2" cellpadding="2">
<tr>
<td class="top"><b>Dateiname </b></td>
<td class="top"><input type="file" name="upload"></td>
</tr>
<tr>
<td class="top"><b>Section</b></td>
<td class="top"><select NAME="section" STYLE="background-color : #283542; color : #F7F7F7; font-size : 9px; font-family : Verdana, Arial, Helvetica, sans-serif;">
<option value="ultra"> - ultra</option>
<option value="pics">- pics</option>
<option value="friends">- friends</option>
</select></td>
</tr>
<tr>
<td class="top"><b>Text</b></td>
<td class="top"><input type="text" name="text" size="24" border="0"></td>
</tr>
<tr>
<td class="top"><input type="submit" value="Upload Files" name="submit"></td>
<td></td>
</tr>
</table>
</form>
<img src="../images/trennlinie.gif" alt="" height="2" width="100%" border="0"><br>
<br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<table class="copytext" border="0" cellspacing="5" cellpadding="0">
<tr>
<td>Kategorie wählen:</td>
<td><select name="kat" STYLE="background-color : #283542; color : #F7F7F7; font-size : 9px; font-family : Verdana, Arial, Helvetica, sans-serif;" onChange="location.href=this.value">
<option value="?kat=pics"<?php if($kat=="pics"){echo " selected";} ?>> - pics</option>
<option value="?kat=ultra"<?php if($kat=="ultra"){echo " selected";} ?>> - ultra</option>
</select></td>
</tr>
<tr>
<td>Ausgewählte Bilder löschen:</td>
<td><input type="submit" name="action" value="delete"></td>
</tr>
</table>
<br>
<table width="516" border="0" cellspacing="5" cellpadding="0">
<tr align="center">
<?php
$datei = file("../uploads/info.txt");
if (isset($kat)){}else{$kat="pics";}
if($action && $action=="delete")
{
unlink("../uploads/".$showkat."/".$del);
}
for ($i=0; $i < count($datei); $i++)
{
$split[$i] = explode("#",$datei[$i]);
if (trim($split[$i][2])==$kat)
{
$y=$y+1;
echo "<td valign='top' align='center' class='copytext'>\n"
." <img src=../uploads/".trim($split[$i][2])."/". $split[$i][0] ." height=100 width=150 border=0>\n"
. "<input type=checkbox name=del value=".$split[$i][0]." border=0><input type=hidden name=showkat value=".trim($split[$i][2])."><br><br>\n"
."</td>\n";
if ($y % 6 == "0") echo "</tr><tr>";
}}
?>
</tr>
</table>
</form>
</body>
</html> |
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150
|
schick mal den link, so daß ich mal gucken kann, wie es aussehen soll.
mfg
sebastian
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
|
|  Profil
Website
Editieren
Zitieren
|
Diamo
Feiertags-Poster
Beiträge: 38
|
OK, dass er jetzt mehrere löscht, funktioniert jetzt. Das Problem, dass weiterhin besteht, ist dass ich net weiß wie ich einen Eintrag in der info.txt löschen kann.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29: | <?php
$datei = file("../uploads/info.txt");
if (isset($kat)){}else{$kat="pics";}
if($action && $action=="delete")
{
for ($z=1; $z<count($datei); $z++)
{
unlink("../uploads/".$showkat[$z]."/".$del[$z]);
}
}
for ($i=0; $i < count($datei); $i++)
{
$split[$i] = explode("#",$datei[$i]);
if (trim($split[$i][2])==$kat)
{
$y=$y+1;
$z=$z+1;
echo "<td valign='top' align='center' class='copytext'>\n"
." <img src=../uploads/".trim($split[$i][2])."/". $split[$i][0] ." height=100 width=150 border=0>\n"
. "<input type=checkbox name=del[".$z."] value=".$split[$i][0]." border=0><input type=hidden name=showkat[".$z."] value=".trim($split[$i][2]).">
\n"
."</td>\n";
if ($y % 6 == "0") echo "</tr><tr>";
}}
?> |
Diese Nachricht wurde geändert von: Diamo |
|  Profil
E-Mail
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150
|
ich würde am ende wieder alle eingelesenen daten in die datei schreiben. Also in dem Sinne eine neue Datei anlegen (vielleicht löscht du die alte davor) und dann die alten eingelesenen Daten aus dem Array wieder in die Datei schreiben.
Probiere das mal aus.
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
|
|  Profil
Website
Editieren
Zitieren
|
Diamo
Feiertags-Poster
Beiträge: 38
|
OK, jetzt öffne ich die Datei lese den Inhalt aus und schreibe ihn dann wieder in die selbe Datei. Meine Problem ist, dass ich aber net wie weiß, wie ich das anstellen kann, dass er eine bestimmte Zeile in der Datei löscht. Also z.B. dass er die Zeile löscht in der 'irgendwas.jpg' vorkommt.
1:
2:
3:
4:
5: | $fp = fopen ("../uploads/info.txt","w");
$str = fgets($fp);
fwrite($fp,$text);
fclose($fp);
unlink("../uploads/".$showkat[$o]."/".$del[$o]); |
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|