Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Che Guevara


 Thema: MySQL Fragen
« vorherige 1 [2]
erste ungelesene Seite | letzter Beitrag 
Limbi

Arctic
Ehm. Benötige noch kurz Erklärung was CONSTRAINT `foo` macht... peinlich/erstaunt
22.11.2006 17:04:16  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Limbi

Arctic
Ok benötige nochwas andere von Euch zu wissen.

Threads, die in der Spalte "Sticky" eine 1 beinhalten, sollen zu oberst aufgelistet werden.
Allerdings habe ich ORDER BY bereits der ThreadID vergeben.

$res = mysql_query("SELECT * FROM Threads WHERE BID=".$HTTP_GET_VARS['BID']." ORDER BY 'ID'");

Jetzt müsste hier also Sticky noch ins Order hinein.
Kann ich das so lösen?
Also es müsste etwa so aussehen:
$res = mysql_query("SELECT * FROM Threads WHERE BID=".$HTTP_GET_VARS['BID']." ORDER BY 'ID', 'Sticky'");

Sticky müsste eine höhere Priorität haben als ID.
22.11.2006 21:07:13  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Smoking

AUP Smoking 09.09.2023
Dann schreib am besten 'Sticky' vor 'ID'. Du kannst jedem Feldnamen auch noch nen 'ASC' bzw. 'DESC' zuweisen.

Im übrigen ist
 
Code:
WHERE BID=".$HTTP_GET_VARS['BID']." 

gefährlich. Informier dich mal über SQL-Injections .
22.11.2006 23:12:14  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Limbi

Arctic
Wohooooo.
Genial!

Ne das ist schon ok mit HTTP_GET_VARS. Habe einige Checks im Header laufen, sodass schnell mal exit; ausgeführt wird.
23.11.2006 0:27:08  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Netbeater

snow
 
Zitat von Limbi

Wohooooo.
Genial!

Ne das ist schon ok mit HTTP_GET_VARS. Habe einige Checks im Header laufen, sodass schnell mal exit; ausgeführt wird.




nein das mit HTTP_GET_VARS ist so nicht in Ordnung. Welche PHP-Version verwendest du eigentlich? $_GET waere toll.
23.11.2006 0:59:59  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Limbi

Arctic
Meine Güte sag nicht dass es so nicht geht.
Seit 5 Jahren habe ich es mir angewöhnt, mit HTTP_GET_VARS zu arbeiten.

PHP Version 4.3
23.11.2006 1:38:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
unitrialer

Arctic
aber auch php entwickelt sich weiter...

mysql.com/constraint und in dem Zusammenhang zusätzlich vielleicht noch der Begriff "Referentielle Integrität".

Ich find $_GET eh viel hübscher
23.11.2006 10:02:21  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Limbi

Arctic
Hm ok dann gewöhn ich mir das um.

Nocheine wichtige Frage:

Ich sollte mit mysql_query("SELECT * From `Threads` WHERE BID=$bid") irgendwie überprüfen, ob die ThreadID (TID) in einer anderen Tabelle existiert oder nicht. Das heisst es müsste irgendwie so aussehen:
mysql_query("SELECT * From `Threads` WHERE BID=$bid && TID=TID in TABLE `ThreadsR`")

Wie stell ich das an?
23.11.2006 12:41:43  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
v!pe

Phoenix
mysql_query("SELECT *, ThreadsR.TID From Threads, ThreadsR WHERE BID=$bid && TID=ThreadsR.TID")

Müsste so gehen. Glaub ich. Nicht getestet und so weiter.
23.11.2006 13:45:01  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Limbi

Arctic
Hey.

Nein so hats leider nicht geklappt.
Aber ich habe das jetzt auf sehr unelegante Weise gelöst.

 
PHP:
$res = mysql_query("SELECT * FROM ThreadsR WHERE BID=".$BID." && UID=$uid");
$r=0;
while($row=@mysql_fetch_assoc($res)){
if($r>0){$checkline.= " OR ";}
$checkline .= "TID = ".$row['TID'];
$r++;}}
$res = mysql_query("SELECT * FROM Threads WHERE $checkline ORDER BY ID");

Breites Grinsen

Klar, es hat noch ein paar andere Checks drinnen, aber das Prinzip sieht so aus. Meint Ihr, das mysql_query() das bei 200 Threads noch mit macht?
Es geht ja darum, dass er nur die Threads ausspuckt, die gelesen sind, bzw. ungelesen sind. Die gelesenen Threads sind im ThreadsR gespeichert.
Bei der Funktion nur ungelesene Threasd anzeigen sieht das dann so aus.

 
PHP:
$res = mysql_query("SELECT * FROM ThreadsR WHERE BID=".$BID." && UID=$uid");
$r=0;
while($row=@mysql_fetch_assoc($res)){
if($r>0){$checkline.= " AND ";}
$checkline .= "TID != ".$row['TID'];
$r++;}}
$res = mysql_query("SELECT * FROM Threads WHERE $checkline ORDER BY ID");


