# mysql Datenbank mit phpmyadmin



## vinc5nt (11. November 2001)

Hi !
so ich hab folgendes Prob  ich will ne Datenbank einrichten, ich weiß dass ich dazu eine datenbank brauch und ein tool mit dem ich sie erstellen und verwalten kann, beides hab ich f2s.com und phpmyadmin. Ihc hab jedoch kein plan wie genau ich jetzt mit phpmyadmin vorgehen muss und wie Datenbank strukturen allgemein aussehen. 
Kann mir da bitte jmd mal grob sagen wie so etwas aussehen sollte (oder link zu einem anschaulichen tut nicht die massen text teile)

was bedeuten eigentlich die ganezen sachen hinter dem namen der spalte ,was gibt man in atribute unique und all so einem krahm ein ? 

und wie kann ich in der tabelle sachen reinschreiben und IDs automatisch zu ordnen ?

Wäre wirklich sehhhhhhhhhrrrrrr dankbar wenn mir jmd helfen könnte

THX !


----------



## Dunsti (11. November 2001)

Hi,

schau doch mal in den Programming-Tutorials:

DB-Crashkurs von Quentin 
MySQL-Zugriff mit PHP von mir 

oder schau mal hier:

MySQL Datenbankhandbuch 

Gruß
Dunsti


----------



## vinc5nt (12. November 2001)

Vielen dank ,
werde ich mir nachher gleich mal durchlesen -> das tut von QUentin hab ich schon mal angegeuckt ist aber mit access und das peil ich nicht 

wenn ich was nicht versteh meld ich mich nochmal okei  ?

Vielen dank


----------



## vinc5nt (13. November 2001)

arg irgendwie konnt ich mit dem Datenbankhandbuch nicht so viel anfangen  
ich hab zu erst einmal eine mysql allgemeine Frage *g* wie installiert/initialisiert ihr/du die Datenbank mit einem php script, mit phpmyadmin, mit access (was ist ODBC?) oder mit was auch immer ? 

@Dunsti kannst du mir bitte *bettle*  mal eine Tabelle mit kommentaren hier reinschreiben, soe eine quasi in mysql geschriebene kommentierte Table ? 

nur ne kleine irgendwie | Name | ID | Detail | egal | und wie fügt man dann eigentlich inhalte in das Tabellen skelet ein ? 

Vielen dank fürs lesen und nochmehr für Dunsti


----------



## Robert Fischer (13. November 2001)

> wie fügt man dann eigentlich inhalte in das Tabellen skelet ein ?



das müsstest du schon wissen, wenn du von phpmyadmin redest. einfach die entsprechende tabelle und dann auf einfügen klicken und die felder ausfüllen. fertsch!


----------



## Dunsti (13. November 2001)

> wie installiert/initialisiert ihr/du die Datenbank mit einem php script, mit phpmyadmin, mit access (was ist ODBC?) oder mit was auch immer ?



Eine MySQL-Datenbank kannst Du nicht mit PHP oder PHPMyAdmin installieren.
Dazu brauchst Du das MySQL-Programm (wenn Du MySQL lokal auf Deinem Rechner einsetzen willst) oder Dein Hoster muss eine MySQL-Datenbank auf Deinem Webspace zur Verfügung stellen.
Mit PHP kannst Du dann in dieser Datenbank "arbeiten" ... also Tabellen erstellen, Inhalte einfügen, Inhalte auslesen, usw. usw.

Hier unterscheiden wir mal grob 2 Fälle: Arbeitsschritte, die nur einmal ausgeführt werden (z.B. Tabelle erstellen) und Schritte, die immer wieder ausgeführt werden (z.B. Daten auslesen, Daten anfügen, usw.)
Die Arbeitsschritte, die nur einmal ausgeführt werden machst Du am besten mit PHPMyAdmin, da Du hier quasi interaktiv diese Arbeiten erledigen kannst.
Alles andere muss dann in einem PHP-Script programmiert werden.

soweit klar ? 

Gruß
Dunsti


----------



## vinc5nt (13. November 2001)

Ich hab meinen webspace und meine mysql tabelle bei f2s.com  ich hab myadmin auf den server installiert und das funtz auch ich kann ja auch tabellen erstellendoch ich hab immer keinen plan was ich da eigentlich erstell  
was bedeuten eigentlich, wenn ich eine tabelle erstell, diese ganzen sachen in dem pull-down menu und das mit null und so... ich weiß nicht besonders präzise ausgedrückt aber ich glaub wenn ich mit dem null und so sag wisst ihr was ich mein ,hab die anderen sachen vergessen *gg* 

also heisste das jetzt generell erstellen mit myadmin (nur was für atribute und so (null)) und bearbeiten/füllen mit php-spcipts ? 

Vielen dank das ihr mir beide so fleißig helft


----------



## Dunsti (13. November 2001)

> also heisste das jetzt generell erstellen mit myadmin (nur was für atribute und so (null)) und bearbeiten/füllen mit php-spcipts ?



ja, generell schon. Du erstellst z.B. eine Tabelle für Daten eines Gästebuchs, und über ein PHP-Script füllst Du dann dort die Daten eines Formulars rein, bzw. liest diese Daten aus, um die GB-Einträge anzuzeigen.
Anwendungsbeispiele gibt es dafür natürlich viele. 

