MySQL und PHP Onlineshop Probleme

Sudnif

Komplett-PC-Aufrüster(in)
Hallo,

wir machen in Informatik zurzeit ein Projekt bei dem wir einen Onlineshop "programmieren" sollen (sind 9. klasse) -> also nicht zu hohes programmierniveau, wir müssen das ja auch noch vorstellen :D

dabei haben wir nun einige schwierigkeiten, die ich im folgenden mal erläutern wollte ;D

wir können html, PHP und mysql

also
1.: das login system.
wir haben schon viel googegelt, umgeändert,abgeändert etc. aber im enteffekt ging ehrlich gesagt nichts. ich glaube wir brauchen dafür "sessions(?)" wenn wir auch einen warenkorb machen wollen(müssen wir auch.). also eigentlich ja ganz simpel: einfach fertigen code ausm internet holen, umändern und sollte gehen;geht aber nicht..
wir wissen auch nicht wie wir teilweise den code abändern müssen denn zB liegt auf dem server xyz mit dem benutzer x die mysql tabellen in der datenbank x... wir wären also sehr dankbar wenn einer von euch, uns mal einen funktionierenden login code, der einen username und ein passwort aus einer mysql tabelle Kunde abfragt(und die in der mysql datenbank x liegt), erstellen würde.

2. warenkorb/verkauf
hier geht ehrlich gesagt noch nichts. wir können zwar artikel aus der datenbank auslesen und auch anzeigen lassen, aber wie das mit dem warenkorb funktionieren soll; kp unser lehrer hat uns auch nichts erklärt. haben natürlich auch schon viel gegoogelt aber da das mit dem login einfach nicht funktionieren will können wir hier ja eigentlich noch gar nicht weiterarbeiten.

3.
wir haben eine Tabelle "Artikel" in der es eine spalte "kategorien" gibt. wie können wir jetzt nur zB den Arbeitsspeicher anzeigen lassen? (natürlich mit preis, name etc steht ja alles auch in der tabelle ich glaube ihr wisst was ich sagen will :D )

wären sehr sehr froh wenn sich jemand die müde machen würde uns ein bisschen code zu schicken.

MFG
 
Also erstmal - heftige Aufgabe für die 9. Klasse - aber man wächst ja an seinen Aufgaben

Ich bin mir nicht so sicher, wie viel wert auf Datensicherheit gelegt wird - wenn es aber einfach nur klappen soll, dass man sich da einloggt was in den Warenkorb legt und dann die Bestellung abschickt, hier schon mal ein paar Tipps:

Zu 1)
Einen fertigen Code präsentieren, wäre zu einfach, wenn du genaue Fragen hast immer her damit

Am besten wäre natürlich ein Anmeldeformular, sodass der User einen Account hat, in dem Adresse Name etc, also persönliche Daten schon in der DB gespeichert sind. Dann muss man keine persönlichen Daten übertragen.
Dabei würde ich dann Passwörter in eine Tabelle und usernamen in eine andere Tabelle schreiben (JOIN) - normalerweise verschlüsselt man PWs auch, aber ich denke, das führt zu weit.

Ein Anmeldeformular sollte mit deinen Kenntnissen ja eigentlich kein Problem darstellen?
zeig mal, was du schon an code hast

Ansonsten gibts auch immer noch die "Bibel": PHP: Sessionbasiertes Loginsystem


2)
Eine Einleitung zu Sessions:
Sessions (PHP-Tutorial)
Wenn du das nicht verstehst, schau vielleicht mal hier:
PHP für dich - PHP und mySQL einfach und kurz erklärt
Vielleicht kannst du auch mit cookies arbeiten:
PHP für dich - PHP und mySQL einfach und kurz erklärt

3)
Schau dir mal den Select-Befehl von Mysql an an:
php-dummies.de - Tutorials - mySQL - SELECT - WHERE
 
