Mitarbeiter Nr. vergeben

hikeda_ya

Erfahrenes Mitglied
Hallo Community,

ich weiss Ihr werdet mich gleich steinigen, da es eigentlich eine einfach Aufgabe ist - doch ich stehe mal wieder auf der Leitung.

Mein Problem:

ich habe mehrere Kundennummern (Firmen) die ja natürlich mehrere Mitarbeiter (Ansprechpartner) haben.

Ich habe die Kundennummern bereits vorhanden nun muss ich die Ansprechpartner der Jeweiligen Firma hochzählen.


Bsp:

Kunden-Nr. Ansprechpartner
xxxxx1 1
xxxxx1 2
xxxxx1 3
xxxxx2 1
xxxxx2 2
xxxxx3 1
xxxxx4 1
xxxxx5 1
xxxxx5 2

usw.

mit dem code
PHP:
$i = 1;

		while ($row = mssql_fetch_assoc($res)){

		$ins = sql ("update testnamen 
				set
				mitarbeiter_id = '".$i."'
		 	 	where firmen_id = '".$row['firmen_id']."'  ");
		
		$i++;

bekomme ich

firma anspr.
xxxxx1 1
xxxxx1 1
xxxxx1 1
xxxxx2 2
xxxxx2 2
xxxxx3 3
xxxxx4 4
xxxxx5 5
xxxxx5 5

wie muss ich das Umstellen
 
In Punkto Datenmodell

Tabelle 1 Firmen:
ID | Firma | usw...

Tabelle 2 Arbeiter:
ID | FirmenID | usw...

ID ist in beiden Tabellen autoincrement.

Abfrage Firma mit Angestellten:
select Firmen.Firma, Arbeiter.usw... from Firmen, Arbeiter where Firmen.ID = $ && Firmen.ID = Arbeiter.FirmenID;
somit gibst du die Firma plus deren Arbeiter aus.

zum hinzufügen von Arbeitern benötigst du die Firmen.ID zum updaten von Arbeitern benötigst du die Arbeiter.ID

PHP funktion zum updaten:
mysql_query($query);

Um die Verbindung zur Datenbank aufzubauen schau dir mal:
http://de.php.net/manual/de/function.mysql-connect.php an.
 
Das Datengerüst habe ich so

Tab1
Firmen_id, firma, str. usw

Tab2
firmen_id, Ansprechpartner , Ansprechpartner Nr. (Nr. in der Firmen_id), Ansprechpartner_id(=auto_incrment),

z.Bsp:

firma
muster GmbH
Ansprechpartner
Hr. Maier (Ansprechparnter-Nr. 1) , Ansprechpartner_id=1
Hr. Müller (Ansprechparnter-Nr. 2), Ansprechpartner_id=2

firma
test AG
Ansprechpartner
Fr. Kolb (Ansprechparnter-Nr. 1), Ansprechpartner_id=3
Hr. Schulze (Ansprechparnter-Nr. 2), Ansprechpartner_id=4


das folgende Script hat nur ein teilerfolg - er addiert einfach auf - er muss / soll aber bei jeder neuen Firmen_ID bei 1 anfangen.
PHP:
		$res = sql ("select * from testnamen
								order by firmen_id ");
		$neu = -1;			
		$i = 1;

		while ($row = mssql_fetch_assoc($res)){

			if ( $row['firmen_id'] != $neu ){
			
					if ($neu != -1 ){



		$ins = sql ("update testnamen 
										set
										mitarbeiter_id = '".$i."'
		 	 							where id = '".$row['id']."'  ");
		
		$i++;
		$neu= $row['firmen_id'];	
}}}

Spalten
firmen_id - mitarbeiter_id - vname - nname - anrede - titel - akad-Grad - funktion - Id
 
Zuletzt bearbeitet:
In seinem Beispiel wird aber der Mitarbeiter einer Firma zugeordnet. Allerdings kann dieser Mitarbeiter immer nur zu EINER Firma gehören. Wenn ein Mitarbeiter aber mehrere Firmen betreut, sieht das so aus:

FirmaID | Firmenname | etc.

MitarbeiterID | Vorname | Nachname

FirmaID | MitarbeiterID


Am besten siehst du dir hierzu mal die Normalisierung auf Wikipedia an.


Gruß Radhad
 
Die Daten sollen einen Kunden/Interessanten-Stamm anzeigen

d.h.

Mehrere Firmen (firmen_id)

und Mehrere Ansprechpartner in einer firma.

(Einkauf, Technik, Geschäftsführer, Inhaber usw)

ich muss jetzt jeden Ansprechpartner beim Kunden/Interessant durchnummerieren.

eine Allgemeine ID ist klar - nur benötige ich noch eine id für jede firmen_id

alle Daten stehen soweit nur möchte ich nicht 100.000 Ansprechpartner von hand durchnummerieren entsprechend ihrer Firmenzugehörigkeit.

Das Script sollte merken:

Neue firmen_id = Mitarbeiter_id wieder bei 1 anfangen hoch zu zählen bis eine neue firmen_id kommt

beispiel
PHP:
(neue firmen_id <> vorherigen firmen_id) = mitarbeiter_id = 1 ,
(neue firmen_id == vorherige firmen_id) = mitarbeit_id +1;


firmen_id - Mitarbeiter_id
1 - 1
1 - 2
1 - 3
2 - 1
2 - 2
3 - 1
4 - 1
5 - 1
5 - 2
5 - 3
5 - 4
5 - 5
5 - 6
5 - 7
6 - 1

usw
 
Zuletzt bearbeitet:
geschafft

wen es interessiert (warscheinlich umständlich abba )


PHP:
  include 'inc/config.php';

		$res = sql ("select * from testnamen
								order by firmen_id ");
		
		
		$i = 1;
		
		while ($row = mssql_fetch_assoc($res)){



			
			if ( $row['firmen_id'] == $alt ){
			
			$ins = sql ("update testnamen 
										set
										mitarbeiter_id = '".$i++."'
		 	 							where id = '".$row['id']."'  ");
		 	 	}						
		if ($row['firmen_id'] <> $alt ){
			$i = 1;
		$ins = sql ("update testnamen 
										set
										mitarbeiter_id = '".$i."'
		 	 							where id = '".$row['id']."'  ");
		 	} 	
		
		else {
			
		$ins = sql ("update testnamen 
										set
										mitarbeiter_id = '".$i."'
		 	 							where id = '".$row['id']."'  ");
		 	} 	
		$alt = $row['firmen_id'];
		
}
 
leider nein da ich ja erst die Nummern vergeben musste.

(um die Daten dann in einem Customer Relationship Management einbinden zu können)

Da braucht man die FirmenID und die MitarbeiterID zu der Firma (leider)
 
Zurück