philosapiens
Avatar philosapiens
Themenersteller
webdesigner
Fortgeschrittener (52 Beiträge)

Webshop ohne Datenbank selber schreiben

am 26.04.2011, 11:43 Uhr eröffnete philosapiens folgenden Thread
Projekt-Ideen & gemeinsame Entwicklungen    6490 mal gelesen    8 Antwort(en).

Hallo,

ich versuche mich gerade an einem kleinen Shop. Es sollen ca. 100 Artikel angeboten werden können. Ich möchte keine Datenbank nutzen und möglichst unabhängig von der jeweiligen Browsereinstellung sein. Daher habe ich mich gegen SESSIONs und mehr für ausgelagerte Textdateien mit fopen als temporäre Speicherung entschieden.

Und schwupp, noch bevor ich gross mit php begonnen habe, stehen da schon die ersten Schwierigkeiten in der Ãœbergabe der ausgewählten Variablen an.

Ich möchte von einer Auswahlseite und dort aus einem oder mehreren Formularen die jeweilge Auswahl in den Warenkorb mitnehmen. Das mache ich aktuell so:

boutique.php

<?php
...
$dateiname = date('Ymd_His').'_'.str_replace(".", "_", htmlentities ($_SERVER['REMOTE_ADDR'])).'.txt';

if(isset($_POST['Warenkorb_Artikel_0001'])) {
if ($_POST["Menge_Artikel_0001"] != ""){
$artikelmenge0001 = $_POST["Menge_Artikel_0001"];
}
else $artikelmenge0001 = "0001a";
}
else $artikelmenge0001 = "0001b";


if(isset($_POST['Warenkorb_Artikel_0002'])) {
if ($_POST["Menge_Artikel_0002"] != ""){
$artikelmenge0002 = $_POST["Menge_Artikel_0002"];
}
else $artikelmenge0002 = "0002a";
}
else $artikelmenge0002 = "0002b";
...
$uebergabe_daten='Menge Artikel 0001: '.$artikelmenge0001.' Stück
Menge Artikel 0002: '.$artikelmenge0002.' Stück';
?>
...


Foto von Artikel 0001.
<img src="pic/boutique/artikel0001.jpg" width="267" height="400" title="<?php echo $Bezeichnung_Artikel_0001 ?> mit der Artikelnummer 0001." alt="Foto von Artikelnummer 0001: <?php echo $Bezeichnung_Artikel_0001 ?>." />

<?php echo $Bezeichnung_Artikel_0001 ?>


nur <?php echo $Preis_Artikel_0001 ?>

inkl. 19% MwSt., zzgl. Versand


<form action="boutique.html" method="post" enctype="multipart/form-data" accept-charset="utf-8">
<fieldset>
<legend>Artikelauswahl:</legend>



Menge: <input class="artikelmenge" name="Menge_Artikel_0001" id="Menge_Artikel_0001" size="1" value="<?php <br />if(isset($_POST['Warenkorb_Artikel_0001'])) {
if ($_POST["Menge_Artikel_0001"] != ""){
$artikelvalue0001 = $_POST["Menge_Artikel_0001"];
}
else $artikelvalue0001 = "0";
}
else $artikelvalue0001 = "0";
echo $artikelvalue0001;
?>" />
<input class="warenkorb" type="submit" name="Warenkorb_Artikel_0001" title="Diesen Artikel in den Warenkorb legen." value="in den Warenkorb" />


</fieldset>
</form>

<?php echo $Beschreibung_Artikel_0001 ?>





Foto von Artikel 0002.
<img src="pic/boutique/artikel0002.jpg" width="267" height="400" title="<?php echo $Bezeichnung_Artikel_0002 ?> mit der Artikelnummer 0002." alt="Foto von Artikelnummer 0002: <?php echo $Bezeichnung_Artikel_0002 ?>." />

<?php echo $Bezeichnung_Artikel_0002 ?>


nur <?php echo $Preis_Artikel_0002 ?>

