SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 28.05.2016, 21:37:46
Fake Fake ist offline
Anfänger
 
Registriert seit: May 2016
Alter: 30
Beiträge: 33
Kleines Problem mit Schleifen / DB auslesen

Hallöchen,

ich arbeite gerade am Gruppen & Rechte System meines Panels.
Es ist relativ simpel aufgebaut, es enthält eine Aufteilung in Gruppen,
Gruppen-Rechte, die Rechte selbst und zugewiesene Nutzer-Gruppen.

Schließlich habe ich unter Gruppen-Rechte noch einen negate Wert
eingeführt, der dafür sorgt, dass dieses Recht in allen Gruppen für
den jeweiligen Nutzer entzogen wird.

Und genau an dieser Stelle hadere ich etwas mit den Schleifen...
Wohl eher ein kleines Logikproblem.

---

Tabellenstruktur (aktuelles Beispiel)

group_rights
group_id | right_id | negate
1 | 20 | 0
1 | 30 | 0
1 | 40 | 1
2 | 20 | 0
2 | 30 | 1
2 | 40 | 0

---

In meinem Beispiel ist der Nutzer gleichzeitig in Gruppe 1 & 2.
Er hat die Rechte mit der ID 20, 30 und 40, wobei doppelte
Einträge natürlich gelöscht werden.

Das Problem besteht darin zu ermitteln, dass alle Rechte auch
doppelte, die ein negate Wert haben gelöscht werden sollen.

In meinem Beispiel werden folgende Rechte gelöscht:

1 | 40
2 | 40
1 | 30
2 | 30

Die Daten werden per while Schleife in ein Array geworfen und
sollen dort direkt aussortiert werden und da ist das Problem.

---

In welcher Form kann ich folgendes erreichen?

- Lösche alle (gleichen) right_id das 1 oder mehrere ein negates hat

---

Doppelte Einträge lösche ich später mit array_unique().
Aber die erwähnte Frage ist gerade bisschen schwierig.
Mit Zitat antworten
  #2  
Alt 29.05.2016, 12:13:59
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Kleines Problem mit Schleifen / DB auslesen

Hallo und willkommen hier im Forum.


Zitat:
Zitat von FakE Beitrag anzeigen
[..]
- Lösche alle (gleichen) right_id das 1 oder mehrere ein negates hat
Kannst Du den Satz nochmal prüfen bzw. ein eine besser verständliche Form bringen?
Hier handelt es sich wohl eher um eine MySQL Fragestellung - oder?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3  
Alt 29.05.2016, 12:47:45
Fake Fake ist offline
Anfänger
 
Registriert seit: May 2016
Alter: 30
Beiträge: 33
AW: Kleines Problem mit Schleifen / DB auslesen

Gern.

http://www.forum-hilfe.de/attachment.php?attachmentid=4193&d=1464486290

Dies ist eine aktuelle Darstellung der Tabelle Gruppen-Rechte.

User A ist gleichzeitig in Gruppe 1 und 2.
Im Query werden auch lediglich die Gruppen abgefragt, in der
User selbst ist. "WHERE `group_id` IN (1,2)"

Nun nochmal die verständlichere Erklärung.
Folgendes ist anhand des Screenshots zu sehen:

User A

Gruppe 1 - Recht 20 - negate 1
Gruppe 1 - Recht 40 - negate 0
Gruppe 2 - Recht 20 - negate 0
Gruppe 2 - Recht 30 - negate 0
Gruppe 2 - Recht 40 - negate 1

Alle Rechte (auch wenn sie doppelt vorhanden sind) werden dem
User A zugewiesen.

Ich möchte nun, dass alle Rechte mit negate 1 gelöscht werden,
allerdings nicht aus der Tabelle, sondern aus dem Array, dass alle
Informationen aus der Tabelle gesammelt hat.

Das an sich ist nicht weiter kompliziert.

ABER

Ich möchte auch alle Recht mit gleicher ID löschen, bei dem eben
eines ein negate 1 hat.

Das heißt im Endeffekt User A soll folgende Recht haben, die im
Array gesichert sind (die Struktur ist mir egal).

Gruppe 1 - nix (Recht 20 & 40 sind negiert durch Gruppe 1 selbst oder Gruppe 2)
Gruppe 2 - Recht 30

Mehr Rechte hat der User in diesem Beispiel nicht, da alle doppelten
Rechte entfernt werden, wenn min. 1 oder mehrere negiert sind.
Mit Zitat antworten
  #4  
Alt 29.05.2016, 13:02:45
Fake Fake ist offline
Anfänger
 
Registriert seit: May 2016
Alter: 30
Beiträge: 33
AW: Kleines Problem mit Schleifen / DB auslesen

Ich entschuldige mich für meine komplizierte Ausdrucksweise.
Ein letzter vereinfachter Versuch:

http://www.forum-hilfe.de/attachment.php?attachmentid=4193&d=1464486290

Diese Tabelle wird in einem assoziativen Array gespeichert.
Zu beachten ist, dass der User nur in Gruppe 1 und 2 ist. ("WHERE `group_id` IN (1,2)")
Die Struktur:

PHP-Code:
array (size=5)
  
=> 
    array (
size=2)
      
'right' => int 20
      
'negate' => int 0
  1 
=> 
    array (
size=2)
      
