tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
753
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Dec 2001
    Beiträge
    4.791
    Sevus ich stehe hier grade vor einem Problem und gehe davon aus, dass es mit meinen momentan vorhandenen Tabellen in der MySQL DB so nicht funktionieren kann, da ich in MySQL bisher noch keine explode() ähnliche Funktion gefunden habe.

    Also folgende Situation:
    - Zwei Tabelle (mitarbeiter und projektbereiche)
    - In der Tabelle projektbereiche gibt es eine Spalte leader_id, in der die ID des leitenden Mitarbeiters gespeichert wird. Der Haken an der Sache: Dies können auch mehrere Mitarbeiter sein, dann werden die ID's durch | getrennt. Ein Beispieleintrag könnte also sein 3|6|14
    - Es sollen alle Daten aus der mitarbeiter Tabelle geholt werden, wo die ID eine der in mitarbeiter.leader_id gespeicherten ist.


    Sollte nicht gehen oder ? Da MySQL die | nicht umsetzen kann, oder täusche ich mich da jetzt ?

    Wenns nicht geht sagts ruhig, ich hab halt meine Sachen hier dumm angelegt und nicht weit genug im Vorraus geplant. Aber ich dachte evtl. hat doch noch jemand eine Idee und ich kann mir den Gang nach Canossa ersparen

    mfG
    Tim
     

  2. #2
    Registriert seit
    Jul 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    2.135
    Wenn MySQL Subselect könnte, dann könnte man dran drehen aber so : Nee

    Die Abfage in zwei Stufen machen:

    PHP-Code:
    $erg mysql_query("select  replace(leader_id,"|",",") from projektbereiche where .......",$sqllink);
    $row mysql_fetch_row($erg);
    $erg mysql_query("select * from mitarbeiter where  leader_id in (".$row[0].")",$sqllink); 
     

  3. #3
    Avatar von eLorFiN
    eLorFiN eLorFiN ist offline einfach rob
    Registriert seit
    Apr 2003
    Ort
    Rüsselsheim
    Beiträge
    171
    Da wir uns in PHP befinden, würde ich das ganze einfach exploden, also sowas in der art:

    PHP-Code:
    //...mysql abfragen blabla

    //Die IDs der Projektleiter sind in $result['leiter'] gespeichert.
    $lid explode("|",$result['leiter']);
    $anz_lid count($lid);
    echo 
    "$anz_lid Personen leiten dieses Projekt.<p>Die Namen:";
    for(
    $i;$i<$anz_lid;$i++)
    {
     
    $name  mysql_fetch_row(mysql_query("select name from Mitarbeiter where ID={$lid[$i]}'"));
     echo 
    "$name[0].<br>";

    Sollte so klappen...

    Der Code ist frei Hand geschrieben und hat keinen Anspruch auf Richtigkeit!


    [edit]
    Ich habe mir nochmal deine Frage angeschaut und nuja, eigentlich denke ich,dass du einfach mysql die Funktion des Datenspeichers geben solltest und die Bearbeitung auf PHP erfolgen lassen solltest, wie du es in deinem Post eigentlich schon sagst.
    Wenn die Datenbank das Problem hat,dass sie das Zeichen | nicht lesen/speichern kann, aus welchem Grund auch immer, kannst du ja auf ein anderes Trennzeichen,welches nicht zwangsläufig aus einem Zeichen bestehen muss, zurückgreifen.
    [/edit]
    Geändert von eLorFiN (20.10.03 um 19:53 Uhr)
     
    Who controls the past controls the future. Who controls the present controls the past.
    - George Orwell, 1984

  4. #4
    Registriert seit
    Dec 2001
    Beiträge
    4.791
    Wenn die Datenbank das Problem hat,dass sie das Zeichen | nicht lesen/speichern kann, aus welchem Grund auch immer, kannst du ja auf ein anderes Trennzeichen,welches nicht zwangsläufig aus einem Zeichen bestehen muss, zurückgreifen.
    Klar kann der das speichern. Was ich meinte war, dass MySQL keine interne explode Funktion hat. Eine integrierte Substring Funktion z.B. gibt es ja. Das war der Ansatzpunkt
    Naja werde mir das ganze morgen früh auffer Arbeit nochmal zu Gemüte führen.
     

  5. #5
    Registriert seit
    Dec 2001
    Beiträge
    4.791
    Ich glaubs echt nicht.

    Jetzt sitz ich hier wieder vor meinem Code, aber glaubt ihr mir würde noch einfallen, wozu ich das brauchen wollte ?

    Man man man. Ich muss echt anfangen strukturierter zu arbeiten oder nochmehr PostIts und ToDo Listen an die Wand zu nageln.
     

  6. #6
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Leuchte hier sollte deine Datenbank Struktur mehr normalisiert werden.

    Tabelle projekte
    p_id
    andere
    Spalten

    Tabelle Leader
    l_id,
    name,
    email
    ...

    Tabelle projekt_leader
    p_id,l_id


    so kannst du du alle Leader mit
    select l_id from projekt leader where p_id = ".$projekt_id

    herausziehen. Oder gleich
    select Leader.name,Leader.email,projekte.andere from Leader, projekte, projekt_leader where leader.l_id = projekte_leader.l_id and projekte.p_id = ".$projektid

    <- So oder so ähnlich, bin nicht gerade ein SQL Junky
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 17.12.11, 19:52
  2. Verzweifle: Wiso geht dass nicht
    Von DelphiDell im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 19.02.06, 18:32
  3. Bitte Hilfe Formular mit Radiobutton geht nicht
    Von maxime im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 12.04.04, 16:35
  4. Antworten: 16
    Letzter Beitrag: 21.03.03, 13:52