Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MySQL Datumsabfrage

Empfohlene Antworten

hey ich bins schonwieder =) ... und auch wieder mit nem problem ^^

also in meiner MySQL datenbank wird das datum im format YYYY-MM-DD gespeichert und ich möchte das er jeden Monat der angegeben wurde nur einmal ausgibt


bsp:

Datensätze:

2009-01-21

2009-01-21

2009-01-21

2009-02-21

2009-03-21

2009-04-21


Ausgabe soll sein:

Januar

Februar

März 

April

einen ansatz habe ich schon... und zwar

SELECT MONTHNAME('2008-02-03');

bei der funktion übersetzt er immerhin die zahl in den Monatsnamen =) ... aber auch nur von dem datum was ich angegeben habe .. gibt es da irgendwie ne möglichkeit das zu machen?! ^^

ahh mit SELECT DISTINCT MONTHNAME(NAME_DES_FELDES) from TABELLE; gehts >< .. cool danke =)

und schon kommt das nächste problem O.o


	string query= "SELECT DISTINCT MONTHNAME(Datum) from verwaltung;";

	mysql_query(connectionDB, query.c_str());

	result=mysql_store_result(connectionDB);

	int daten = mysql_num_rows(result);

	for(int i=0; i < daten; i++){

	recordset_row=mysql_fetch_row(result);

        static const char* items[] = { recordset_row[0] , 0 };

        test->insertStrList( items );

	}

so hab ich das jetzt in QT3 geschrieben..die Monate sollen in einer ComboBox eingefügt werden was ich eigentlich damit mache:

        static const char* items[] = { recordset_row[0] , 0 };

        test->insertStrList( items );

und dadurch das ich auch "recordset_row=mysql_fetch_row(result);" in einer for schleife habe sollte er auch in die nächste zeile in der Datenbank springen .. aber er gibt mir nur 12 mal den selben monat aus... wenn ich aber vorher ein nur recordset_row[0] in der konsole ausgeben lasse funktioniert es ... also denk ich mal es liegt am einfügen in die ComboBox .. wie kann ich das vernünftig realisieren das es klappt?

omg >< ... naja hab static genommen weil es irgendwo stand ;p

aber vielen dank ^^

ich versteh es einfach nicht -.- habe ja soweit alles hinbekommen doch wenn ich das ausgewählte datum aus der combobox an einen mysql string übergeben will dann sagt er mir "Segmentation Fault"


QString ausgabejahr;

ausgabejahr = jahr1->currentText();

QString ausgabemonat;

ausgabemonat = monat1->currentText();


	string query= "SELECT * FROM verwaltung WHERE YEAR(Datum)="+ausgabejahr+" AND MONTH(Datum)="+ausgabemonat+";";

	mysql_query(connectionDB, query.c_str());

	result=mysql_store_result(connectionDB);

	int daten = mysql_num_rows(result);

	viewdata->clear();

	for(int i=0; i < daten; i++){

	recordset_row=mysql_fetch_row(result);

	new QListViewItem( viewdata, recordset_row[1], recordset_row[2], recordset_row[3], recordset_row[4], recordset_row[5], recordset_row[6], recordset_row[7], recordset_row[8] );

	}

aber da ist doch eigentlich alles richtig oder? hatte schon einiges auskommentiert um zu schauen wo der fehler liegt ... und der muss irgendwo im diesem bereich sein:

	string query= "SELECT * FROM verwaltung WHERE YEAR(Datum)="+ausgabejahr+" AND MONTH(Datum)="+ausgabemonat+";";

	mysql_query(connectionDB, query.c_str());

	result=mysql_store_result(connectionDB);

	int daten = mysql_num_rows(result);

ja ...hier nochmal alles was ich für die DB deklariert habe:


	MYSQL *connectionDB;

	MYSQL addDB;

	MYSQL_RES *result;

	MYSQL_ROW recordset_row;

	mysql_init(&addDB);

	connectionDB=mysql_real_connect(&addDB, "HOST", "Benutzer", "PW", "Datenbank", 0,0,0);

//edit: also dieser Segmentation Fault kommt erst wenn ich diesen slot im programm aufrufe

Bearbeitet von Angus131

also Debugger hab ich leider keinen >< ... aber ConnectionDB sollte eigentlich richtig sein... da es bei anderen funktionen ja geht .. habe gerade auch nochmal versucht "+ausgabemonat+" und "+ausgabejahr+" einfach mal durch zahlen zu ersetzten... dann gehts

Bearbeitet von Angus131

hab kein Debugger weil ich noch nie ein gebraucht hab =) .. und kenne auch auf anhieb keinen für QT ><

hab jetzt ConnectionDB auch nochmal umbenannt gibt aber immernoch den selben fehler

hab kein Debugger weil ich noch nie ein gebraucht hab =) .. und kenne auch auf anhieb keinen für QT ><
Das hat mit QT nichts zu tun. Du brauchst einen passenden Debugger für deinen Compiler.

hab jetzt ConnectionDB auch nochmal umbenannt gibt aber immernoch den selben fehler

Ist das denn eine globale Variable, oder was?

ich hab ConnectionDB bis jetzt in jeder funktion neu deklariert >< .. muss ich aber noch ändern das es global ist ...aber mir ist mal was aufgefallen .. ich hatte das ja schonmal alles gemacht nur war das etwas umständlicher ^^ .. und da hab ich diese 2 strings verwendet:


	QString jahrstring;

	QString monatstring; 

	jahrstring = jahr1 -> text();

	monatstring = monat1 -> text();

und jetzt mach ich das so:

	QString ausgabejahr;

	ausgabejahr = jahr1->currentText();

	QString ausgabemonat;

	ausgabemonat = monat1->currentText();

kann es vllt am "->text();" liegen? und wenn ja wie kann ich das machen?

ich hab ConnectionDB bis jetzt in jeder funktion neu deklariert >< ..
D.h. du machst in jeder Funktion eine neue Verbindung auf? Oder wie initialisierst du ConnectionDB? Lass dir doch nicht alles aus der Nase ziehen.

muss ich aber noch ändern das es global ist ...
Das ist eher schlechter Stil.

kann es vllt am "->text();" liegen? und wenn ja wie kann ich das machen?
Aus deinen kleinen Codeschnipseln kann man das kaum ablesen. Es wäre wirklich gut, wenn du einen Debugger benutzen würdest.

ja ich mach in jeder funktion ne neue verbindung auf ... aber warum ist es schlecht die verbindung global ist? und was für ein Debugger soll ich benutzen?! >< ... hab hier ubuntu drauf und das einzigste was ich installiert hab für QT ist der QT3 Assistant QT3 Designer und QT3 Linguist compilieren mach ich mit den 3 befehlen:

qmake -project

qmake

make

(falls das hilft)

wobei ich aber den Designer und Linguist nicht benutze

ich hab den fehler gefunden... und zwar bei der Monatsabfrage... und zwar fragt er nach dem namen und nicht nach der zahl ... kann man den befehl SELECT DISTINCT MONTHNAME(Datum) from verwaltung; denn noch umdrehen?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.