Aber zu Deiner Frage: Um Daten in einer Tabelle speichern zu können musst Du beim erstellen der Tabelle angeben, um welche Art von Daten es sich im einzelnen handelt.
Ein Beispiel: weil wir gerade dabei waren, nehmen wir unser Beispiel "Gästebuch" her.
Gehe dazu zunächst in PHPMyAdmin ganz nach unten auf "neue Tabelle erstellen", trag den Namen der Tabelle ein (z.B. guestbook) und die Anzahl der Felder (Spalten) setzen wir mal auf 5.
Beim Klick auf OK kommt dann eine Eingabemaske, wo Du die einzelnen Spalten genauer angeben kannst:

*Feld: * Name dieser Spalte
*Typ: * Art der zu speichernden Daten in dieser Spalte (also Zahlen, oder Text, usw.)
*Länge: * Größe des Feldes (also z.B. Typ=CHAR Länge=10 -> Dann kannst Du 10 Buchstaben in diesem Feld speichern)
*Attribute: * erstmal unwichtig ... leerlassen 
*Null: * hier kannst Du angeben, ob ein Feld auch leer bleiben kann (null) oder ob es zwingend ausgefüllt werden muss (not null)
*Standard: * wird ein Feld nicht ausgefüllt, wird automatisch der Wert, der hier steht eingetragen.
*extra: * wird hier "auto_increment" angegeben, dann wird dieses Feld automatisch ausgefüllt, und zwar mit automatischem "Hochzählen" (also 1,2,3,4,5....)
*Primärschlüssel * Jede Tabelle benötigt genau EIN FELD, das als Primärschlüssel dient.
*Index: * gibt an, daß dieses Feld intern indiziert wird. (normalerweise für den Primärschlüssel empfohlen)
*Unique: * gibt an, ob der Wert in diesem Feld eindeutig sein soll, oder ob in mehreren Zeilen der gleiche Wert in diesem Feld stehen darf.

Für unser Gästebuch könnte das dann so aussehen:






Weitere Informationen bekommst Du auch, wenn Du auf dieser Seite (in PHPMyAdmin) unten auf "Dokumentation" klickst.

alle Klarheiten beseitigt? 

Gruß
Dunsti


----------



## vinc5nt (16. November 2001)

erstmal noch Vielen Dank ! 
hat prima gefunzt. 

ich werde jetzt noch einmal ein bischen rum probieren -> das datenspiel von mysql und php , aber wie müsste eigentlich bei einem ganz simplen shop system ... was mein Ziel ist ... die mysql tabelle sein? 

muss wirklich nur ganz einfach sein, so einfach wie möglich, nur eine funktion wo man sachen auswäghlen kann -> in den Warenkorb tun kann -> Preis angabe -> bestellung versenden per mail 

und wenn das nicht zu schwer ist ..für einen nub wie mich noch nen pass geschüzten Bereich (das kann ich schon  ) in dem man die produkte verwalten kann. 

... bräuchte man da eigentlich schon mehrere tables, hab ich irgendwo gelesne, dass da welche paralel agieren oder so. 

Naja auf jedenfall nochmal Danke !!!!


----------



## Dunsti (17. November 2001)

wie die Tabellen in dem Fall aussehen, hängt davon ab, wie umfangreich der Shop sein soll.

Also z.B. im einfachsten Fall nur Produkt, Beschreibung, Preis

Das was Du aber dann weiter fragst betrifft nicht direkt die Datenbank, sondern das PHP-Script, welches die Daten dann auswertet.

Dafür brauchst Du dann SQL-Befehle.

Näheres hierzu in dem Tutorial von mir in den Programming-Tutorials. (link oben)

Gruß
Dunsti


----------



## vinc5nt (17. November 2001)

und wie würde es dann mit dem Warenkorb funktionieren müsste ich da ne extra tabelle anlegen ? wo jedem benutzter eine neue id zugeordnet wird ?


----------



## Terrance & Philipp (17. November 2001)

Ich würde sagen minimal ca. 3 Tabellen!

1. Artikel (Hier werden alle Artikel reingeschrieben mit Preis usw.)
2. Warenkorb (jeder Artikel der bestellt ist mit ID, IDdesBestellers, Menge, Datum usw.)
3. User (Hier sind alle User eingetragen die schon mal was bestellt haben)


----------



## vinc5nt (18. November 2001)

wäre die user tabelle abhängig von einer Regestrieung ? Weil eigentlich will ich dass jeder benutzer/Käufer seine Produkte auswählen kann -> diese im Warenkorb gesammelt und angezeigt werden -> und letztendlich per mail and den Verkäufer + die Telefon nummer und Namen des Käufers (welche vorher vor dem finalen bestellen ausgefüllt werden müssen) versand wird 

ist das überhaupt alles möglich ? 
und dann wollte ich eigentlich das die produkte über flash ausgewählt werden, dann bräuchte ich doch eigentlich keine Produkt Tabelle oder ? reicht es nicht wenn die Flashtextzüge (Produkte) eine php variable mit dem Produktnamen bekommen ?

Ich weiß nicht ob man das jetzt verstehen konnte was ich mit all dem meinte, aber wer es verstehen konnte  ... ist das möglich und wieviele Tabellen bräuchte ich dann ? u. müsste ich dann den Warenkorbinhalt mit einem formmailer verschicken oder wie müsste ich das machen ? oder müsste ich den Tabellen inhalt der Produkt IDs verschicken ? 

Herzlichen Dank !!!!!


----------



## Terrance & Philipp (18. November 2001)

Also du kannst auch einfach statt die ID eines Users seine IP bei dem Artikel hinschreiben dann muss er sich nicht erst registrieren bevor er was in den Warenkorb tun kann.


----------



## Dunsti (19. November 2001)

Meiner Meinung nach hat das alles eigentlich nix mehr mit MySQL zu tun. 

Hier mal ein Denkanstoss: Du hast *eine* Tabelle, in der alle Produkte drin stehen. (sagen wir mal ganz einfach nur mit NAME, BESCHREIBUNG, PREIS)
Jetzt fügst Du da noch eine Spalte hinzu mit "BESTELLNUMMER"

Wenn jetzt jemand dieses Produkt in seinen Warenkorb nimmt, musst Du Dir nur für diesen Benutzer merken, wie oft welche Bestellnummer im Warenkorb liegt. (z.B. über Sessions oder Cookies in PHP)

Wichtig hierbei ist aber (und damit sind wir doch wieder bei MySQL ), daß die Bestellnummern eindeutig sind. Hierbei hilft das "UNIQUE" bei der Tabellenerstellung.

Wenn dann auf "Warenkorb anzeigen" geklickt wird holst Du Dir für die entsprechende Bestellnummer die Informationen aus der DB zum Anzeigen, und beim "Bestellen" werden dann diese Info's in eine Email gepackt, die dann alle Bestellerdaten (also auch Name, Anschrift, usw.) enthält.

Gruß
Dunsti


----------



## vinc5nt (19. November 2001)

So nochmal vielen dank für all die Hilfe ... was noch nicht heisst, dass ich keine Hilfe mehr brauch  und danke dass ihr speziel Dunsti noch nicht aufegegeben habt oder abgehauen seid oder so ... auf grund meines schelcehten Know Hows 

Naja ich hab jetzt eine minimal shop Tabelle erstellt doch ich bin mir nicht sicher was für einen Typ ich angeben muss (siehe Bild unten) wäre das richtig ?

Und nochmal ne rein mysql theoretische frage. 
Wenn ichjetzt diese vier sachen hab ID,NAMEN,BESCHREIBUNG,PREIS gelten diese dann als spalten ? trotz der aufzählungs erscheinung in myadmin ? ..hat dies nur stilistische und prakmatische Gründe ?


----------



## Terrance & Philipp (19. November 2001)

Ja das sind trotzdem noch Spalten das ist nur aus rein stilistischen Gründen.
Ich denke nicht das die Typenverteilung so stimmt. Doch da kann dir Dunsti sicher besser helfen als ich.


----------



## Dunsti (20. November 2001)

die Frage, ob eine Typenangabe richtig ist, hängt immer nur davon ab, wie die Daten genau aussehen, die Du in den Feldern speichern willst.

Für Deinen Fall sollte es so, wie Du es da hast, funktionieren !!!!! 

Mögliche Verbesserungen: 

- man könnte evtl. das Feld Beschreibung vom Typ "TEXT" oder "LONGTEXT" machen. (hängt alleine von der Anzahl der Zeichen ab, die Du in dem Feld speichern willst). muss aber net sein. (Soweit ich weiß bringt das nur was in Bezug auf Platzverbrauch der DB auf dem Server, und das ist nur bei größeren Datenbanken wirklich relevant )

- das gleiche gilt für das Feld Preis. Hier könnte man statt dem Typ "CHAR(10)" vielleicht "FLOAT" hernehmen. muss aber auch net unbedingt sein. gleicher Grund wie oben.

Du siehst: es gibt meistens mehrere Lösungen, die "richtig" sind (richtig isses immer dann, wenns so funktioniert), aber nicht jede "richtige" Lösung ist auch immer eine "gute" Lösung. 

Nochmal: für Deinen Fall ist es so, wie Du es hast, ok !!!

Gruß
Dunsti


----------



## vinc5nt (20. November 2001)

jippie ,hoffentlich funzt das und ist somit dann auch richtig 

ich hab noch ne Frage and dich Dunsti bezüglich (oh wie galant ausgedrückt) deines tutorials zu mysql zugriffen.

... wenn ich jetzt nicht nur einen Befehl hab 


```
$sql_befehl = "INSERT INTO 'gaestebuch' ('Name', 'Email', 'Nachricht') VALUES ('Dunsti','dunsti@tutorials.de', 'Dies ist der Gaestebucheintrag')";
```

sondern eine ganze liste mit einträgen die hintereinander eingetragen werden sollen ..du kannst dir vielleicht denken dass ich das zum erstellen / eintragen des Produktes;infos;Preise nehmen wollte  und somit nicht unendlich viele datein machen will... wie mach ich das dann mit der Variabel kann ich einfach da unter die gleiche benützen oder muss ich jeder Variabel (somit auch jedem Produkt eintrag) einen zahl oder anderen namen zuweisen ?

gibts da noch ne andere lösung


----------



## vinc5nt (20. November 2001)

sowiso nochmal ein paar allgemeine fragen  

<?php
$db_connect="mysql_connect('xxxx','xxxx','xxxx')";

$sql_befehl="INSERT INTO 'pf_produkte'('name', 'beschreibung', 'preis') VALUES ('pizza','bla bla', '5.00')";

mysql_query($sql_befehl,$dbconnect);

?>

wäre das so richtig und müsste ich die Verbindung nicht noch eigentlich schließen ? (MYSQL_CLOSE()) 

und dann nochmal die gleiche frage wie im vorherigen thread  

und wie kann ich dann die daten auslesen mit SELECT * FROM oder so ?

und wie müsste ich das 


```
$sql_befehl="INSERT INTO 'pf_produkte'('name', 'beschreibung', 'preis') VALUES ('pizza','bla bla', '5.00')";
```

hier schreiben wenn ich es nicht als Variabel haben will ? .. einfach $sql_befehl wegenehmen ? -> doch wie kann ich dann das MYSQL_QUERY ersetzen ? 

naja ich hoffe meine ganzen Fragen sind nicht zu lästig oder blöd aber mit hilft das unehimlich hier  
-und nochmals Vielen Dank


----------



## Dunsti (20. November 2001)

also:

1.) für jeden Eintrag in die DB brauchst Du einen "INSERT INTO..."-Befehl.
Anstatt mit der Variable kannst Du auch einfach schreiben: *mysql_query("INSERT INTO.....",$db_connect); * und zwar für jedes Produkt einen solchen Befehl !!!

2.) MySQL-Verbindungen werden beim Beenden des Scripts automatisch wieder geschlossn. Du musst diese also im Normalfall nicht explizit wieder beenden.

3.) zum Auslesen nimmst Du mysql_query("SELECT * FROM pf_produkte")
Genaueres zum SELECT-Befehl gibts in dem MySQL-Handbuch (Link im Thread weiter oben)

4.) blöde Fragen gibts net  und lästig sind nur Leute, die nix selbst probieren, sondern nur sagen "ich kann das net, mach ma bitte", aber zu denen zählst Du ja net 
Ansonsten ist dieses Board ja für Fragen da! Ich bin genauso froh, wenn jemand meine Fragen beantwortet.

5.) wie weiter oben schonmal beschrieben gibt es meistens mehrere Lösungen für ein Problem, und Lösungen die funktionieren sind im allgemeinen auch richtig. (was nicht immer heißt, das es net auch besser oder einfacher geht)
Wenn ich mir heute meine ersten Scripte anschaue (die teilweise sogar noch im Einsatz sind) denke ich auch jedesmal "mann, haste das kompliziert gemacht". Man lernt eben mit der Zeit immer mehr, und immer bessere Möglichkeiten. Jeder entwickelt im Laufe der Zeit so seinen eigenen "Programmierstil", weil jeder eben für sich entscheidet, welche der Möglichkeiten am einfachsten, besten, effektivsten ist.
Vor allem eines: keine Angst haben, denn "kaputtmachen" kannst Du im Allgemeinen nix. Einfach mal probieren, und wenns eben net geht den Fehler suchen. Dabei lernt man das Meiste 

Ach ja: Immer schön drauf achten, daß Scripte "lesbar" bleiben. 

Gruß
Dunsti

-----edit-----

*$db_connect="mysql_connect('xxxx','xxxx','xxxx')"; *ist übrigens falsch !!!

*$db_connect=mysql_connect('xxxx','xxxx','xxxx'); * ohne die "" ist richtig.

-----edit-----


----------



## vinc5nt (22. November 2001)

So nochmals hi  vielen dank dass es dir nichts aus macht dass ich soviel frage, aber ich denke immer bevor ich etwas falsches vermute/lerne frag ich doch lieber welche die es wissen  

ALso mal wieder ein zwei frage *g*


```
$db=@mysql_connect(server,name,pass) or die (mysql_error())
```

einmal warum muss da das @ vor dem mysql_connect stehen und was bedeutet der befehl mysql_error() und stimmt der syntax ?  

2. ist es richtig dass der mysql_query Befehl es möglich macht das danach z.B. INSERT INTO BEfehle folgen könnten ? 
-> 
	
	
	



```
mysql_query(INSERT INTO pf_produkte(name,beschreibung,preis) VALUES (?,?,?);
```

das wirkt auf mich irgendwie falsch, aber ich hab irgendwie noch kein feeling für programmier sprachen 

3.was ist eine session ?

4.wie kann ich der MYSQL Tabelle sagen dass sie bei einem neuen eintrag die ID spalte (mit auto_increcment) umd einen erhöhen soll... oder macht sie das von alleine ?

5.ist es mäglich dass ich bei INSERT INTO pf_produkte(hier Variabeln reinsetzen könnte die mit einem Form script verbunden sind, dass ich so alles online eingeben könnte ?) 

und kannst du wenn ich irgendwo syntax oder andere Fehler gemacht habe sie verbessern  nicht dass ich alles voll falsch beginn und gar nicht meine fehler finden kann. 

nochmals VIELEN DANK !

.... noch eine nachträglich eingereichte Frage  : was ist hier dran falsch er sagt immer undefined function line 8 oder so


<?php 
	$db=@mysql_connect('db.protagonist.f2s.com','?','?') or die(mysql_error());

	mysql_query("INSERT INTO pf_produkte(name,beschreibung,preis) VALUES (?,?,?)");

echo "<html>\n<body>\n";
	$result=@mysql_query("SELECT * FROM pf_produkte");
	print_result_table($result);
echo "</body>\n</html>\n";

?>


----------



## Dunsti (23. November 2001)

1-2 Fragen ???????????????????? 

macht nix, frag nur 

1.) das @ vor einem Befehl unterdrückt Fehlerausgaben
1a) der Befehl mysql_error() enthält immer den zuletzt aufgetretenen MySQL-Fehler ... mysql_errno() die zugehörige Fehlernummer
1b) die Syntax ist fast korrekt: ganz am Ende noch ein ;

2.) SQL-Befehle müssen immer in " "
also: mysql_query("INSERT ......");

