Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

PHP - MySQL Problem

  -1- -2- -3- vorwärts >>>  
SiiickBoy - 35
Experte (offline)

Dabei seit 09.2009
1175 Beiträge

Geschrieben am: 26.08.2010 um 13:45 Uhr
Zuletzt editiert am: 26.08.2010 um 13:46 Uhr

Hallo Leute,

ich hab ein Problem.

Und zwar habe ich eine Tabelle die ich gerne mit Hilfe von PHP sortiert in ein Textdokument übertragen möchte.

Die Tabelle ist folgendermaßen aufgebaut:

cid ; sid ; no ; data;

cid = User-ID
sid = User-Daten
no = Untergliederung der User-Daten
data = Inhalte

Also z.B. cid (1), sid (1), no (0) ist der Vorname von User 1
cid (1), sid (2), no (0) ist der Nachname
cid (2), sid (4), no (0) ist die Straße von User 2


Ich bekomme mit folgendem Script alle Daten angezeigt und in eine Textdatei geschrieben (jedoch nicht sortiert)

for ($i = 1; $i < 15; $i++) {

for ($j = 1; $j < 13; $j++) {




$abfrage = "SELECT * FROM tabellenname WHERE sid = $i AND cid = $j";
$ergebnis = mysql_query($abfrage);
while($row = @mysql_fetch_object($ergebnis))
{
echo "$row->data";

// Datensätze in Datei schreiben

$dateiname = "instrumente.txt";

$open = fopen ($dateiname, "a+");
fwrite ($open, $row->data);
fclose ($open);




}
echo "<br />";



}


echo "<br />";
echo "<hr />";


}


könnt ihr mir helfen?


http://www.mixcloud.com/Studio43/hanzmis sionstudio43_chilli_sunday_funf_viertel_ stunden_edit/

SiiickBoy - 35
Experte (offline)

Dabei seit 09.2009
1175 Beiträge

Geschrieben am: 26.08.2010 um 13:48 Uhr

Am besten wäre es, wenn ich jede einzelne "sid" einzeln abfragen könnte...aber das bereitet mir langsam echt Kopfschmerzen, weil ich nicht weiß wie ichs anstellen soll...

http://www.mixcloud.com/Studio43/hanzmis sionstudio43_chilli_sunday_funf_viertel_ stunden_edit/

scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 26.08.2010 um 13:53 Uhr
Zuletzt editiert am: 26.08.2010 um 13:54 Uhr

Versuchs mal mit dem Schlüsselwort Distinct im select um die SID eindeutig zu bekommen und dann nochmals nen select darauf

also SELECT DISTINCT sid FROM tabelle
scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 26.08.2010 um 13:56 Uhr
Zuletzt editiert am: 26.08.2010 um 13:57 Uhr

Es ist noch die frage, nach was du überhaupt sortieren willst??? gibt ja noch den SORT befehl bei nem select

EDIT: Natürlich nicht SORT sondern ORDER BY...
DER_SEXIST - 37
Profi (offline)

Dabei seit 05.2010
471 Beiträge
Geschrieben am: 26.08.2010 um 13:58 Uhr

Zitat von scw:

Versuchs mal mit dem Schlüsselwort Distinct im select um die SID eindeutig zu bekommen und dann nochmals nen select darauf

also SELECT DISTINCT sid FROM tabelle


DISTINCT bewirkt meiner Meinung nach aber nur, dass immer nur genau 1 Wert aus der Tabelle sid genommen wird... Also z. B. wenn der Wert in der Tabelle Hallo ist und Hallo in mehreren Datensätzen vorkommt, bewirkt DISTINCT, dass nur ein Datensatz bei welchem der Wert in sid "Hallo" ist ausgegeben wird... Die anderen werden ignoriert!
Greetz
scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 26.08.2010 um 13:59 Uhr

Zitat von DER_SEXIST:

Zitat von scw:

Versuchs mal mit dem Schlüsselwort Distinct im select um die SID eindeutig zu bekommen und dann nochmals nen select darauf

also SELECT DISTINCT sid FROM tabelle


DISTINCT bewirkt meiner Meinung nach aber nur, dass immer nur genau 1 Wert aus der Tabelle sid genommen wird... Also z. B. wenn der Wert in der Tabelle Hallo ist und Hallo in mehreren Datensätzen vorkommt, bewirkt DISTINCT, dass nur ein Datensatz bei welchem der Wert in sid "Hallo" ist ausgegeben wird... Die anderen werden ignoriert!
Greetz


Exakt... so hab ich auch seinen 2. Post verstanden, dass er es irgendwie so lösen könnte.
SiiickBoy - 35
Experte (offline)

Dabei seit 09.2009
1175 Beiträge

Geschrieben am: 26.08.2010 um 14:01 Uhr

Zitat von scw:

Es ist noch die frage, nach was du überhaupt sortieren willst??? gibt ja noch den SORT befehl bei nem select

EDIT: Natürlich nicht SORT sondern ORDER BY...


Ich möchte alle Inhalte von "sid 1" in eine Zeile der Textdatei... mit Trennzeichen wenn möglich...

Danach die von sid 2 in eine neue Zeile usw...


Also sid 1 z.B. hat cid 1-12, wobei bei cid die 3 z.B. 3 mal vorkommt... geburtstag, geburtsmonat und jahr...

http://www.mixcloud.com/Studio43/hanzmis sionstudio43_chilli_sunday_funf_viertel_ stunden_edit/

scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 26.08.2010 um 14:03 Uhr
Zuletzt editiert am: 26.08.2010 um 14:04 Uhr

Zitat von SiiickBoy:

Zitat von scw:

Es ist noch die frage, nach was du überhaupt sortieren willst??? gibt ja noch den SORT befehl bei nem select

EDIT: Natürlich nicht SORT sondern ORDER BY...


Ich möchte alle Inhalte von "sid 1" in eine Zeile der Textdatei... mit Trennzeichen wenn möglich...

Danach die von sid 2 in eine neue Zeile usw...


Also sid 1 z.B. hat cid 1-12, wobei bei cid die 3 z.B. 3 mal vorkommt... geburtstag, geburtsmonat und jahr...


Ich würde das Software- bzw. Datenbankdesign nochmals überdenken, wenn ich ehrlich bin! Gerade bei Geburtstag/Monat/Jahr könntet du eine Spalte nehmen und da einen Formatierten Zeitstempel oder sowas drin speichern.


EDIT: Und man sollte solche Magic Numbers möglichst vermeiden ;-)
Der666Diablo
Champion (offline)

Dabei seit 04.2006
23736 Beiträge

Geschrieben am: 26.08.2010 um 14:04 Uhr

Zitat von DER_SEXIST:

Zitat von scw:

Versuchs mal mit dem Schlüsselwort Distinct im select um die SID eindeutig zu bekommen und dann nochmals nen select darauf

also SELECT DISTINCT sid FROM tabelle


DISTINCT bewirkt meiner Meinung nach aber nur, dass immer nur genau 1 Wert aus der Tabelle sid genommen wird... Also z. B. wenn der Wert in der Tabelle Hallo ist und Hallo in mehreren Datensätzen vorkommt, bewirkt DISTINCT, dass nur ein Datensatz bei welchem der Wert in sid "Hallo" ist ausgegeben wird... Die anderen werden ignoriert!
Greetz
nein distinct bewirkt, das jeder wert nur einmal genommen wird,
also wensn zwei müllers gibt gibts nur eine ausgabe

Bei Geld, Sex und Kunst gibt es keinen abnehmenden Grenznutzen. http://shortlinks.de/oee9

SiiickBoy - 35
Experte (offline)

Dabei seit 09.2009
1175 Beiträge

Geschrieben am: 26.08.2010 um 14:05 Uhr

Zitat von scw:

Zitat von SiiickBoy:

Zitat von scw:

Es ist noch die frage, nach was du überhaupt sortieren willst??? gibt ja noch den SORT befehl bei nem select

EDIT: Natürlich nicht SORT sondern ORDER BY...


Ich möchte alle Inhalte von "sid 1" in eine Zeile der Textdatei... mit Trennzeichen wenn möglich...

Danach die von sid 2 in eine neue Zeile usw...


Also sid 1 z.B. hat cid 1-12, wobei bei cid die 3 z.B. 3 mal vorkommt... geburtstag, geburtsmonat und jahr...


Ich würde das Software- bzw. Datenbankdesign nochmals überdenken, wenn ich ehrlich bin! Gerade bei Geburtstag/Monat/Jahr könntet du eine Spalte nehmen und da einen Formatierten Zeitstempel oder sowas drin speichern.


Hehe... da geb ich Dir vollkommen Recht!
Leider wurde die Datenbank nicht von mir erstellt, sondern von einem CMS :)