'right' => int 30
      
'negate' => int 0
  2 
=> 
    array (
size=2)
      
'right' => int 20
      
'negate' => int 1
  3 
=> 
    array (
size=2)
      
'right' => int 40
      
'negate' => int 0
  4 
=> 
    array (
size=2)
      
'right' => int 40
      
'negate' => int 1 
Ich möchte nun, dass alle Einträge, die die selbe Rechte ID haben und
bei denen 1 oder mehrere negate Werte 1 sind, gelöscht werden. Also
übrig bleiben dürfte nur noch folgender Teil:

PHP-Code:
array (size=1)
  
=> 
    array (
size=2)
      
'right' => int 30
      
'negate' => int 0 
Dafür benötige ich Hilfe... :/
Mit Zitat antworten
  #5  
Alt 29.05.2016, 13:08:12
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Kleines Problem mit Schleifen / DB auslesen

Bekomme ich nicht angezeigt, da ich in diesem Forum nicht angemeldet bin.

Wie/womit erstellt Du das Array?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #6  
Alt 29.05.2016, 13:13:12
Fake Fake ist offline
Anfänger
 
Registriert seit: May 2016
Alter: 30
Beiträge: 33
AW: Kleines Problem mit Schleifen / DB auslesen

Aktuell sieht die Funktion so aus:

PHP-Code:
$result mysqli_query($this->SQLid"SELECT * FROM `group_rights` WHERE `group_id` IN (" $this->getGroupData('id') . ")");
                
                if(
mysqli_num_rows($result) != 0)
                {
                    
$result_rights mysqli_query($this->SQLid"SELECT * FROM `rights`");

                    while(
$col mysqli_fetch_assoc($result))
                    {
                        
$rights[] = array( "right" => intval($col['right_id']), "negate" => intval($col['negate']) );
                    } 
$this->getGroupData('id') - erzeugt 1,2
Mit Zitat antworten
  #7  
Alt 29.05.2016, 13:38:18
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Kleines Problem mit Schleifen / DB auslesen

Versuche es mal hiermit (ungetestet aus Ermangelung an Testdaten): bzw. nimm es als Anregung wie als gehen müsste:
PHP-Code:
$result mysqli_query($this->SQLid
                       
"SELECT * FROM `group_rights` 
                                 WHERE `group_id` IN (" 
$this->getGroupData('id') . ") AND 
                                       `group_id` NOT IN (SELECT `group_id` FROM `groups_right` 
                                                                            WHERE `negate` = 1)"
); 
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #8  
Alt 29.05.2016, 13:50:32
Fake Fake ist offline
Anfänger
 
Registriert seit: May 2016
Alter: 30
Beiträge: 33
AW: Kleines Problem mit Schleifen / DB auslesen

Gibt leider gar nichts mehr aus.
Das Resultat ist null.

Ich habe auch den Tippfehler "groups_right" in "group_rights" gefixt und trotzdem null.

---

Wie gesagt, der User ist bsp. in 2 Gruppen.
Alle Gruppen-Rechte auch selbige IDs werden im Array zusammengetragen.

Alle Array Einträge mit selbiger Rechte ID, bei der min. eines davon ein negate 0
hat, sollen aus dem Array gelöscht werden, wenn es nicht möglich ist, dass gleich
mit SQL auszusortierungen.
Mit Zitat antworten
  #9  
Alt 29.05.2016, 13:56:39
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Kleines Problem mit Schleifen / DB auslesen

Dann nimm mal die beiden Teile von WHERE und frage sie einzeln - ohne das Haupt-SELECT - ab.
Was kommt dabei raus?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #10  
Alt 29.05.2016, 14:02:36
Fake Fake ist offline
Anfänger
 
Registriert seit: May 2016
Alter: 30
Beiträge: 33
AW: Kleines Problem mit Schleifen / DB auslesen

Ja dieser Art von Query bewirkt, dass alle Einträge, die negate 1
haben direkt aussortiert werden und nicht angezeigt werden.

Das nützt mir aber nichts, denn ich möchte ja ebenfalls alle Rechte
aussortieren, die negate 0 haben, aber die gleiche Rechte ID wie das
Recht, das negate 1 hatte.

Der Sinn dahinter ist, dass ein Nutzer bsp. in einer Hauptgruppe ist, die
viele Rechte hat und eine Subgruppe erhalten, die ein negate Recht hat,
dass dann alle Rechte mit gleicher ID, die der User von allen Gruppen hat
in der er ist, aussortiert.


Zu Verdeutlichung können wir uns auch gern mal in TeamSpeak oder Discord
unterhalten. Vielleicht kann ich es dir da verständlicher zeigen.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Menue auslesen, xx while schleifen ganjapipe MySQLi/PDO/(MySQL) 5 03.11.2008 20:46:08
Problem mit Highscore auslesen Bogi PHP Grundlagen 8 10.01.2007 12:45:27
Kleines Problem mit + und - Pommes2 PHP Grundlagen 5 17.11.2004 09:38:06
Problem beim auslesen einer .txt mit pdftotext unter Linux erstellt wurde kruschde PHP für Fortgeschrittene und Experten 0 11.11.2004 13:51:59
Kleines replace Problem don_raphael PHP Grundlagen 6 02.08.2003 11:10:31


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:36:21 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt