Array und time Feld

Alles, was MySQL betrifft, kann hier besprochen werden.

Array und time Feld

Postby Peter R. » 16. February 2009 21:53

Hallo Zusammen!
Nutze phpMyAdmin 2.11.4 und habe drei Tabellen angelegt. Diese drei Tabellen enthalten einige numerische Felder sowie Zeitangaben (Feld „ time“ ). Diese drei Tabellen möchte ich gerne zu einer Tabelle zusammenfassen.

Über folgende Funktion werden die Datensätze aus den drei Tabelle ausgelesen :

$xlsJa = $_POST["Auswertungsjahr"];
$res = mysql_query( " select * from stunden_$name$xlsJa " );
$num = mysql_num_rows($res);
if ($num==0)
{
echo( "Datensätze für stunden_$name$xlsJa ausgelesen. <p>" );
echo ( "$num Datensätze gefunden <p>" );
}

Der nächste Schritt scheint aber nicht zu funktionieren. Die ausgelesenen Datensätze werden nicht über den nachfolgenden Befehl in eine übergeordnete Tabelle zusammengefasst:

while($dsatz = mysql_fetch_assoc($res))
{
$xlsJa = $_POST["Auswertungsjahr"];
$insert_query = " INSERT INTO `auswertung_stunden_$xlsJa`
( ` PersonalNr ` , ` Kostenstelle ` , ` SollStd ` ……. ) VALUES
( '$dsatz[PersonalNr]' , '$dsatz[Kostenstelle]' , '$dsatz[SollStd]' ……….. ) ";

if( mysql_query( $insert_query ) )
echo( " <p>" );
}

Es kommt komischerweise keine Fehlermeldung, wenn ich das Skript ausführe. Die neue Tabelle ist einfach nur leer. Könnte es damit zusammenhängen, dass ich keinen Index definiert habe?

Viele Grüße
Peter R.
Peter R.
 
Posts: 27
Joined: 20. March 2006 21:09

Re: Array und time Feld

Postby Nobbie » 16. February 2009 22:12

Peter R. wrote:Es kommt komischerweise keine Fehlermeldung, wenn ich das Skript ausführe.


Wieso "komischerweise"? Du fragst ja keine Fehlersituation ab und hast nirgends die Ausgabe irgendeiner Fehlermeldung programmiert. "Von alleine" meldet MySQL nichts, das mußt Du schon selbst einbauen( an Hand der Rückgabewerte).

Besonders falsch ist übrigens noch diese Abfrage:

Code: Select all
if ($num==0)
{
echo( "Datensätze für stunden_$name$xlsJa ausgelesen. <p>" );
echo ( "$num Datensätze gefunden <p>" );
}


Wenn $num gleich 0 ist, dann ist es 0. Dann wird (wenn überhaupt) "0 Datensätze gefunden" ausgegeben. Eine andere Zahl als 0 wirst Du nie zu Gesicht bekommen, wenn diese Meldung jemals erscheinen sollte.
Nobbie
 
Posts: 6584
Joined: 09. March 2008 13:04

Re: Array und time Feld

Postby Peter R. » 17. February 2009 19:26

Hallo Nobbie!
Danke für deine Rückmeldung.

Ist folgendes Skript OK, wenn es darum geht einen Rückgabewert zu bekommen?


Auslesen der Datensätze aus den drei Tabellen :

Code: Select all
$xlsJa = $_POST["Auswertungsjahr"];
$res = mysql_query( " select * from stunden_$name$xlsJa " ) or die("Insert Fehler: ". mysql_error()) ;
$num = mysql_num_rows($res) or die("Insert Fehler: ". mysql_error());



Weitergabe der Daten aus den Tabellen oben an die gemeinsame Tabelle:

Code: Select all
while($dsatz = mysql_fetch_assoc($res))
   {
$xlsJa = $_POST["Auswertungsjahr"];
$insert_query = " INSERT INTO `auswertung_stunden_$xlsJa`
( ` PersonalNr ` , ` Kostenstelle ` , ` Stundensatz ` , ` SollStd `  ……… ) VALUES
( '$dsatz[PersonalNr]' , '$dsatz[Kostenstelle]' , '$dsatz[Stundensatz]' , '$dsatz[SollStd]'  …..)" or die("Insert Fehler: ". mysql_error());
    } 
 }


Viele Grüße
Peter R.
Peter R.
 
Posts: 27
Joined: 20. March 2006 21:09

Re: Array und time Feld

Postby Wiedmann » 17. February 2009 19:47

Auslesen der Datensätze aus den drei Tabellen :

- Was passiert mit $num? BTW kannst du dir bei mysql_num_rows() das "or die()" sparen.
- Was ist $name für eine Variable?
- Ist das an dieser Stelle auch kein "Insert Fehler", sondern ein "Select Fehler".
- mysql_ real_ escape_ string() solltest du dir auch dringend anschauen.

Weitergabe der Daten aus den Tabellen oben an die gemeinsame Tabelle:

- Ist da irgendwie eine Klammer am Schluss zuviel.
- Mach ein "or die()" bei einer Stringzuweisung keinen Sinn. (da fehlt irgendwie ein mysql_query()).

Weiters hab ich mir das nicht angeschaut. Hab aber auch das Gefühl, dass du mit einem "INSERT ... SELECT" schneller zum Ziel kommen würdest.

PS: Das Forum hat einen "Code"-Button für solche Codesnippets.
PS: Wie kommt der Thread eigentlich zu diesem Titel?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Array und time Feld

Postby Peter R. » 19. February 2009 19:05

Hallo Zusammen!
Habe euren Rat befolgt. Mit Select und Insert bekomme ich die beiden Tabellen zusammengefasst. Bei den beiden ersten beiden Tabellen ist der Monat UNIQUE und bei der "zusammengefassten Tabelle" ist die PersonalNr. UNIQUE. Alle Datensätze aus den ersten beiden Tabellen mit Where = Monat werden in die dritte Tabelle übernommen - je nach Abfragemonat; sortiert nach PersonalNr.

Viele Grüße PR
Peter R.
 
Posts: 27
Joined: 20. March 2006 21:09


Return to MySQL

Who is online

Users browsing this forum: No registered users and 2 guests