http://www.mixcloud.com/Studio43/hanzmis sionstudio43_chilli_sunday_funf_viertel_ stunden_edit/

scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 26.08.2010 um 14:07 Uhr

SELECT * FROM tabelle ORDER BY cid, sid;

Gibt das nen Ergebnis, das dir gefällt?
DER_SEXIST - 37
Profi (offline)

Dabei seit 05.2010
471 Beiträge
Geschrieben am: 26.08.2010 um 14:08 Uhr

Zitat von Der666Diablo:

Zitat von DER_SEXIST:

Zitat von scw:

Versuchs mal mit dem Schlüsselwort Distinct im select um die SID eindeutig zu bekommen und dann nochmals nen select darauf

also SELECT DISTINCT sid FROM tabelle


DISTINCT bewirkt meiner Meinung nach aber nur, dass immer nur genau 1 Wert aus der Tabelle sid genommen wird... Also z. B. wenn der Wert in der Tabelle Hallo ist und Hallo in mehreren Datensätzen vorkommt, bewirkt DISTINCT, dass nur ein Datensatz bei welchem der Wert in sid "Hallo" ist ausgegeben wird... Die anderen werden ignoriert!
Greetz
nein distinct bewirkt, das jeder wert nur einmal genommen wird,
also wensn zwei müllers gibt gibts nur eine ausgabe


Also genau das, was ich gepostet habe ;-)
DER_SEXIST - 37
Profi (offline)

Dabei seit 05.2010
471 Beiträge
Geschrieben am: 26.08.2010 um 14:12 Uhr

Zitat von scw:

SELECT * FROM tabelle ORDER BY cid, sid;

Gibt das nen Ergebnis, das dir gefällt?


Den Ansatz finde ich nicht schlecht:

Ich würde es mal so versuchen...

SELECT * FROM tabelle ORDER BY ASC;

Das ASC bedeutet, dass die Datensätze aufsteigend ausgegeben werden...
Also von 1 aufwärts...


SiiickBoy - 35
Experte (offline)

Dabei seit 09.2009
1175 Beiträge

Geschrieben am: 26.08.2010 um 14:12 Uhr
Zuletzt editiert am: 26.08.2010 um 14:12 Uhr

Zitat von scw:

SELECT * FROM tabelle ORDER BY cid, sid;

Gibt das nen Ergebnis, das dir gefällt?


So bekomme ich ja alle Daten in der richtigen Reihenfolge angezeigt:

for ($i = 1; $i < 15; $i++) {

for ($j = 1; $j < 13; $j++) {




$abfrage = "SELECT * FROM table WHERE sid = $i AND cid = $j";
$ergebnis = mysql_query($abfrage);
while($row = @mysql_fetch_object($ergebnis))
{
echo "$row->data";



Aber leider muss ich es irgendwie hinbekommen, dass diese auch in meiner Textdatei so ausgegeben werden.
Also nicht alles in einer Zeile, sondern auch schön mit Leerzeichen und Absätzen getrennt (wenn ein neuer Datensatz anfängt)

http://www.mixcloud.com/Studio43/hanzmis sionstudio43_chilli_sunday_funf_viertel_ stunden_edit/

scw - 41
Experte (offline)

Dabei seit 09.2002
1836 Beiträge
Geschrieben am: 26.08.2010 um 14:13 Uhr

Zitat von DER_SEXIST:

Zitat von scw:

SELECT * FROM tabelle ORDER BY cid, sid;

Gibt das nen Ergebnis, das dir gefällt?


Den Ansatz finde ich nicht schlecht:

Ich würde es mal so versuchen...

SELECT * FROM tabelle ORDER BY ASC;

Das ASC bedeutet, dass die Datensätze aufsteigend ausgegeben werden...
Also von 1 aufwärts...



Afaik muss man doch noch ne Spalte beim ORDER BY angeben ;-) Wenn man übrigens kein ASC oder DSC angibt, wird per default ASC verwendet.
DER_SEXIST - 37
Profi (offline)

Dabei seit 05.2010
471 Beiträge
Geschrieben am: 26.08.2010 um 14:13 Uhr

Das ist schon ein ziemlicher "Hardmode", das übers TU-Forum zu lösen
  -1- -2- -3- vorwärts >>>
 

Forum / Bits und Bytes

(c) 1999 - 2025 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -