php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.08.2007, 11:07  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard Der perfekte Trenner?

Hallo,

ich hab vor, mehrere Textteile in eine Spalte einer Datenbank zu schreiben. Bei zahlen kann man ja als Trenner relativ leicht ein Komma (1,2,3,4, um das dann mit split(); wieder aufzulösen) nehmen. Wie sieht das aus, wenn ich jetzt Textteile wie z.B. Fragen habe?

Wie kann man

"Du siehst heute aber gut aus!"
"Wirklich?"
"Aber klar!"

in eine Spalte packen und nachher wieder via Split und Array rausholen?

Oder gibt es da keine ultimativen Weg und man sollte einfach noch eine zusätzliche Tabelle anlegen?


mfg
Link
GSJLink ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.08.2007, 11:30  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

In relationalen Datenbanken solltest du sowas eigentlich nicht abspeichern. Jedes nicht mehr teilbare Element (und dein Text ist ja scheinbar doch nochmal teilbar) muss in eine eigene Zelle. Das hat einige Vorteile: Sortierbarkeit, du kannst einem Textblock Metainformationen anhängen (Author, Datum), die Textblöcke können von der Datenbank gezählt werden, .. Alles was du sonst mit PHP nachbauen musst. Das drückt enorm auf die Performance und kostet dich und deinen Arbeitgeber unnötig Zeit.
Zergling-new ist offline  
Alt 18.08.2007, 11:36  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Hm ok,

wie wärs wie folgt:

2 Tabellen:
- Fragen
- Antwortmöglichkeiten

Fragen:
... | Frage | Antwortmöglichkeiten | ...
... | blubb | 1,2,3, ... |

Antwortmöglichkeiten:

|ID|Möglichkeit |
| 1 | Möglichkeit A |
| 2 | Möglichkeit B |
| 3 | Möglichkeit C |

Zahlen bzw. ID's kann man ja relativ leicht trennen, wäre das vom Aufbau so besser oder gibt es noch eine bessere/einfachere Möglichkeit?

mfg
Link

PS.: Ich bin mein eigener Arbeitgeber
GSJLink ist offline  
Alt 18.08.2007, 11:41  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Wenn du es so machst, hast du doch in der Spalte "Antwortmöglichkeiten" wieder mehrerer Werte....

Ich kenne nicht genau die Anforderungen bzw. weiß nicht was das am Ende werden soll....

Jenachdem ob eine Antwort immer zu genau einer Frage gehört, oder ob eine Antwort auch zu mehreren Fragen gehören kann, kannst du das so lösen:

fragen
id | frage

antworten
id | antwort | frage_id

oder

fragen
id | frage

antworten
id | antwort

antworten_fragen
anwort_id | frage_id
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 18.08.2007, 11:45  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Stimmt, die 1. Möglichkeit von dir ist ja sogar noch einfacher, weil ich dann ja ohne den Aufwand durch split alle Antworten ausgeben kann.

Das ist glaub ich soweit die beste Lösung.

Danke!

mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline  
Alt 18.08.2007, 12:02  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Übrigends, falls jemand nochmal drüberschauen möchte:

http://root.marbec.de/question/question.html


mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline  
Alt 18.08.2007, 14:30  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

warum benutzt du für einen klaren ENUM feld "Typ" ein VARCHARr?
auch feld "Public" kannst du als BOOL machen.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 18.08.2007, 14:35  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Ich lass mich nicht so gerne einengen und hätte einfach nen bisschen Freiraum für Updates. Mache ich eigentlich schon immer so. Allerdings achte ich schon drauf, dass der Benutzer die Eingaben da auch richtig macht und es nicht zu Fehlern kommt.


mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline  
Alt 18.08.2007, 15:06  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

ich sehe kein Zusammenhang zwischen UPDATES, Benutzereingaben und von mir empfohlenen Datentypen für die Spalten.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 18.08.2007, 15:10  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Ich will evtl. das Feld wo du ENUM vorgeschlagen hast erweitern, und so geht das ohne etwas an der DB zu ändern.
Das das bei Public ne Zahl ist soll am Anfang heißen Möglichkeit 1 und 0, später dann evtl. noch 0,1 und 2.

Das habe ich damit gemeint.

mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Der perfekte HTML / PHP-Code winki Off-Topic Diskussionen 9 08.05.2006 00:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
trenner php

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.