vielen dank schon mal für die schnelle antwort puepue
werde mir das nochmal alles durchlesen und morgen ausprobieren (es muss morgen klappen weil wir übermorgen abgeben müssen und wie gesagt bis jetzt nichts wirklich geht :/ )
edit: ich glaube datensicherheit interessiert mich erstmal nicht die bohen hauptsache es geht ;)
ach ja ein registrierungsformular für die mysql datenbank gibt es schon und es funktioniert auch( also man kann sich registrieren)..jetzt muss dann nur noch das mit den sessions klappen, was bis jetzt aus welchen gründen auch immer nicht geklappt hat ;)
 
Danke Puepue für deine Antwort :).
Ich gehöre mit zum "Team"(wenn mans Team nennen kann...=)).

Datensicherheit kam bei uns noch nicht vor,also kein Thema,vielleicht kommt das im nächsten Schuljahr.
Ein Anmeldeformular haben wir,das Funktioniert auch wunderbar. Nur der Login will nicht Funktionieren. Fehlermeldungen und Fragezeichen in unseren Augen sind an unserer Tagesordnung.

Danke für dein Angebot an Mithilfe,wir werden gleich mal was hier reinknallen :D

MFG,Mario
 
so nochmal ne weitere "frage":
ich verstehe das noch nicht genau mit den sessions (auch wenn gut auf selfhtml etc erklärt ist.)
denn wir wollen den bereich nach dem login ja nicht "schützen", sondern es soll dafür gut sein dass der kunde halt auch sachen kaufen kann ;). (scheint sinnig in nem onlineshop..)
..kann man zB es irgentwie "konfigurieren" das auf jeder seite von uns dann immer irgtnwo steht "sie sind zurzeit als ->username<- eingeloggt-> und darunter dann ein "logout" button?
wäre nett wenn du die anfänger-fragen beantworten könntest (oder gern auch einer anderer :) )
 
Zuletzt bearbeitet:
so nochmal kurz nachgedacht das mit den kategorien müsste eigentlich relativ einfach gehen oder?
(kanns halt leider grade nicht hier ausprobiern..)
<?
$abfrage = "SELECT * FROM Artikel WHERE Kategorie = Arbeitsspeicher";
?>

oder
<?
$abfrage = "SELECT * FROM Artikel WHERE Kategorie LIKE Arbeitsspeicher";
?>

auf jeden fall so in der art ;)

muss dann morgen halt "nur" noch 1) und 2) klappen ;D
 
Hm ok ihr habt euch ja was vorgenommen - bereitet euch mal auf wenig Schlaf vor :P

Also SQL ist nicht mein Traum, ausprobieren kann ich es gerade auch nicht, hab im moment kein Zend installiert (das solltet ihr aber vielleicht mal tun, dann kann man auch SQL und PHP ausprobieren :)) Zend Server Community Edition - Zend.com
oder wenn ihr gleichzeitig arbeiten wollt, nen Webspace Free Webspace mit PHP und MYSQL kostenlos | CwCity.de
da gibts dann auch rechts nen Menüpunkt Datenbanken oder so ^^

$abfrage = "SELECT * FROM `Artikel` WHERE `Kategorie` LIKE `Arbeitsspeicher`";
oder
$abfrage = "SELECT * FROM `Artikel` WHERE `Kategorie` LIKE `%Arbeitsspeicher%`"; Das sind dann alle wo Arbeitsspeicher mit im Namen steht, also auch "Arbeitsspeicher ab 1 GB"



Wegen der Sessions (vielleicht auch lieber cookies das müsstest ihr dann untereinander abwiegen, ist etwas leichter)
[PHP/MySQL] Login-System mit Sessions - PHP - Tutorials @ tutorials.de: Forum & Hilfe

Ne bessere Erklärung und Beispielcode kann ich auch nicht bieten :)
 
vielen dank nochmal für deine mühe ;)
eigentlich wollten wir das nicht unbedingt mit cookies machen aber wenn du meinst das dies einfacher ist .. :D

