Hello there,

zum Erlernen ist PHP deutlichst einfacher als Java.

Du musst dir aber auch überlegen, was du gerne machen möchtest. Wenn du Webseiten programmieren möchtest, ist für dich PHP definitiv die bessere Wahl. Mit Java lassen sich zwar Webseiten auch programmieren, aber diese Technik ist sehr wenig verbreitet und tritt gegenüber PHP- oder ASP.NET basierten Webseiten sehr deutlich in den Hintergrund.

Java ist eine Sprache, die vor allem auf die Programmierung von Anwendungen ausgelegt ist. Dabei geht es zum einen um Programme und Spiele, aber insbesondere in der heutigen Zeit um Apps für Googles Betriebssystem Android auf dem Smartphone. Diese sind in der Regel in Java (in Ausnahmefällen auch in C) geschrieben.

Ihre Stärke ist die Plattformunabhängigkeit, da sich auf fast jedem System eine Javalaufzeitumgebung installieren lässt, die dann deinen Javacode ausführen kann. Eine weitere Stärke ist die Robustheit des Codes, Javacode ist, wenn er gut programmiert ist, wenig anfällig für Fehler und Abstürze.

Eine große Schwäche sind die vielen Sicherheitslücken im Sprachkern, durch die Java immer wieder in Kritik gerät, gerade im Bezug auf Browserplugins in Java, wie etwa das browserbasierte Minecraftwidget.

Dennoch gibt es tausend Gründe, warum PHP deutlich einfacher ist. Ich nenne einfach mal ein paar....

  • PHP ist eine implizite, dynamisch typisierte Sprache, Java ist eine explizite, statisch typisierte Sprache. Zu deutsch: In PHP musst du Variablen weder vor der Verwendung deklarieren, noch einen Datentyp wie etwa Text oder Zahl erzwingen. Dieser kannautomatisch bestimmt werden, in Java musst du jede Variable vor der Verwendung zunächst deklarieren und auch bei der Deklaration einen Datentyp zuweisen, sonst funktioniert es nicht.
  • PHP ermöglicht rein prozedurale Programmierung. Das heißt du kannst im Skriptstil Code schreiben, der dann abgearbeitet wird. In Java geht das nicht, du bewegst dich immer innerhalb von Objekten, das ist häufig etwas verwirrend. Allerdings bietet PHP trotzdem die Möglichkeit Objekte zu programmieren, das ist auch sinnvoll.

  • PHP hat bereits in der Sprachdefinition zahlreiche Möglichkeiten, wie eingebaute Funktionen und Klassen. In Java kannst du Out of the Box fast gar nichts machen. Du musst für alle Funktionalitäten, bis auf die reinen Sprachkonstrukte, die benötigten Klassen in dein Skript importieren. Sie werden dir zwar schon mitgeliefert, aber um sie zu verwenden, müssen sie alle importiert werden und du musst genau wissen, in welcher Datei die von dir benötigten Funktionalitäten drin stehen, um sie dann einzbinden.

  • PHP hat einige Sprachkonstrukte, die man als "syntaktischen Zucker" bezeichnen könnte, das heißt du kannst Dinge recht schlank darstellen, die in Java nur sehr aufwändig zu beschreiben sind. Ein einfaches Beispiel ist die Darstellung einer Klassenkonstanten:

PHP:

const foo = 1;

Java

private static final int foo = 1;

Java hat vor allem für fortgeschrittene Programmierer aber auch ein paar nützliche Funktionen zur Hand, etwa die sogenannten Checked Exceptions. Um Fehler im Programmablauf zu handlen, bedient man sich der sogenannten Ausnahmebehandlung (Exception Handling). Die Idee ist, Fehler abzufangen und sie weiterzuverarbeiten, damit das Programm nicht abstürzt. Java bietet eine Möglichkeit durch Definition der zu erwartenden Ausnahme die Ausnahme dann automatisch abzufangen, in PHP müsstest du die Ausnahmebehandlung komplett selbst schreiben.

Ein weiteres Goodie von Java ist die sehr einfach Möglichkeit, Code aus anderen Programmiersprachen einzubinden, dazu kennt Java das Konzept der "nativen Methoden".

Das sind allerdings alles Dinge, die für dich als Anfänger absolut uninteressant sind.

Mein Tipp: Fang erst mal mit PHP an, für den Anfänger ist das eine der einfachsten Sprachen und PHP kann mittlerweile in der Version 5.6 fast alle wichtigen Konzepte der Programmierung umsetzen, du lernst fast alles, was du dann für den Einstieg in Java verwenden kannst. Außerdem hast du mit PHP schon ne ziemliche Nähe zu Datenbanken, diese sind ein sehr sehr interessantes Thema, das ungeahnte Möglichkeiten im modernen Internet und auch in Firmenenetzwerken bietet.

Hoffe ich konnte dir helfen, dann würd ich mich über einen Stern freuen

MfG

Alex

...zur Antwort

Hello there,

ich erklärs dir gerne. Primärschlüssel haben mehrere Funktionen. Wie du schon erkannt hast, dienen sie insbesondere dazu, einen Datensatz eindeutig zu machen. Nun sagst du natürlich.....was ist denn, wenn ich einen Wert habe, der von Natur aus, eindeutig ist...? Ja, dann kannst du auch DEN als Primärschlüssel nehmen. Bis auf wenige Ausnahmen brauchst du in JEDER Datenbanktabelle einen Primärschlüssel. In der Regel ist das einfach eine ID, die hochzählt, das heißt jeder Eintrag hat eine Nummer von 1 bis n. Dies ist nötig um die Integrität der Daten und die Eindeutigkeit der Datensätze zu gewährleisten. Wenn du aber einen natürlichen Primärschlüssel hast, kannst du den natürlich auch verwenden. Beispielsweise eine Personalausweisnummer, ein KFZ-Zeichen oder ähnliches. Du hast auch die Möglichkeit, einen sogenannten zusammengesetzten Primärschlüssel zu verwenden, das heißt du machst aus zwei oder mehr Spalten, von denen jede einzeln nicht zwingend eindeutig ist einen Primärschlüssel, bei denen die zwei Spalten zusammen ein jeweils eindeutiges Wertepaar generieren. Meinetwegen der genaue Zeitstempel des Eintrags in Kombination mit der Person, die den Eintrag erstellt hat. Eine Person kann ja gleichzeitig nicht mehrere Einträge hinzufügen, sondern nur nacheinander.

Der nächste Sinn des Primärschlüssels, das wurde ja schon erwähnt ist die Indizierung von Einträgen. Indizes sind dazu da, dass die Datenbank schneller durchsucht werden kann. Der Primärschlüssel ist automatisch ein Index, du kannst aber zusätzlich weitere Spalten zu Indizes machen. Du bekommst dafür gerade in sehr großen Datenbanken die Suchanfragen deutlich schneller ausgeführt, weil du über Strukturen, sogenannte "B-Bäume" die Informationen besser abspeichern kannst, das wird intern durchgeführt, bezahlen tust du diese Vorgehensweise mit deutlich mehr Festplattenspeicherbedarf.

Der dritte und fast wichtigste Zweck von Primärschlüsseln ist die Verknüpfung von Tabellen. SQL-Datenbanken sind sogenannte Relationale Datenbanken, das heißt die einzelnen Tabellen sind über Beziehungen (Relationen) miteinander verbunden. Dazu kannst du in einer Tabelle einen sogenannten Fremdschlüssel deklarieren. Dieser Fremdschlüssel ist immer ein Verweis (Referenz) auf einen Primärschlüssel in einer anderen Tabelle. Und deshalb sind Primärschlüssel auch notwendig, um in anderen Tabellen korrekt auf die Zieltabelle verweisen zu können.

Einfaches Beispiel: Wenn du eine Schulklasse hast, dann hat die Klasse mehrere Schüler. Das heißt wenn du eine Tabelle Klassen hast und eine Tabelle Schüler, dann hätte jeder Schüler einen Fremdschlüssel "Klasse" und der würde auf den Primärschlüssel der Tabelle "Klasse" zeigen, so könnte jedem Schüler eindeutig seine Klasse zugewiesen werden. In der Tabelle Klasse könnten zusätzliche Informationen gespeichert werden, etwa der Name des Klassenleiters, der Fachzweig der Klasse und so weiter. All diese Informationen wären dann auch den Schülern dieser Klasse über die Beziehung Tabelle Klasse -Tabelle Schüler zuordbar.

Ein letzter Sinn, der ist aber nicht so sehr wichtig, ist die Kennzeichnung von sogenannten Ranges bei der Partitionierung von Tabellen. Wenn du sehr sehr große Datenbanken hast, möchtest du vielleicht die Tabellen strukturieren und vielleicht nicht immer die gesamte Tabelle durchsuchen, sondern immer nur einen bestimmten Teilbereich. Dazu kannst du Partitionen anlegen. Du kannst dann meinetwegen sagen:

Partition 1: Einträge von 1 bis 25000 Parition 2: Einträge von 25001 bis 50000 ....

Hoffe das beantwortet deine Frage ausführlich genug. Ich würde mich über einen Stern freuen.

MfG

Alex

...zur Antwort

Hello there,

bevor du was kaputt machst...von

TRUNCATE tabelle 

würd ich mal ganz schnell die Finger lassen, sonst ist deine Tabelle leer. Ich würde erstmal die Tabelle die du fixen willst vorsichtshalber dennoch mal sichern und dann machste einfach folgendes:

ALTER TABLE `deinetabelle`
DROP `primaerid`,
ADD COLUMN  `neue_id` INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`neue_id`);

Fertig :). MySQL nummeriert dann einfach alle bisher vorhandenen Einträge wieder von 1-n durch. Aber halt in der Reihenfolge, in der sie bisher in der Datenbank drin waren. Sie sind bei dir ja nur falsch nummeriert aber nicht falsch sortiert oder? Übrigens, auch wenn jeder gerne durchgehende Nummerierung hat, aber es ist nicht unüblich, dass manche IDs auch gar nicht vorkommen. Kann ja immer mal passieren, dass du einen rauslöschen oder überschreiben musst. Dafür hast du ja die Primärschlüssel, damit du hier flexibel bist :)