3.) mit Sessions kannst Du bestimmte Werte in einer Variablen speichern. Diese Variable verliert aber NICHT ihren Wert, wenn ein Script zu ende ist. (ist recht komplex, deswegen schau doch mal in ein PHP-Buch, um genauere Info's zu bekommen)

4.) sobald eine Spalte "auto_increment" hat wird der Wert darin automatisch hochgezählt. Du musst (kannst) dieses Feld nicht selbst schreiben.

5.) ja, da können auch Werte aus einem Formular rein: "INSERT INTO tabelle (dbfeld1,dbfeld2) VALUES ($formfeld1, $formfeld2)"
Die INPUT-Felder müssten in dem Fall heißen NAME="formfeld1" bzw. NAME="formfeld2" die Felder in der Tabelle "dbfeld1" bzw. "dbfeld2"

5a) bis jetzt hab ich doch alle Syntaxfehler beschrieben, oder ?

6.) in Zeile 8 steht print_result_table(...), was aber keine PHP-Funktion ist. Also sucht der PHP-Interpreter nach einem function print_result_table(), was er nicht findet, und deswegen diese Meldung ausgibt.
Stattdessen muss da folgendes hin:
$result=mysql_fetch_array(mysql_query("SELECT * FROM pf_produkte")); 
echo $result[Feldname];

alles klar ? 

Gruß
Dunsti


----------



## vinc5nt (23. November 2001)

Jo ich glaub ich hab das alles kappiert nur das mit 


```
$result=mysql_fetch_array(mysql_query("SELECT * FROM pf_produkte")); 
echo $result[Feldname];
```

noch nit ganz, weil [Feldname] ..was ist das ist das ein mysql befehl oder ist das ein array das versteh ich nicht ganz


----------



## Dunsti (24. November 2001)

das ist ein Array. 

mit dem Befehl $row=mysql_fetch_row(...) bekommst Du ein numerisches Array, also steht der Inhalt des ersten Feldes (oder auch der ersten Spalte) in $row[0], der des zweiten Feldes in $row[1], usw.

bei $row=mysql_fetch_array(...) ist es hingegen ein assoziatives Array. Hier stehen zwischen den eckigen Klammern [ und ] die Feldnamen.
Also, wenn Du eine MySQL-Tabelle mit den Feldern name, beschreibung und preis hast heißen die Variablen $row[name], $row[beschreibung] und $row[preis]

alles klar ?

Gruß
Dunsti


----------



## vinc5nt (24. November 2001)

```
<?php while ($daten=mysql_fetch_array($result)) { ?>

<tr>
<td><?php echo $daten[id]; ?></td>
<td><?php echo $daten[name]; ?></td>
<td><?php echo $daten[beschreibung]; ?></td>
<td><?php echo $daten[preis]; ?></td>
</tr>

<?php } ?>
```

was ist daran falsch ? wenn ich das ausführe zeigt er mir nichts an (ich hab das irgendwo in einem tut gesehen)
ich hab vorher mit diesem hier 


```
$sql="INSERT INTO pf_produkte('name','beschreibung','preis') 
VALUES
('$name','$beschreibung','$preis')";

$result=mysql_query($sql,$db);
```

eingeführt -zu all den sachen müsste man sich noch die restlichen HTML tags und php variabeln vorstellen, das wär hier aber zu viel geworden  

Vielen Dank !!!!!!!


----------



## Terrance & Philipp (24. November 2001)

Das Codeschnipsel oben ist schon richtig so.
Wenn du aber diese Abfrage durchführst:

```
$sql="INSERT INTO pf_produkte('name','beschreibung','preis') 
VALUES
('$name','$beschreibung','$preis')";

$result=mysql_query($sql,$db);
```
dann fügst du nur was ein. Du bekommst keine Ansammlung von Daten zurück.
Um etwas aus der Tabelle auszulesen müsste das so aussehen:

```
$sql="SELECT * FROM pf_produkte WHERE ID = 15";

$result=mysql_query($sql,$db);
```
Diese Abfrage gibt dir einen Datensatz zurück. Nämlich den mit der ID 15!
Verstanden?
Sonst frag ruhig.


----------



## Dunsti (26. November 2001)

nochmal zur Erinnerung: tutorial 

Gruß
Dunsti


----------



## vinc5nt (26. November 2001)

kann ich auch an stelle von 


```
$sql="SELECT * FROM pf_produkte WHERE ID = 15";

$result=mysql_query($sql,$db);
```

das schreiben :


```
$result=mysql_query("SELECT * FROM pf_produkte",$db);
```



und was bedeutet dieses WHERE ID = 15 , bezieht sich das auf mysql_fetch_row ? 
Danke !


----------



## Dunsti (26. November 2001)

ja, kannst Du auch schreiben.

das Where filtert das Ergebnis auf die Datensätze, wo in der Spalte ID der Wert 15 steht.

Gruß
Dunsti


----------



## vinc5nt (26. November 2001)

So irgendwie zeig der bei mir immer noch nischts im script an  
Kann ich irgendwie auf einen einfachen weg überprüfen ob ich denn schon was in die spalten eingefügt habe ?

Muss ich hier 
	
	
	



```
<?php echo $daten['name']; ?>
```
 die variabel "name" so [name] oder so ['name'] schreiben ? oder ist das egal weil eigentlich.. ist das nicht so dass " PHP sagt dass es das folgende interpretieren muss und ' sagt dass dies nur einfach auisgegeben werden muss ? ... müsste es dann nicht ["name"] heissen ? oder bezieht sich die " - Bestimmung jetzt auf den Funktions syntax $daten[variabel] ? 

Ist "Syntax" m,f oder Neutrum ?  ... fällt mir jetzt mal so ein 

und ich hab jetzt schon häufiger in scripts gesehen dass manche die IF klammern { über mehrer <?php ?> tags laufen lassen z.B. 


```
<?php IF ($submit) {
bla bla } ELSE { ?>
//HTML - CODE
<form method="post" action="<?php echo $PHP_SELF ?>">
<input type="text" name="?" vlaue="<?php echo $? ?>" size="30">
<input type="submit" name="submit" value="abschicken">
</form>
<?php } ?>
```

kann man das so ohne weiteres machen umd elemente in einem HTML teil in die Funktion mit ein zu beziehen ? also <php> in <php> oder wie ? 

nochmals vielen dank !

ach (Nachtrag) hat es eigentlich was zu bedeuten das bei meinem INSERT script die form zeilen nict nach dem Drücken des Submit buttons geleert werden ?

nochmal ach (nachtrag2) if ($action==neu) was heisst dieses action hab ich in einem GB tut hier auf tutorials.de gefunden da waren auch so welche befehle ".PHP_SELF.action?neu=guestbook." oder so ähnlich aber das hab ich schonmal geshen mit diesen ? und so nur was bedeutet das ? == heisst ist gleich da hab ich schon gelernt *gg* 

Naja nochgmal VIELEN DANK !


----------



## Dunsti (27. November 2001)

mir scheint, da will jemand mit Gewalt, und möglichst schnell PHP lernen  

1.) Also, nachschauen, ob was in die DB geschrieben wurde mach ich immer mit PHPMyAdmin. 

2.) PHP zu "unterbrechen" mit ?> um nach einigen Zeilen wieder mit <?PHP zu beginnen ist durchaus möglich. (ist ja einer der Großen PHP-Vorteile, daß man es mit "normalem HTML" mischen kann)
ACHTUNG: bei Schleifen und IF's usw. immer auf die Klammern achten. (also z.B. am Schluss noch das *<?PHP } ?>*)

3.)bei den Arrays muss das heißen $variable[Name] .... ohne die ' oder "

4.) mit dem ? kannst Du Variablen an das Script übergeben. also z.B. index.php?var1=1
dann hast Du im Script $var1 mit dem Wert 1
Die erste Variable immer mit ?, alle weiteren mit & anhängen: index.php?var1=1&var2=2&var3=3



PS: Syntax ist soweit ich weiß weiblich: "Die Syntax" 
ach ja ... und kauf Dir dochmal ein PHP-Einsteigerbuch. Du schreibst schon Scripte, die ein Einsteiger eigentlich noch net kann, und hängst immer wieder an Grundlagen fest. (nur mal so ein Tip )

Gruß
Dunsti


----------



## vinc5nt (27. November 2001)

Ja ich glaub mein Problem ist dass mir das Basis wissen fehlt und dass ich jetzt gleich mit einem Shop anfangen muss, doch ich hab von einem entfernten Freund  und von vielen anderen leuten gehört dsas man PHP am besten in Verwendung und eigen bearbeitung erlernt , was ja auch ganz prima ist nur mein Problem ist ausserdem dass ich nicht unbedingt so viel Zeit dazu hab  und dass ist doof weil wenn man da dann sitzt und eigentlich ein bissel was lernen will ,hat man schon wieder was anderes im Kopf.
Nerv ich denn schon ? .. ich weiß ich frag villeciht ein bissel viel doch ich denk immer dass das am schnellsten und besten verständlichsten ist.
naja ich werde nochmal ein wenig ausprobieren doch im mom versteh ich überhaupt nicht warum da anscheinend nix in meiner Tabelle ist  
kann ich dir das script (insert script) vielleicht mal schicken und kannst du mir dann sagen was da flasch ist ... oder muss ich den Port eigentlich angeben ?
ich bin bei f2s.com ... wie sieht da eine typische msysql_connect reihenfolge aus ? 

Vielen dank ! und tschuldigug für mein ganzes gefrage


----------



## Terrance & Philipp (27. November 2001)

1. Frag ruhig!
2. Typische Datenbakabfrage auf F2S:

```
$dbconnect=mysql_connect("db.DeinUsername.f2s.com","DeinUsername","DeinPasswort");

mysql_select_db("DeinUsername");

$sql_abfrage = "";
$result = mysql_query($sql_abfrage,$dbconnect);
```
3. Ich hab PHP nur mit diesem Board gelernt...


----------



## vinc5nt (27. November 2001)

wäre das eine typische datenabfrage und darstellung ? 


```
<?php
$db=mysql_connect('db.username.f2s.com','username','pass');
mysql_select_db("username",$db);

//Datein auslesen
$sql="SELECT * FROM pf_produkte";
$result=mysql_query($sql,$db);
?>

<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr>
<td><b>id</b></td>
<td><b>Name</b></td>
<td><b>Beschreibung</b></td>
<td><b>Preis</b></td>
</tr>

<?php while ($daten=mysql_fetch_array($result)) { ?>

<tr>
<td><?php echo $daten[ID]; ?></td>
<td><?php echo $daten[name]; ?></td>
<td><?php echo $daten[beschreibung]; ?></td>
<td><?php echo $daten[preis]; ?></td>
</tr>

<?php } ?>
</table>
```

würde das funktionieren ... was nebenbei bei mir nicht funktioniert  und stimmen die ganzen " / ' ? 

UND  wie kann ich in phpmyadmin sehen ob die spalten inhalte beschrieben sind ? -weil mittlerweile glaub ich dass da gar nischts reingekommen ist weil das INSERT script vielleicht falsch ist  

DANKE !!!!!


----------



## Terrance & Philipp (27. November 2001)

Also ich seh da grad keinen Fehler...
Was gibt er denn für eine Fehlermeldung aus?

EDIT
Versuchs mal die Befehle ohne hinten die Verbindung ($db) anzugeben. Es soltle auch ohne gehen, wenn nur eine Verbindung vorhanden ist.


----------



## Dunsti (27. November 2001)

@vinc5nt: nein, Du nervst nicht  , aber ich denke, einige Fragen würde sich bei Kenntnis der Grundlagen erst gar net stellen.
Aber Dein Bekannter hat Recht, denn so lernst Du ja auch einiges 

An Deinem Script kann ich auch keine Fehler feststellen. Sehr wahrscheinlich ist nix in der DB, wenn Du damit keine Ausgabe bekommst.
Wie gesagt: PHPMyAdmin eignet sich nicht nur zum Erstellen der DB-Struktur. Es leistet auch gute Dienste zum Kontrollieren, ob auch was in die DB geschrieben wird usw. 

Ach ja, nochwas (oder hatte ich das schon erwähnt ???): "ID" ist nicht gleich "id" oder "Id", da MySQL sehr genau auf Gross- und Kleinschreibung achtet.

Gruß
Dunsti


----------



## vinc5nt (28. November 2001)

Jo das mit ID fiel mir letztens auch ein dass das ne rolle spielt (liegt doch daran dass die meisten server auf UNIX basieren und UNIX legt wert auf Groß und Klein schreibung oder ?  ) stimmt jetzt aber glaub ich da ich in der tabelle auch ID stehen hab.

Wie könnte ich in myadmin denn sehen ob was drin ist oder nit ? 
... ich hab  dieses script zum reinschreiben benutzt   :


```
<?php
if ($SUBMIT) {

$db=mysql_connect("db.username.f2s.com","username","?");
mysql_select_db("username",$db);

$sql="INSERT INTO 'pf_produkte' ('name,'beschreibung','preis') 
VALUES
('$name','$beschreibung','$preis')";

$result=mysql_query($sql,$db);
echo "next entry plz!<br><br>";
}
else {
?>

<form method="post" action="<?php echo $PHP_SELF ?>">
<table border="0" align="center">
<tr> 
<td>Name</td>
<td><input type="text" name="name" value="<?php echo $name ?>" size="50"></td>
</tr>
<tr>
<td>beschreibung</td>
<td><input type="text" name="beschreibung" value="<?php echo $beschreibung ?>" size="50"></td>
</tr>
<tr>
<td>Preis</td>
<td><input type="text" name="preis" value="<?php echo $preis ?>" size="50"></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?php
	}
?>
```
ist da ein Fehler drin  ? sorry dass ich jetzt die ganzen scripts poste aber ich versteh nit warum das nit funzt und warum da nischts drins und bevor ich jetzt denk dass das was ich da gemacht hab richtig ist und den Fehler wo anders ist frag ich euch  
Danke dass ich soviel fragen darf, werde auch versuchen das wochende ein wenig basis wissen auf zu arbeiten doch ich muss morgen ne klausur schreiben und die nächste woche auch drei und am wochende sind Geburtstage, deshalb hab ich kaum zeit und frag auch soviel  

Vielen Dank !!!!!


----------



## Dunsti (29. November 2001)

also mir fällt auf, daß da in dem INSERT ein ' fehlt (nach name)
Ansonsten siehts OK aus.

Die Funktion mysql_query() gibt übrigens TRUE oder FALSE zurück, wenn sie erfolgreich oder eben nicht erfolgreich war.
Eine einfache Fehlerkontrolle bekommst Du also so:

```
if ($result=mysql_query($sql,$db)) echo "ok" else echo mysql_error();
```

mysql_error() gibt Dir den zuletzt aufgetretenen MySQL-Fehler. 

Gruß
Dunsti


----------



## vinc5nt (29. November 2001)

kann ich denn das 
	
	
	



```
$result=mysql_query($sql,$db);
echo "next entry plz!<br><br>";
```

mit dem 
	
	
	



```
if ($result=mysql_query($sql,$db)) echo "ok" else echo mysql_error();
```
 so ersetzen ? 

PHP Basis Frage  : kann man eigentlich in if Bedingungen noch eine IF bedingung einbauen und muss man wenn ja da was bedenken zb die setzung der {} .. nicht das PHP dann die vorrangegane Bedingung beendet und das } die in der mitte eingefügt  ... war das jetzt verständlich  ?

Beispiel 


```
if ($submit) {
echo "bla";
} else 
{
echo "$muh"; If ($muh;) {echo "bell";
} else 
{echo "Das Tolle Tierreich";
}//welche Bedingung würde er hier beenden die erste oder zweite ?
}
```

ich weiß gar nicht ob das was ich da geschrieben hab funktionieren würde und ob $muh überhauptbestimmt ist aber egal ich musste mir irgendwas einfallen lassen und kann irgendwie kaum PHP 

Nochmals Dangge !!!!!


----------



## Dunsti (30. November 2001)

ja, das kannst Du so ersetzen !!!

zu den IF's: es gibt neben IF und ELSE auch noch ein ELSEIF

Beispiel:

```
if ($var==1) {
   echo "Variable ist 1";
}
elseif ($var==2) {
   echo "Variable ist 2";
}
else {
   echo "Variable ist nicht 1 und nicht 2";
}
```