Aber hey! Es funktioniert! Immerhin!
23.11.2006 21:14:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cheaterhossie

Cheaterhossie
*reinhusch*

*als allgemeiner MySQL Thread missbrauch*

Wie migriere ich am besten von 4.0 auf 5.0? Hab etz nen 4.0er Sarge am laufen, und die Daten sollen auf nen Gentoo (da is 5.0 stable). Wie krieg ich das jetzt wieder sauber in die DB rein?
23.11.2006 21:25:12  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Netbeater

snow
export->import?
23.11.2006 21:31:50  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cheaterhossie

Cheaterhossie
verschmitzt lachen
Es gab doch etliche Changes seit den Versionen? Klappt denn das problemlos?
23.11.2006 21:37:25  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Netbeater

snow
in der Regel wird Software so weiterentwickelt, dass diese abwärtskompatibel ist. Also ja, es sollte gehen.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Netbeater am 24.11.2006 12:22]
24.11.2006 12:22:06  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Habs einige male mit verschiedenen Datenbanken gemacht. Gab nie Probleme. Der bisherig geltene SQL-Syntax hat sich ja auch idR. nicht verändert.
24.11.2006 13:02:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[mathu]

Leet
 
Zitat von Limbi

Hey.

Nein so hats leider nicht geklappt.
Aber ich habe das jetzt auf sehr unelegante Weise gelöst.

 
PHP:
$res = mysql_query("SELECT * FROM ThreadsR WHERE BID=".$BID." && UID=$uid");
$r=0;
while($row=@mysql_fetch_assoc($res)){
if($r>0){$checkline.= " OR ";}
$checkline .= "TID = ".$row['TID'];
$r++;}}
$res = mysql_query("SELECT * FROM Threads WHERE $checkline ORDER BY ID");

Breites Grinsen

Klar, es hat noch ein paar andere Checks drinnen, aber das Prinzip sieht so aus. Meint Ihr, das mysql_query() das bei 200 Threads noch mit macht?
Es geht ja darum, dass er nur die Threads ausspuckt, die gelesen sind, bzw. ungelesen sind. Die gelesenen Threads sind im ThreadsR gespeichert.
Bei der Funktion nur ungelesene Threasd anzeigen sieht das dann so aus.

 
PHP:
$res = mysql_query("SELECT * FROM ThreadsR WHERE BID=".$BID." && UID=$uid");
$r=0;
while($row=@mysql_fetch_assoc($res)){
if($r>0){$checkline.= " AND ";}
$checkline .= "TID != ".$row['TID'];
$r++;}}
$res = mysql_query("SELECT * FROM Threads WHERE $checkline ORDER BY ID");


Aber hey! Es funktioniert! Immerhin!




Sehe ich das richtig?
Du hast eine Tabelle 'threadR', die speichert jeweils UID und TID von gelesenen Thread und eine Tabelle 'thread', die speichert die eigentlich Thread-Daten (TID, Erstellungsdatum, usw). Und jetzt willst du jeweils für eine bestimmt UID die schon gelesenen Threads haben (bzw. die ungelesenen, aber das wäre ja nur umgedreht).
Mit eine Join wäre die Sache doch ziemlich einfach:
 
PHP:
SELECT thread.TID, thread.title, thread.subtitle
FROM thread
LEFT JOIN threadr ON threadr.TID = thread.TID
WHERE threadr.UID = '1'
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [mathu] am 24.11.2006 13:45]
24.11.2006 13:28:44  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[Dicope]

[Dicope]
 
Zitat von Netbeater

in der Regel wird Software so weiterentwickelt, dass diese abwärtskompatibel ist. Also ja, es sollte gehen.

Ausnahme natürlich DirectX.

Wobei ich den Schritt gut verstehen kann. Irgendwann ist eine Software einfach gar und es ist programmiertechnisch unsinnig, den Fehler von vor drei Versionen explizit wieder einzubauen um Kompatibilität zu gewährleisten.
24.11.2006 14:33:19  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
SirSiggi

SirSiggi
Wenn es nur darum gegangen wäre, dann hätte man DX10 trotzdem für XP rausbringen können. mit den Augen rollend
24.11.2006 14:37:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[Dicope]

[Dicope]
Das ist klar.
24.11.2006 15:25:23  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
cyberschaf

AUP cyberschaf 26.11.2007
Hab ne dringende Frage: Wie schaffe ich es, von einer Datenbank xxx1 alle Daten direkt in Datenbank (noch leere Datenbank) save_von_xxx1 auf dem gleichen Server zu kopieren? Natürlich müsste man nachher auch alles wieder zurückkopieren können.
Habe leider mit Google nichts finden können.
Das ganze läuft bei mir auf dem localhost und wird auch nur im Intranet gelauncht, deswegen ist der Traffic im Prinzip wurst, brauche nur eine funktionierende Lösung.

Vielen Dank schon mal im Voraus!
26.11.2006 14:23:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
GarlandGreene

Mod GIGN
dump -> insert in neue DB?

Beim MSSQL kann man das über die GUI machen, beim MySQL würd ich nen Dump machen und den Datenbanknamen in der .sql-Datei ändern.
26.11.2006 14:53:21  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
cyberschaf

AUP cyberschaf 26.11.2007
Hätte noch dazuschreiben sollen, dass das ganze per PHP und MySQL funktionieren muss. Nen manuellen Dump zu machen, ist per Phpmyadmin zwar möglich, aber eher schlecht, da die Anwender davon möglichst nichts mitbekommen sollten.
Es sollen halt Speicherstände der Datenbank erstellt werden, damit man möglichst schnell wieder ursprüngliche Zustände wieder herstellen kann.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von cyberschaf am 26.11.2006 15:17]
26.11.2006 15:16:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
GarlandGreene

Mod GIGN
was bekommen die Anwender denn von einem Dump mit?

€: zu Wiederherstellungszwecken sind solche Backups natürlich nicht ganz geeignet, da sie sich wahrscheinlich nicht um laufende Transaktionen scheren. Da muss man dann mit Onlinebackups und Transaktionslogs arbeiten, um zu einem definierten und konsistenten Datenbankstand zurückkehren zu können. Soweit ich weiß, unterstützt MySQL auch das, allerdings weiß ich nicht, ob das auch in der CommunityEdition der Datenbank drin ist.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von GarlandGreene am 26.11.2006 15:26]
26.11.2006 15:23:50  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
cyberschaf

AUP cyberschaf 26.11.2007
Okay, ich erklär noch mal kurz, wo das Problem ist:

Es geht um ein Planspiel, bei dem auch mehrere Spiele parallel laufen sollen. Diese Spiele sind jeweils in einzelnen Datenbanken untergebracht und sollen halt die Möglichkeit bieten, resettet zu werden. Dies ist natürlich nur möglich, wenn man eine zweite Datenbank hat, die genau die Ursprungsdaten hat.
Allerdings bin der Admin nicht ich selber, sondern die Assistenten am Institut.
Außerdem muss man in der Testphase jedesmal mit den gleichen Werten und Parametern testen und da wäre es auch sehr nervig, jedesmal mit phpmyadmin SQL-Queries zu importieren, da die Oberfläche immer die gleiche sein soll.
In der Zeit, in der diese Datenbankcopies durchgeführt werden, ist auch gewährleistet, dass keinerlei Zugriffe auf die Datenbank passieren.


€: Problem gelöst: ich kopiere die Datenbanken einfach per xcopy hin und her.
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von cyberschaf am 26.11.2006 19:16]
26.11.2006 15:31:06  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
tr|Mork

tr mork
 
Zitat von GarlandGreene

dump -> insert in neue DB?

Beim MSSQL kann man das über die GUI machen, beim MySQL würd ich nen Dump machen und den Datenbanknamen in der .sql-Datei ändern.




Auch wenns etwas OffTopic ist: Bei MSSQL würde ich das in dem Fall aber nicht über die GUI machen, sondern mir einmal ein DTS-Package erstellen, dass dann nurnoch aufgerufen werden muss
27.11.2006 10:50:48  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Meister Zopf

meister_zopf
Obwohl dus schon gelöst hast:


Mit

 
Code:
SHOW TABLES


kriegst du ne Liste mit allen Tabellen.
Danach könntest du für jede Tabelle

 
Code:
CREATE TABLE save_von_db1.tablename AS SELECT * FROM tablename


aufrufen.
27.11.2006 10:57:35  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Limbi

Arctic
 
Zitat von [mathu]

 
PHP:
SELECT thread.TID, thread.title, thread.subtitle
FROM thread
LEFT JOIN threadr ON threadr.TID = thread.TID
WHERE threadr.UID = '1'




Hey danke!
27.11.2006 14:53:30  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: MySQL Fragen
« vorherige 1 [2]

mods.de - Forum » Webdesign & Coding » 

Hop to:  

Thread-Tags:
| tech | impressum