php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.07.2006, 16:49  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard neue id ermitteln oder mysql struktur ändern?

ich habe 2 tabellen: kategorien und sprachen.

-----------------------------------
tabelle "lang":
spalten: lang_id, lang_name

daten:
de, deutsch
en, english
-----------------------------------
tabelle "kategorien":
spalten: cat_id, cat_lang_id, cat_name

daten:
1, de, kategorie1deutsch
1, en, category1 english
2, de, kategorie2deutsch
2, en, category2english
-----------------------------------

wenn ich jetzt eine neue kategorie via formular anlegen lasse, muss ich dann IMMER vorher eine sql abfrage starten um den nächsten wert der id herauszubekommen? denn ich habe keinen primary key und keinen autoincrement wert definiert, sonst hätte ich ja nicht die gleiche id bei den beiden languages einer kategorie erreicht. oder hab ich da einen denkfehler?
Promaetheus ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.07.2006, 16:51  
Gast
 
Beiträge: n/a
Standard

Zitat:
oder hab ich da einen denkfehler?
Ja. Du hast keine id. Mit welcher Abfrage würdest Du was für eine id ermitteln lassen wollen.
 
Alt 26.07.2006, 17:36  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

naja. id hab ich schon. cat_id. sprich ich hab ja immer eine id für alle sprachen.

mysql_query des letzten datensatzes. dann $i = $data['cat_id']++;
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 26.07.2006, 17:50  
Gast
 
Beiträge: n/a
Standard

Das bezeichnet aber keinen einzelnen Datensatz - nur mit diesem Wert kannst Du nicht gezielt einen Datensatz ansprechen (mit der Kombination catid+lang_id wieder ja, aber das zähl hier nicht). Deshalb hast Du es ja auch nicht als primary key gesetzt (denn der muss bei mysql unique sein).
Es gibt also keine atomare Operation, um "den nächsten" Wert zu ermitteln.
Dafür bräuchtest Du eine dritte Tabelle.
Code:
languages:
lang_id(auto),lang_abbr,lang_name
1, de, deutsch
2, en, english
-----------------------------------
categories:
cat_id(auto)
1
2
-----------------------------------
category_versions:
catver_id(auto), cat_id, lang_id, catver_title
1, 1, 1, Kategorie_1
2, 1, 2, category_1
3, 2, 1, Kategorie_2
4, 2, 2, category_2
In categories kann es natürlich noch weitere Felder als nur die id geben. Aber das hängt vom Einsatzzweck ab.
 
Alt 26.07.2006, 18:09  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

hm... also gehe ich schon richtig vor wenn ich einfach beim einfügen eines neuen datensatzes vorher die letzte id, bzw. "nummerierung" abfrage und diese dann einfach um einen wert erhöhe wie oben beschrieben oder? ist beinahe einfacher als deine lösung mit der extra tabelle oder?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 26.07.2006, 18:15  
Gast
 
Beiträge: n/a
Standard

Die dritte Tabelle macht die Aktionen ohne weitere locks atomar (siehe: race conditions).
Es gibt keine gemeinsamen Daten zu einer Kategorie, die in die Tabelle categories gehören?
Dann ist es unwahrscheinlich, dass
Zitat:
1, de, kategorie1deutsch
1, en, category1 english
tatsächlich miteinander verknüpft sind und daher irgendwie die selbe cat_id gerechtfertigt ist - rein formal betrachtet.
 
 


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
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Kein Zugriff über ODBC mit der IP-Adresse auf MySql DB Datenbanken 4 09.02.2006 11:04
[Erledigt] Mysql 4.1.x unter php 4.3.9 Datenbanken 3 15.11.2005 13:49
Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
MYSQL Verwaltung Stümper Datenbanken 1 25.11.2004 10:10
Wie kann ich MySQL dazu vepflichten neue Datensätze immer... PHP Tipps 2004-2 7 16.11.2004 17:55
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
neue mysql tabelle per php erstellen PHP Tipps 2004 2 05.09.2004 16:02
[Erledigt] Mysql + fopen: zu löschende daten ermitteln PHP-Fortgeschrittene 2 16.08.2004 14:02
[Erledigt] PHP5 &a m p; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql struktur ändern, mysql neue id, mysql neuste id, mysql neue id ermitteln, mysql tabelle ändern, mysql struktur verändern, mysql struktur reihenfolge ändern, neuste ids aus datenbank mysql, mysql structur, struktur einer tabelle ändern php, mysql php neue id, mysql struktur bearbeiten, mysql tabellen structur überschreiben, mysql id ändern, mysql php neueid, mysql input struktur verändern, php sql struktur ändern, php mysql struktur bearbeiten, id von beitrag ändern php mysql, id ändern mysql

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:08 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.