1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Zugriff auf allen auswahlhistorie

Dieses Thema im Forum "PHP" wurde erstellt von Henrigo007, 11. November 2016.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Henrigo007

    Henrigo007 Mitglied

    Auf meine Seite habe ich ich administrator und User und ich möchte mehr recht an der Administrator vergeben.
    mit der unterer SQL-Anfrage darf jeder Benutzer oder Administrator nur seine eigene Auswahlliste sehen.
    ich möchte gern, dass ein Administrator alle auswahlliste sehen kann, mit der name der Benutzer zu dem die Auswahlliste gehört

    ungefähr so
    Admin Auswahlliste
    2016.11.11 09:06:07
    Paul Auswahlliste:
    2016.10.23 12:45:34
    Raul Auswahlliste:
    2016.03.20 08:03:25

    so sieht meine Tabelle:

    Code (Text):
    1. CREATE TABLE `drucker` (
    2.   `id` int(11) NOT NULL,
    3.   `prod_id` int(11) NOT NULL,
    4.   `img_id` int(11) NOT NULL,
    5.   `img_path` varchar(256) NOT NULL,
    6.   `type` varchar(256) NOT NULL,
    7.   `user_id` int(11) NOT NULL,
    8.   `sessionID` varchar(256) NOT NULL,
    9.   `zeit` datetime DEFAULT NULL
    10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    11.  
    12.  
    13.  
    14.  
    15. CREATE TABLE `users` (
    16.   `user_id` int(11) NOT NULL,
    17.   `login` varchar(250) NOT NULL,
    18.   `pass` varchar(250) NOT NULL,
    19.   `role` varchar(256) DEFAULT NULL
    20. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    21.  
    22.  
    23.  
    24. <table style="margin-left:47%">
    25.         <tr>
    26.             <th><b>Ihre Auswalhistorie</b></th>
    27.         </tr>
    28.         <?php
    29.  
    30.         $history = $dbConnect->query('SELECT zeit, sessionID FROM drucker WHERE user_id = "' . $_SESSION['user_id'] . '" GROUP BY sessionID');
    31.  
    32.         while ($item = $history->fetch(PDO::FETCH_ASSOC)) { ?>
    33.         <tr>
    34.             <td style="background-color:#D8D8D8 ; text-align:center; border-bottom: 1px solid #015D12"><a href="index.php?session=<?php echo $item['sessionID'] ?>"><?php echo $item['zeit'] ?></a></td>
    35.         </tr>
    36.         <?php } ?>
    37.     </table>
    Danke für Ihre Vorschläge.
     
  2. cwriter

    cwriter Erfahrenes Mitglied

    Hi

    Ich verstehe nicht so ganz...

    Wenn es dir nur um die User IDs gehst, kannst du ja im Prinzip ein einfaches
    Code (Text):
    1. SELECT user_id, zeit FROM drucker
    machen und durch die Listen iterieren. Das beinhaltet dann auch andere Administratoren.
    Wenn du das ein bisschen genauer haben willst, gibt es SQL INNER JOIN:
    Code (Text):
    1. SELECT users.login, drucker.zeit FROM drucker INNER JOIN users ON drucker.user_id=users.user_id
    (ungetestet).

    Und wenn du dann andere Administratoren nicht sehen willst, gibt es
    Code (Text):
    1. SELECT users.login, drucker.zeit FROM drucker INNER JOIN users ON drucker.user_id=users.user_id
    2. WHERE users.role='user'
    Oder so ähnlich.

    Oder meinst du etwas anderes?

    Gruss
    cwriter
     
  3. lockcat

    lockcat Erfahrenes Mitglied

    Ich verstehe es etwas anders. Ich denke er möchte, dem Admin alle Daten ausgeben lassen & den User nur seine.

    Denke das lässt sich leicht lösen:
    PHP:
    1. if($_SESSION['role'] == 'admin')
    2. {
    3.     //alle Daten; Abfrage administrativ
    4.     $history = $dbConnect->query('SELECT zeit, sessionID FROM drucker GROUP BY sessionID');
    5.  
    6. } else {
    7.     //daten user
    8.     $history = $dbConnect->query('SELECT zeit, sessionID FROM drucker WHERE user_id = "' . $_SESSION['user_id'] . '" GROUP BY sessionID');
    9. }
    10.  
    11. ?>
    Wichtig ist jedoch, da ich es nicht weiß, sollte die role natürlich in einer Session gespeichert werden ferne was genau steht in der role? user | admin ? oder Zahlen?

    Liebe grüße
     
  4. Henrigo007

    Henrigo007 Mitglied

    Hallo Leute,

    tut mir leid, das ich mich nicht so gut auf deutsche ausdrucken kann,
    aber lockcat ist genau sowas, dass ich meine unter role steht admin und user.
    ist das möglich, dass der Admin alle auswahlliste mit dem login(steht benutzername) jede Benutzer sehen kann?
    wie Zum Beispiel:
    Admin Auswahlliste
    2016.11.11 09:06:07
    Paul Auswahlliste:
    2016.10.23 12:45:34
    Raul Auswahlliste:
    2016.03.20 08:03:25

    LG
     
  5. lockcat

    lockcat Erfahrenes Mitglied

    Wenn du dein Code mit diesem hier ersetzt sollte es so sein:


    PHP:
    1. <table style="margin-left:47%">
    2. <tr>
    3. <th><b>Ihre Auswalhistorie</b></th>
    4. </tr>
    5.  
    6. <?php
    7.  
    8. if($_SESSION['role'] == 'admin')
    9. {
    10.     //alle Daten; Abfrage administrativ
    11.     $history = $dbConnect->query('SELECT zeit, sessionID FROM drucker GROUP BY sessionID');
    12.  
    13. } else {
    14.     //daten user
    15.     $history = $dbConnect->query('SELECT zeit, sessionID FROM drucker WHERE user_id = "' . $_SESSION['user_id'] . '" GROUP BY sessionID');
    16. }
    17.  
    18. while ($item = $history->fetch(PDO::FETCH_ASSOC)) { ?>
    19. <tr>
    20. <td style="background-color:#D8D8D8 ; text-align:center; border-bottom: 1px solid #015D12"><a href="index.php?session=<?php echo $item['sessionID'] ?>"><?php echo $item['zeit'] ?></a></td>
    21. </tr>
    22. <?php } ?>
    23. </table>
    Gibt es die Session role überhaupt?
     
  6. cwriter

    cwriter Erfahrenes Mitglied

    Nein, du verstehst das gleich. Du verstehst nur anders, wo des TEs Problem liegt ;)

    Ja, wenn du den Nutzernamen nicht willst, geht es. Aber mit Nutzernamen wäre das dann eben mit SQL INNER JOIN.

    Also wenigstens würde ich dann nach nach User ID gruppieren...

    :-]
    *hust* Injection *hust*
    PDO ist vor allem dann nützlich, wenn man es auch entsprechend benutzt :)

    Gruss
    cwriter
     
    lockcat gefällt das.
  7. Henrigo007

    Henrigo007 Mitglied

    Ja es ist zwar richtig, wie du meinst, aber weisst man nicht welche liste gehört zu welchem User, dh kann ich leider keine login(benutzername) sehen, wie cwriter schon meinte muss ich mit INNEN JOIN .
    ich habe mich schon paar stunde gequält, leider nicht geschafft.
     
  8. cwriter

    cwriter Erfahrenes Mitglied

    Ja.

    Hier hast du einen Sack voll Mitleid. :rolleyes:
    Viel produktiver wäre es aber, wenn du uns deinen momentanen Code (in korrekten Codetags [code=php][/code] ) zeigen würdest, sagen würdest, was denn nicht funktioniert, ggf. was die Fehlermeldung ist und was momentan passiert und was das erwartete Verhalten gewesen wäre.

    Mit deinen momentanen Informationen kann ich mir kein Bild machen, die Glaskugel ist mir mal auf den Boden gefallen und in tausend Stücke zerborsten, und mein erstgeborenes Kind wollte ich dann doch nicht für eine neue opfern :-]

    Gruss
    cwriter
     
  9. Henrigo007

    Henrigo007 Mitglied

    so habe ich begonnen leider nicht geschafft
    PHP:
    1. SELECT d.*, u.* FROM drucker d INNER JOIN users u ON d.sessionID = u.login
     
  10. cwriter

    cwriter Erfahrenes Mitglied

    Ich bin mal ganz direkt: Ich verliere so langsam die Geduld. Das ist an sich nicht so schlimm, aber führt schlussendlich dazu, dass ich (und möglicherweise auch andere) keine Lust mehr haben, dir zu helfen.

    Der Deal ist eigentlich ganz einfach: Du lieferst uns gut dokumentierte Probleme oder auch einfach nur eine generelle Überlegung, und wir helfen dir, das Projekt zurechtzubiegen oder geben Inputs für generelle Überlegungen.
    Kleine Faustregel: 2 Zeilen sind in der Regel nicht genug, um ein Problem zu dokumentieren.

    Warum vergleichst du eine SessionID mit einem Nutzernamen? Was passt dir denn an dem Code nicht, den ich dir gegeben habe?
    Warum willst du jetzt alles in den Tabellen selektieren, statt einfach die Werte zu lesen, die du tatsächlich brauchst?
    Fehlermeldung? Was passiert? Was geht nicht?

    Gruss
    cwriter
     
    sheel gefällt das.
  11. Henrigo007

    Henrigo007 Mitglied

    leider klappt es immer noch nicht
    PHP:
    1. SELECT drucker.zeit, drucker.sessionID, drucker.user_id, users.login FROM drucker drucker
    2. INNER JOIN users users ON users.user_id = drucker.user_id
    3. GROUP BY drucker.sessionID
     
Die Seite wird geladen...
Status des Themas:
Es sind keine weiteren Antworten möglich.