Ausserdem kannst Du IF-Abfragen beliebig verschachteln. Allerdings musst Du hier sehr gut auf die Klammern achten: (eine Strukturierte Programmierung hilft da viel !!!)

Beispiel:

```
if ($var1==1) {
   if ($var2==1) {
      echo "Variable 1 und Variable 2 sind beide 1";
   }
   else {
      echo "Variable 1 ist 1 aber Variable 2 ist nicht 1";
   }
}
else {
   if ($var2==1) {
      echo "Variable 1 ist nicht 1 aber Variable 2 ist 1";
   }
   else {
      echo "Variable 1 und Variable 2 sind nicht 1";
   }
}
```

Das Beispiel kannst Du natürlich noch vereinfachen, wenn Du in der Bedingung mit AND und OR arbeitest:


```
if ($var1==1 and $var2==1) {
   echo "Variable 1 und Variable 2 sind beide 1";
}
elseif ($var1==1 and $var2!=1) {
   echo "Variable 1 ist 1 aber Variable 2 ist nicht 1";
}
elseif ($var1!=1 and $var2==1) {
   echo "Variable 1 ist nicht 1 aber Variable 2 ist 1";
}
else {
   echo "Variable 1 und Variable 2 sind nicht 1";
}
```

hilft das?

Gruß
Dunsti


----------



## vinc5nt (1. Dezember 2001)

jo das hat geholfen 

ich glaub ich hab jetzt meine Problemstelle teils ausfindig gemacht.
ich hab das hier geschrieben um zu gucken (waren vorher nochmal mehr efehle drin aber die beiden waren die wichtigen) was nicht funktioniert im bezug auf die db. 

-lokalisierungs script  

```
<?php 
$db=mysql_connect("db.protagonist.f2s.com:3306","protagonist","pass");
$sql=mysql_select_db("protagonist",$db);

if ($db) {
    echo "Verbindung online<br>";
} else {
    echo "offline ********";
}


if (mysql_query($sql,$db)) {
    echo "db online";
} else {
    echo "offline";
}

?>
```
 .. jetzt kennt zwar jeder meinen db namen aber egal  das pass hab ich nämlich nit gesagt und ausserdem kann ich dir/ihnen ja vertrauen 

so und das hab ich asugeführt und gesagt hat er mir 

Verbindung online
offline 

 d.h. ich hab keine datenbank ... kann jedoch mit phpmyadmin auf sie zugreifen und da nennt er sie auch "protagonist"
ich hab was flasch eingegeben ... aber nur was ?
f2s.com hat seit 4 wochen probleme bezüglich meiner Datenbank  ... unwahrscheinlich 
ich hab was falsch installiert ... phpmyadmin hab ich einfach auf den server geladen, war das richtig ?
bei f2s.com gibt es spezielle datenbank zugriffsverfahren ,die nicht in den FAQ oder in der mems sec stehen

Bitte um Hilfe !!!! / anregungen für eine möglich Lösung oder möglich problem quellen 

VIELEN DANK! 
Mfg Vincent


----------



## vinc5nt (7. Dezember 2001)

Dunsti  ich brauch dich


----------



## Dunsti (8. Dezember 2001)

oops .... sorry, ich hab net aufgepasst ....

Dein Problem ist ganz einfach: *mysql_select_db() * ist ein Befehl für sich, der nicht durch *mysql_query() * aufgerufen wird.
d.h. mit dem Befehl in Zeile 3 hast Du die Datenbank bereits ausgewählt. Und das "offline" kommt, da das *mysql_query() * wie schon gesagt so net stimmt 

alles klar ?

Gruß
Dunsti


----------



## Terrance & Philipp (8. Dezember 2001)

```
<?php 
$db=mysql_connect("db.protagonist.f2s.com:3306","protagonist","pass");

if ($db) {
    echo "Verbindung online<br>";
    
    if (mysql_select_db("protagonist",$db);) {
        echo "db online";

        $sql = "SELECT * FROM pf_produkte";
        if (mysql_query($sql,$db)) {
            echo "Abfrage hat funktioniert";
        } else {
            echo "Abfrage hat nich funktioniert";
        }

    } else {
        echo "db offline";
    }

} else {
    echo "offline ********";
}
?>
```

So sollte das etwa heissen.
Da sind 3 Abfragen drin. Die erste (übernommen) fragt ob wir zum MySQL-Server connecten konnten, die zweite sagt ob wir unsere DB auswählen konnten/durften, die dritte sagt dann noch ob wir eine Abfrage starten konnten.
Ich habs nicht getestet.
Bis zur nächsten Frage
T&P


----------



## Mike W (6. Mai 2005)

Hallo,

ich habe soeben deinen Beitrag über Datenbanken gelesen, allerdings funktionieren die
Links nicht mehr!

Vieleicht kannst Du mir ja so helfen und zwar will ich eine Kundendatenabfrage auf einer Homepage generieren nur ich weiss nicht wie ich das anstellen muss!

Wäre nett wenn Du mir da helfen könntest.

Gruß Mike

MikeWeiper@mikeweiper.de


----------



## Mike W (6. Mai 2005)

Hallo,

ich habe soeben euren Beitrag über Datenbanken/mySql gelesen weil ich da eine Lösung suche.

Ich möchte auf einer Homepage eine Kundendatenabfrage  generieren nur ich weiss nicht wie ich das anstellen muss!

Wäre nett wenn ihr mir da helfen könntet.

Gruß Mike

MikeWeiper@mikeweiper.de


----------