inkl. 19% MwSt., zzgl. Versand


<form action="boutique.html" method="post" enctype="multipart/form-data" accept-charset="utf-8">
<fieldset>
<legend>Artikelauswahl:</legend>



Menge: <input class="artikelmenge" name="Menge_Artikel_0002" id="Menge_Artikel_0002" size="1" value="<?php <br />if(isset($_POST['Warenkorb_Artikel_0002'])) {
if ($_POST["Menge_Artikel_0002"] != ""){
$artikelvalue0002 = $_POST["Menge_Artikel_0002"];
}
else $artikelvalue0002 = "0";
}
else $artikelvalue0002 = "0";
echo $artikelvalue0002;
?>" />
<input class="warenkorb" type="submit" name="Warenkorb_Artikel_0002" title="Diesen Artikel in den Warenkorb legen." value="in den Warenkorb" />


</fieldset>
</form>

<?php echo $Beschreibung_Artikel_0002 ?>



...
<?php

$handle = fopen("./data/temp/".$dateiname,"w+");
fwrite($handle,$uebergabe_daten);
fclose($handle);
?>


und hier die warenkorb.php

...


    <?php
    $dir = "./data/temp/";
    $dh = opendir($dir);
    while (false !== ($filename = readdir($dh))) {$files[] = $filename;}
    rsort($files);
    $lines = file('./data/temp/'.$files[0].'');
    foreach ($lines as $line_num => $line) {echo "
  • " . htmlspecialchars($line) . "
  • \n";}
    ?>


...


Leider bekomme ich damit immer nur:


# Menge Artikel 0001: 0001b Stück
# Menge Artikel 0002: 0002b Stück




Wie kann ich denn aus einer Seite, aus einem oder mehreren Formularen mir unterschiedliche Inhalte der Variablen in die temporäre Textdatei speichern?
Wo ist da mein bisheriger Denkfehler?


Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.

Hier mein Versuch der Webseitenerstellung: http://idealseiten.de

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 26.04.2011, 12:48 Uhr schrieb romacron

zu nächst mal herzlichen Glückwunsch und viel Spass am Lernen.

Thema Datenbank:
Datenbanken sind an sich nichts anderes als Textdateien, plus ein wenig Luxus dabei.

Als alternative "Datenbanken" bietet sich

csv(das kannst du auch aus openoffice oder ähnlichem exportieren und deine ArticleDaten aktuell halten)an. Später, wenn dann doch eine Datenbank kommen sollte, kannst die csv auch direct in die Datenbank "dumpen".

xml . Das lässt sich gut strukturieren bzw, hat schon eine Grundstruktur. Php bietet hierfür auch eine Menge Zugriffsfunktionen.

Welches Format du letztendlich nimmst wird Geschmackssache sein.
Um das Daten-banken egal ob mysql xml csv wirst du nicht herumkommen.

Zum Thema Session:
Wenn ein Kunde einen Artikel ausgewählt hat, dann auf eine neue Seite klickt, ist ohne eindeutige Identifizerung der User der Warenkorb im Einmer.

Wie du die Session übergibst(als cookie oder url whatever) ist dann noch einmal eine andere Sache.

Wenn du dich mit Sessions nicht anfreunden kannst und die user bei IP oder anderen Methoden tracken magst, dann wirds schwierig.

auf die gefahr hin das ich unhöflich werde, wie sieht es aus, hast du dich mit "function" schon beschäfigt.
Das wäre ne tolle Sache, dann wird alles ein wenig leichter...

Viele Grüsse



gelöschter Benutzer
am 26.04.2011, 13:15 Uhr schrieb

philosapiens schrieb:
...
ich versuche mich gerade an einem kleinen Shop. Es sollen ca. 100 Artikel angeboten werden können. Ich möchte keine Datenbank nutzen und möglichst unabhängig von der jeweiligen Browsereinstellung sein. Daher habe ich mich gegen SESSIONs und mehr für ausgelagerte Textdateien mit fopen als temporäre Speicherung entschieden.
...



Hallo philosapiens,

du scheinst dich erst seit kurzem mit Programmieren zu beschäftigen. (nach den Codebeispielen) So ein Shop ist zur Ãœbung viel zu komplex. Da auch eine gewisse Sicherheit eine große Rolle spielt. Ich stell mir da gerade vor wie du eventuell auch auf die Idee kommst vertrauliche Informationen in Textdateien zu speichern. (zB.: Kreditkarteninformationen, Passwörter, eMail Adressen, ...) So etwas hätte schlimme Folgen für die Betroffenen.


Wenn es nur ums lernen/üben geht schreib doch lieber ein Gästebuch oder so. Wenn du wirklich einen Shop betreiben willst solltest du erst noch etwas Erfahrung sammeln und solang auf professionelle Software zurückgreifen.


Viele Grüße
Thomas


philosapiens
Avatar philosapiens
webdesigner
Fortgeschrittener (52 Beiträge)
am 26.04.2011, 15:51 Uhr schrieb philosapiens

Hallo,

danke für Euer Interesse. Der Tipp mit den functions ist prima. Ich wollte schon immer mal ein Projekt OOP aufziehen. Mal sehen, wie weit ich damit komme.

Meinen Gedankenknoten konnte ich auch gerade lösen. Ich kann ja alle Formulareingaben in der boutique selbst sammeln und dann übergeben. Und das geht dann auch hidden mit der SID.

Bis hierhin erst einmal vielen Dank!

@Ultima
Sicherlich ist es risikobehaftet, doch werde ich sicherlich vor der Scharfschaltung ausgiebig testen!!


Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.

Hier mein Versuch der Webseitenerstellung: http://idealseiten.de

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 26.04.2011, 16:16 Uhr schrieb romacron

...dann gutes Gelingen.

Zum Thema Test vor scharfschalten.
Ich sehe das wie Thomas...wir hatten hier schon mehrfach schuppen von|vor den Augen...
Ich denke es sollte jemand testen der nicht "bestechlich" oder gütig ist.

Wir müssen auch so testen!


philosapiens
Avatar philosapiens
webdesigner
Fortgeschrittener (52 Beiträge)
am 26.04.2011, 19:07 Uhr schrieb philosapiens

Hallo,

sollte ich das Projekt testfähig geschrieben bekommen, werde ich es gerne inkl. des Codes hier zur Schlachtbank führen.

Mal sehen, ob ich es überhaupt gebacken bekomme.


Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.

Hier mein Versuch der Webseitenerstellung: http://idealseiten.de

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 26.04.2011, 19:37 Uhr schrieb romacron

..ich schau es mir gern an.
Vielleicht nicht ganz so public auf die Schlachtbank, der ein oder andere Spassvogel ist sicher dabei


UFOMelkor
Avatar UFOMelkor
Student
Content Meister (350 Beiträge)
am 27.04.2011, 22:16 Uhr schrieb UFOMelkor

Vielleicht für den ein oder anderen interessant: Filesystem vs MySQL Datenbank


Naturkosmetik in Bochum

Steppenhahn Ultramarathon-Community

philosapiens
Avatar philosapiens
webdesigner
Fortgeschrittener (52 Beiträge)
am 08.05.2011, 23:42 Uhr schrieb philosapiens

Hallo,

so, ich wäre dann soweit erst einmal fertig für die Schlachtbank.

Das System ist ohne DB und ohne Text-Dateien. Laut Kundenwunsch reichen E-Mails. Wer gerne einmal auf Herz und Nieren testen mag, derschreibe mir bitte einfach. Ich sende auch gerne alle Dateien zum besseren "Einbrechen" dazu.


Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.

Hier mein Versuch der Webseitenerstellung: http://idealseiten.de

  • 1


« zurück zu: Projekt-Ideen & gemeinsame Entwicklungen

Das Seitenreport Forum hat aktuell 5274 Themen und 36108 Beiträge.
Insgesamt sind 48343 Mitglieder registriert.