mfg -> wir melden uns wenns probleme/fragen gibt
 
so ich bins nochmal wird langsam immer später :/

sry diese frage war dummheit pur, deshalb habe ich sie wieder gelöscht :D

...so 1:50 jetzt aber mal endlich ins bett..
 
Zuletzt bearbeitet:
Ich möchte nen kleinen Teil zum Verständnis von Sessions beitragen, z.B. warum ihr sie bei einem Onlineshop benötigt (steht eventuell auch in den genannten Quellen, aber ich fasse es mal in meine Worte):

Ein "Problem" bei php-Seiten ist, wie ihr Daten von einer Seite zur nächsten übermittelt. Beim Login geht das ja noch über Formulare, die dann per GET oder POST der nächsten PHP-Seite übermittelt werden. Wenn ihr aber zur nächsten Seite wollt, z.B. den Shop durchstöbern, sind die Logindaten wieder weg. Alle $variablen der Vorseite sind verflüchtigt.
Lösung: u.A. Sessions, damit habt ihr ein Array $_SESSION, in das ihr z.B. speichern könnt, ob jemand eingelogt ist oder welche Nutzer-ID er hat. Alles was darin gespeichert ist, bleibt für gewisse Zeit auf dem Webserver gespeichert und steht auf allen nächsten Seiten zur Verfügung.

Beispiel: das Login-Formular sendet einen Benutzernamen+Passwort an eine PHP-Seite, die überprüft das und falls sie einen passenden Eintrag in der Datenbank findet, wird $_SESSION['eingelogt'] = true gesetzt oder $_SESSION['benutzername'] = $_GET['name'].
Klickt sich der Nutzer durch den Shop, bleiben die Variablen erhalten, will er z.B. seinem Warenkorb ein Artikel hinzufügen, kann man ganz fix den gewünschten Artikel in die passende Datenbanktabelle einfügen, mit dem richtigen Benutzer. Oder per
if ($_SESSION['eingelogt'] == true)
echo "Sie sind als " + $_SESSION['benutzername'] + " eingelogt.";
den Benutzernamen ausgeben.

Wichtige Voraussetzung: die Funktion session_start() muss möglichst ganz am Anfang der PHP-Datei ausgefügt werden, sonst steht $_SESSION nicht zur Verfügung. Hier Erklärung und ganz einfaches Beispiel.

Worauf entwickelt ihr? Habt ihr von der Schule Webspace zur Verfügung bekommen, auf den ihr von zuhause zugreifen könnt?
Falls ihr morgen noch konkrete Fragen habt könnt ihr mir auch gerne ne PM schicken.

Ich muss zugeben ich hab Cookies noch nie von Hand erzeugt, weil ich das mit den Sessions recht einfach finde. Und wenn der Webserver richtig konfiguriert ist, funktionieren Sessions auch wenn Cookies Client-seitig deaktiviert sind, um diese Tricks kümmert sich dann PHP von fast alleine.
 
so danke für die antwort...so sitzen jetzt grade in der schule und probieren jetzt weiter zu kommen
problem nummer eins: irgentwie funktioniert das nicht das wir nur die artikel auslesen und dann anzeigen lassen können dir einer bestimmten kategorie entsprechen:
$sql = "SELECT Kategorie, ArtikelNr, ArtikelName, Preis, Beschreibung, Bild FROM Artikel WHERE Kategorie LIKE Grafikkarte"; -> will einfach nicht funktionieren obwohl $sql = "SELECT Kategorie, ArtikelNr, ArtikelName, Preis, Beschreibung, Bild FROM Artikel"; funktioniert einer ne idee?

ach ja kann uns vielleicht nochmal einer den code schicken womit wir die session erstmal starten? (also loginformular kriegenm wir noch selber hin ;) ) haben halt jetzt nen ziemlich knappen zeitplan..
 
<?php
session_start()
....
ganz an den Anfang

und Werte als Zeichenketten, also in deinem Beispiel Grafikkarte müssen in einfache Anführungszeichen
... LIKE 'Grafikkarte'";
Statt LIKE genügt in dem Fall übrigens ein =
Zahlen weiterhin ohne die Anführungszeichen
 
danke sehr das mit den anführungszeichen geht schon mal *erleichtert*...so ein billiger fehler :D
so jetzt muss "nur" noch das mit dem login, dem warenkorb und dem kaufen funktionieren
PS: wir wissen schon das mit dem session_start() aber wir haben halt eine login.hmtl seite auf der man seine daten zum anmelden in ein formular eingibt und dann fehlt uns sozusagen die login.php datei...wenn ihr versteht was ich meine...wenn man dann ja ersdt einmal angemeldet ist muss man ja nur noch auf jeder seite dann immer session_start() schreiben
 
Das Formular wird ja vermutlich per GET oder POST an eine PHP-Datei gesendet: ($_POST ggf. mit $_GET ersetzen, je nachdem was im Formular bei method= steht)
login.php:

<?php
session_start();

$db = mysql... //mysql-Verbindung + connect...

$name = $_POST['benutzername']; //Daten aus dem Formular
$pass = $_POST['benutzerpasswort'];

$query = "SELECT * FROM `logindaten` WHERE `name`= '$name' AND `passwort` = '$pass'";
$result = mysql_query($query, $db);
//mysql soll in der datenbank nach einem Eintrag suchen mit dem eingegebenen Namen+Passwort. Findet er genau ein Ergebnis, passt alles, bei falschem Namen oder Passwort findet er keinen Eintrag, doppelte dürfen nicht vorkommen.
if (mysql_num_rows($result) == 1) {
$_SESSION['eingeloggt'] = true;
echo "Sie wurden erfolgreich eingeloggt. <a href=\"shop.php\">Weiter zum Shop</a>";
$_SESSION['name'] = $name
... //weitere interessante Daten speichern
}
else {
//Login nicht erfolgreich...
...
}

...
mysql_close($db);
?>



Auf den nächsten Seiten
session_start();
nicht vergessen, dann kann per $_SESSION['eingeloggt'] abgefragt werden, ob der Benutzer eingeloggt ist.
Den Warenkorb kann man komplett in der Session speichern (z.B. Array mit Item-Nummern), oder in der Datenbank speichern und über Benutzer-ID abfragen.

Edit: hoffe der Beispielcode ist verständlich und hilft euch, ist aber gerade 100% freihand entstanden, keine Korrektheitsgarantie ;)
 
eine frage nochmal:
ich will die seiten ja nicht "schützen", die sessions sollen einfach dafür dienen das der kunde halt auch später mal sachen kaufen kann bzw in den warenkorb legen kann,obwohl wir das mit dem warenkorb glaube ich aus zeitgründen vielleicht sogar weglassen. irgentwelche tips/anregungen? :D

mfg ich weiß das wir nerven ;)
 
so eine frage noch :D :
da oben beim connecten hab ich jetzt
$db = mysql_connect("geheim", "benutzername")

wie connecte ich jetzt die datenbank x an die darin liegt (und worin dann die tabelle "Kunden" ist?

danke für eure geduldigkeit (bzw für deine :D )
 
danke nochmal ;)
aber ich glaube du hast das ein bisschen falsch verstanden ;)
also: wir müssen auf die datenbank xy connecten also nicht auf kunden (zu der kommt er ja nachher dann: $query = "SELECT * FROM `Kunde` WHERE `username`= '$name' AND `passwort` = '$pass'"; )

also nach unseren vorstellungen müsste da jetzt stehen
$db = mysql_connect('server', 'xx');
mysql_select_db('datenbank1', $db);

so was bitte soll jetzt das $db bei dem mysql_select_db bringen? ;)

mfggl

ps: sry für unsere "blödheit"
 
Zurück