ACHTUNG!!!!!!!!

Wenn du dich noch im Entwicklungsmodus befindest, kannste sowas machen. Aber führe obigen Befehl NIEMALS auf nem Livesystem aus, sonst schrottest du alles, mit der einfachen Begründung, dass dann jeder Datensatz plötzlich ne neue ID hat und dann möglicherweise andere Referenzen nicht mehr zusammenpassen. Das wäre wie wenn du auf Facebook plötzlich ne neue User-ID hättest und dann jemand anderes wärst :).

Hoffe ich konnte dir helfen, dann würde ich mich über nen Stern freuen.

MfG

Alex

...zur Antwort

Hello there,

naja große Hürden vielleicht nicht, aber ein ganzes Stück Arbeit ist es.

Zunächst musst du dir für deinen Webshop definitiv eine Datenbank designen, in der einerseits die Produkte abgelegt werden, allerdings auch deine Kunden. Zudem braucht es dann Tabellen für die einzelnen Bestell- und Liefervorgänge, die Bezahlmöglichkeiten und und und, das muss auch alles richtig verlinkt werden, da MySQL ja eine relationale Datenbank ist.

Ob du nen Login brauchst, ist Geschmacksache, entscheidend ist, dass Kunden ihre Liefer- und Bezahldaten angeben können müssen. Wenn du davon ausgehen kannst, dass bestimmte Kunden häufiger bestellen, dann wärs natürlich genial, wenn sie sich ein Konto anlegen könnten und nicht immer ihre Daten neu eingeben müssen.

Du sagst zwar dass du nur 18 Produkte hast, aber ob du dein Projekt für 18 oder 180.000 Sachen konzipierst, ist softwaretechnisch ziemlich bums, das Projekt ist im Wesentlichen erstmal das Gleiche^^ nur dass bei 18 Produkten schlechte Programmierung nicht so ins Gewicht fällt^^. Und du für 18 Produkte vermutlich keine mehrere Zehntausend Euro teure Serverlandschaft benötigst :).

Eine Einbindung von einem externen Shopsystem ist aber keine verkehrte Idee, die meisten sind über Templates durchaus anpassbar, manche unterstützen ja sogar vollständige Anpassung über CSS und sind häufig auch kostenlos. Wozu das Rat neu erfinden?

Weil ich verspreche dir, auch wenn ein einfaches Shopsystem mit deinen Ansprüchen für einen versierten Webentwickler Peanuts sind, wirst du als Anfänger eine ganze Ecke mit beschäftigt sein, das alles so hinzutüfteln. Insbesondere wenns darum geht deine Datenbank so zu designen dass sie sinnvoll arbeitet und alle wichtigen Daten erfasst werden können. In der Zeit hast du ein Fertigprodukt zwanzigmal installiert, eingerichtet und vom Style her an deine Seite angepasst.

Hoffe ich konnte dir helfen.

MfG

Alex

...zur Antwort

Hello there,

bevor ich dir auch auf PHP.net den Link zeige. Wenn du einen Query mit mysql_query ausführst, bekommst du hinterher eine Ergebnismenge zurück, ein sogenanntes MySQL-Result.

Zur Weiterverarbeitung kennt die MySQL-Schnittstelle mehrere Möglichkeiten, wie dieses Result am Ende dann ausgespuckt wird.

Dazu stehen vier verschiedene Funktionen zur Verfügung, die insgesamt drei verschiedene Ausgaben generieren:

mysql_fetch_row 

spuckt die Ergebnisse als numerisches Array aus.

mysql_fetch_assoc 

spuckt die Ergebnisse als assoziiertes Array aus.

mysql_fetch_array 

kann eins von beiden oder beides, je nachdem was als zweiter Parameter übergeben wird. Möglich sind hier MYSQLASSOC, MYSQLNUM und MYSQL_BOTH.

Zuletzt gibt es noch

mysql_fetch_object

das die Ergebnisse als Objekt ausspuckt.

Letzlich entsteht der Unterschied nur, wie du dann auf ein einzelnes Feld deines geholten Datensatzes zurück greifst.

Bei einem numerischen Array so:

$datensatz[1]  // statt 1 kann natürlich eine beliebige Indexposition zwischen 0 und n stehen.

Bei einem assoziierten Array so:

$datensatz['namedesattributs']

Bei einem Objekt so:

$datensatz->namedesattributs

Hoffe ich konnte dir helfen.

MfG

Alex

...zur Antwort

Hello there,

naja eigentlich nicht.

Milchzucker ist eigentlich Lactose in Pulverform. Milchpulver ist praktisch Milch, der das Wasser entzogen wurde, so dass es als Nahrung dienen kann. Aber das gleiche ists nicht ;)

Hoffe das hilft dir weiter.

MfG

Alex

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.