| 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! Post your PHP questions here! |
 |
|

05-08-2008, 01:00
|
|
Change
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 31
|
|
bestimmte zeilen löschen
Hallo, ich habe mir ein kleines Ticket-Script gebastelt!
muss dazu sagen das ich noch ein ziemlicher Frischling bin!
Ich trage die Supportanfragen der Tickets in meine Datei anfragen.html ein!
Die Frage ist jetzt, wie kann ich mit einem anderen Script zeilen aus dieser datei lösche?
ich trage sie ein mit:
PHP-Code:
<?php
$art=$_POST['art'];
$vorname=$_POST['vorname'];
$name=$_POST['name'];
$ort=$_POST['ort'];
$land=$_POST['land'];
$ausgabe= "<hr>".$art."\r\n".$vorname."\r\n".$name.$ort."\r\n".$land."<hr>";
$datei=fopen("anfragen.html","a");
$output=fwrite($datei,$ausgabe);
fclose($datei);
?>
jetzt suche ich ein script..sowas wie das hier:
PHP-Code:
<form action="3.php" method="post">zu löschende Zeile: #
<input type="text" name="fertig" MAXLENGTH="2" SIZE="1" /><input type="submit" /></form>
<?php
$delzeile=$_POST['fertig'];
$datei=fopen("namen.html","a");
$datei2=file('namen.html');
fdelete=$datei2[$delzeile];
fclose($datei);
?>
Das ist natürlich jetzt eine theoretische vorstellung!!!!!!
Ich weiß das das script so nicht funktioniert!
Aber ich hoffe ihr versteht mich!
Hoffe auf eine hilfreiche Antwort,
Vielen Dank schonmal, Change
Geändert von Change (05-08-2008 um 13:01 Uhr)
|

05-08-2008, 01:11
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Hallo,
bitte lies dir erstmal die Regeln durch "vor dem posten"..
Dann: Guck dir mal das Modell einer CSV-Datei an..
Das wäre viel einfacher zu realisieren und auch sinnvoller zu speichern..
Natürlich müsstest du das ganze dann auch anders auslesen..
mfg
|

05-08-2008, 01:18
|
|
Change
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 31
|
|
Ich verstehe nicht ganz was du meinst!
Zum einen welche Forumregel ich verstoßen habe und zum Anderen
was eine CSV Datei ist!
Geht das nicht mit PHP???
MfG Change
|

05-08-2008, 01:26
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Hallo,
Regeln: http://php-resource.de/forum/showthr...threadid=50454
-> Keine horizontalen Scrollbalken (ich hab einen bei 1280x800)
Natürlich geht das mit PHP, aber dein Speichermodell ist etwas murks..
Deshalb wollte ich dir das Modell der csv-datei ans Herz legen.
Da werden Werte durch ein Trennzeichen gespeichert und 1 Datensatz bekommt genau 1 Zeile.
Einlesen, löschen etwas. kein Problem.
Da es nur ein Modell ist und keine Sprache, ist natürlich die Sprache dafür php  Infos dazu hätte auch google gegeben
Bei deinem Modell müsste man das ganze recht kompliziert gestalten.
mfg
ps: hatte "vor dem posten" wohl auf den falschen thread verwiesen, sry
|

05-08-2008, 02:38
|
|
Change
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 31
|
|
Entschuldige, ich dachte php-scripts werden in einem extra kasten zusammengehalten, wie in anderen Foren!
csv hört sich gut an!
Wo kann man sich denn da nötige Wissen aneignen?
Gibt es da irgendein gutes Tutorial was empfohlen werden kann?
Vielen Dank für die Antwort, Change
|

