Ohne da nun genau auf den Code einzugehen ein zwei grundlegende Überlegungen als Anregung.
CSV-Dateien beinhalten deine Artikel Zeilenweise, du musst also entweder die Zeile oder den Artikel identifizieren können.
Füe die Artikel bieten sich Arrays z.B. in dieser Art an:
PHP-Code:
$artikel[4711]['Name'] = 'IrgendEinArtikel';
$artikel[4711]['Preis'] = 17.5;
$artikel[4711]['Menge'] = 3;
Das erleichert Rechnungen, indem man z.B. den Gesamtpreis leicht neu rechnen kann und nicht separat in einer Variablen speichern muss
PHP-Code:
$gesamtpreis = $artikel[4711]['Preis'] * $artikel[4711]['Menge'];
Wenn du Zeilen aus CSV-Dasteien löschen möchtest wäre ein Ansatz, die Datei auch zeilenweise zu lesen und die Zeilen in Variablen abzulegen. Dafür gibt es den
file() Befehl.
Das sähe dann ca so aus (ich gehe mal von einem CSV-Aufbau mit Artikelnummer, Bezeichnung, Preis, Menge aus):
PHP-Code:
// Jede Zeile der Datei im Array $csvzeile ablegen
$csvzeile = file("products.csv");
/*
* nun steht die CSV-Datei Zeilenweise im Array csvzeile
* Achtung, PHP beginnt bei NULL zu zählen, Zeile eins liegt also in $csvzeile[0]
*/
for ($i = 0; $i < count($csvzeile); $i++)
{
$artikeldata = explode(';',$csvzeile[$i]);
// Nun die Daten zuweisen
$artikel[$artikeldata[0]]['csvzeile'] = $i; // Zeilennummer speichern
$artikel[$artikeldata[0]]['Name'] = $artikeldata[1]; // Artikelname
$artikel[$artikeldata[0]]['Preis'] = $artikeldata[2]; // Artikelpreis
$artikel[$artikeldata[0]]['Menge'] = $artikeldata[3]; // Artikelmenge
}
// ab hier kannst du nun deine Daten verarbeiten
Zum Löschen der Zeile 5 würde es reichen $csvzeile[4] einfach auf leer zu setzen und die Datei neu zu schreiben.
********
Dein Code muss Unmengen an Fehlern werfen, weil du nicht korrekt Escape`st (schreibt man das so? ;-) )
Falsch:
PHP-Code:
echo "<div class="Product">\r\n";
echo "<div class="ProductContent">\r\n";
echo "<div class="ProductImg">".$img."</div>\r\n";
echo "<div class="ProductName">".$data[1]."</div>\r\n";
echo "<div class="ProductPrice">".$price."</div>\r\n";
echo "<form method="POST">";
Richtig (und lass das \r weg, das ist ein Zeilenvorschub, den brauchst du nicht):
PHP-Code:
echo "<div class=\"Product\">\r\n";
echo "<div class=\"ProductContent\">\n";
echo "<div class=\"ProductImg\">".$img."</div>\n";
echo "<div class=\"ProductName\">".$data[1]."</div>\n";
echo "<div class=\"ProductPrice\">".$price."</div>\n";
echo "<form method=\"POST\">\n";
Setz dich mit single und double Quotes auseinander, die schönere Schreibweise wäre:
PHP-Code:
echo '<div class="Product">'."\n";
echo '<div class="ProductContent">'."\n";
echo '<div class="ProductImg">'.$img.'</div>'."\n";
echo '<div class="ProductName">'.$data[1].'</div>'."\n";
echo '<div class="ProductPrice">'.$price.'</div>'."\n";
echo '<form method="POST">';
Was zwischen doubleQuotes steht wird PHP versuchen zu interpretieren, das tut es bei single Quotes nicht.
In einem Editor mit Syntaxhighlight würdest du also nun die "\n" andersfarbig sehen und erkennen, dass sie interpretiert werden.