05-08-2008, 11:40
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Generell musst du dir nur Wissen über das Arbeiten mit Dateien aneignen.
z.b.:
http://schattenbaum.net/php/
http://peterkropff.de
Würde zu folgendes raten:
Speichern: fopen(), fwrite(), fclose() (so wie du es eigentlich schon hast nur muss der speicher-string anders aussehen (siehe wikipedia - csv)
Auslesen: file(), und zum anzeigen for() und explode()
Löschen: siehe auslesen + formular zum absenden (ID ^= Zeile) + file(), unset(), implode() + speichern
mfg
ps: php scripte werden nicht automatisch umgebrochen .. wäre also nett, wenn du deinen beitrag oben bearbeiten würdest.
|

05-08-2008, 11:41
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Also ich würde ja hier zu einer Datenbank raten ...
|

05-08-2008, 11:43
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Zitat:
Original geschrieben von unset
Also ich würde ja hier zu einer Datenbank raten ...
|
Meinst nicht, dass es Change überfordern würde?
Wäre natürlich einfacher und so, aber bei Anfängern ist das so eine Sache.
@ Change: Infos zu Datenbank (mysql) gibt es auch auf den beiden links..
mfg
|

05-08-2008, 11:50
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Möchtest du den Anfänger dann auch direkt mal über Race Conditions aufklären, die er beim handling mit Flatfiles zu beachten hat? Mit Datenbanken geht das wesentlich flotter und einfacher. Und man muss selbst nicht so oft das Rad neu erfinden.
Außerdem ist CSV ein Transport- und kein Storeformat.
|

05-08-2008, 11:58
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Zitat:
Original geschrieben von unset
Möchtest du den Anfänger dann auch direkt mal über Race Conditions aufklären, die er beim handling mit Flatfiles zu beachten hat?
|
Bin eigentlich davon ausgegangen, dass nur er/sie damit arbeitet, aber gut - hat er nicht gesagt...
Zitat:
|
Mit Datenbanken geht das wesentlich flotter und einfacher. Und man muss selbst nicht so oft das Rad neu erfinden.
|
Stimmt schon soweit..
Zitat:
|
Außerdem ist CSV ein Transport- und kein Storeformat.
|
Ich meinte zwar auch nur das CSV-Modell und nicht die ".csv", macht aber ansich keinen Unterschied, insofern - stimmt schon..
mfg
|

05-08-2008, 12:09
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
ich würde auch eher zu mysql raten.
ein ticket-system wird eine gewisse größe annehmen und für die performance und der übersicht eignet sich eine datenbank besser.
wenn ich bedenke wielange ich gebraucht habe um das mit den dateien richtig hinzubekommen .. in der zeit hätte ich damals auch datenbanken lernen können (std dinge wie simple inserts, updates und delete)
__________________
Gruß
Uzu
|

05-08-2008, 14:04
|
|
H2O
PHP Junior
|
|
Registriert seit: Jul 2007
Beiträge: 937
|
|
Zitat:
Original geschrieben von UzumakiNaruto
ich würde auch eher zu mysql raten.
|
Das mein ich auch. Es ist sicher besser (und viel einfacher ), ein bestehendes Datenbanksystem zu benutzen, als zu versuchen - und was du willst ist ein entsprechender Versuch im Kleinen - eines nachzubauen.
__________________
Gruss
H2O
|

05-08-2008, 14:59
|
|
Change
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 31
|
|
Das Problem ist, das ich kein ganzes Tickets-sytem übernehmen möchte!
Ich brauch das ganze extra Zeugs nicht!!!!
Ich möchte nur ein script zum eingeben
und danach wieder auslesen & evt. löschen!
Eingeben:
PHP-Code:
<form action="2.php" method="post">
<table>
<tr>
<td>Option:</td>
<td> <select name="art" size="10" multiple="multiple">
<option value="Support1">Support1</option>
<option value="Support2">Support2</option>
<option value="Support3">Support3</option>
<option value="Support4">Support4</option>
<option value="Support5">Support5</option>
<option value="Support6">Support6</option>
</select>
</td>
</tr> <br />
<tr>
<td >Vorname:</td>
<td> <input type="text" name="vorname" /></td>
</tr>
<tr>
<td >Nachname:</td>
<td> <input type="text" name="nachname" /></td>
</tr>
<tr>
<td >Ort:</td>
<td> <input type="text" name="ort" /></td>
</tr>
<tr>
<td >Land:</td>
<td> <select name="land">
<option value="Deutschland">Deutschland</option>
<option value="Österreich">Österreich</option>
</select>
</td>
</tr>
<tr>
<td> <input type="submit" /></td>
</tr>
</table>
</form>
Und nun muss ich halt das ganze in eine Tabelle einfügen (wenn ich MySQL nehme!)
PHP-Code:
<?php
// config.php
error_reporting(E_ALL);
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', '********');
define('MYSQL_DATABASE', 'db1');
$art=$_POST['art'];
$vorname=$_POST['vorname'];
$name=$_POST['name'];
$ort=$_POST['ort'];
$land=$_POST['land'];
$sql = "INSERT INTO tickets
(Art, Vorname, Nachname, Ort, Land)
VALUES
('".addslashes(htmlspecialchars($_POST['art']))."',
'".addslashes(htmlspecialchars($_POST['vorname']))."',
'".addslashes(htmlspecialchars($_POST['nachname']))."',
'".addslashes(htmlspecialchars($_POST['ort']))."',
'".addslashes(htmlspecialchars($_POST['land']))."',
NOW())";
mysql_query($sql) OR die(mysql_error());
?>
geht das so?
Hoffe auf eine hilfreiche Antwort, Change
|

05-08-2008, 15:33
|
|
H2O
PHP Junior
|
|
Registriert seit: Jul 2007
Beiträge: 937
|
|
Ungefähr ist das OK. Es fehlt noch die Verbindung zur DB ( mysql_connect() und mysql_select_db() ). Das würde ich allerdings in eine andere Datei auslagern.
Des weiteren würde ich der Tabelle (ich gehe davon aus, dass du diese definiert hast) noch eine eindeutige ID als Primary Key mitgibst, am besten als AUTOINCREMENT.
addslashes(htmlspecialchars()) bringt hier nicht viel, dafür mysql_real_escape_string () ,
PHP-Code:
<?php
// include 'config.php';
error_reporting(E_ALL);
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', '********');
define('MYSQL_DATABASE', 'db1');
$conn = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or exit('Keine Verbindung zur Datenbank');
mysql_select_db(MYSQL_DATABASE) or exit('Datenbank ' . MYSQL_DATABASE . ' existiert nicht');
// Ende config.php
$art = mysql_real_escape_string($_POST['art']);
$vorname = mysql_real_escape_string($_POST['vorname']);
$name = mysql_real_escape_string($_POST['name']);
$ort = mysql_real_escape_string($_POST['ort']);
$land = mysql_real_escape_string($_POST['land']);
$sql = "
INSERT INTO tickets(
art,
vorname,
nachname,
ort,
land,
datum
)
VALUES(
'$art',
'$vorname',
'$nachname',
'$ort',
'$land',
NOW()
)";
mysql_query($sql) OR die(mysql_error());
?>
__________________
Gruss
H2O
|

05-08-2008, 15:34
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
addslashes(htmlspecialchars($_POST['art']))
kannst du sein lassen. $art würde reichen
$art=$_POST['art'];
und danach arbeitest du wieder mit $_POST['art']???
ich benutze eher die UPDATE methode, damit mein INSERT übersichtlich ist:
PHP-Code:
# abfrage ob die zeichen erlaubt sind wäre auch nicht schlecht
if (isset($_POST['art']) $art = $_POST['art'];
if (isset($_POST['vorname'] $vorname = $_POST['vorname'];
if (isset($_POST['name'] $nachname = $_POST['nachname'];
if (isset($_POST['ort'] $ort = $_POST['ort'];
if (isset($_POST['land'] $land = $_POST['land'];
$sql = "
INSERT INTO tickets SET
Art = '".$art."',
Vorname = '".$vorname."',
Nachname = '".$nachname."',
Ort = '".$ort."',
Land = '".$land."';
";
den du willst in deinem code 6 einträge machen .. die aber in 5 felder schreiben ;-) .. bei meiner "art" kann dir sowas nicht passieren.
__________________
Gruß
Uzu
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| 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.
HTML-Code ist aus.
|
|
|
|
PHP News
|