php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.03.2005, 21:31  
Neuer Benutzer
 
Registriert seit: 21.02.2005
Beiträge: 26
msdose
Standard Abfrage aus mehreren Tabellen

Hi,

also ich verwende für eine Benutzerverwaltung zwei tabellen, users für Die Benutzerkonten und rights unter anderem für die Admin-rechte.

Tabellenaufbau:

Code:
`users` (
  `ID` int(11) NOT NULL auto_increment,
  `Nickname` varchar(40) NOT NULL default '',
  `Passwort` varchar(25) NOT NULL default '',

  ...
  
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `Nickname` (`Nickname`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

`rights` (
  `ID` int(11) NOT NULL auto_increment,
  `Userid` int(11) NOT NULL default '0',
  `Status` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Jetzt möchte ich die Nicknames und ID`s aus der users-tabelle abfragen, bei denen in der rights-tabelle der Status gleich 'Admin' ist. Die Einträge ID in users entsprechen dabei den Einträgen Userid in rights.

hoff mal mir kann jemand weiterhelfen.
msdose ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.03.2005, 21:48  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
SELECT users.ID as ID, users.Nickname as Nickname FROM users, rights WHERE rights.Userid = users.ID AND rights.Status='Admin'
axo ist offline   Mit Zitat antworten
Alt 10.03.2005, 21:55  
Neuer Benutzer
 
Registriert seit: 21.02.2005
Beiträge: 26
msdose
Standard

k thx, aber ich merk grad, das ich hier was vermehrt hab

ich will nämlcih die einträge zurückgegeben haben, wo Status nicht Admin ist oder wo gar kein Eintrag in users zu existiert.
msdose ist offline   Mit Zitat antworten
Alt 11.03.2005, 15:04  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

gut, dann mach's folgendermaßen:

1. mach in eine datenbank dummy-daten mit beispielhaften user-ids etc.
2. schreib dir auf, welche werte bzw. ID's du zurückbekommen willst.
3. schreib dir eine funktion, die das zurückgeben sollte, was du willst.
4. schreib dir eine testfunktion, die überprüft, ob die funktion genau diese werte zurückgibt oder nicht.
5. schreibe die ursprüngliche funktion so lange um, bis dein test nicht fehlschlägt.
6. lerne dabei.


beispiel:
PHP-Code:
<?php
error_reporting
(E_ALL);
function 
originalfunction() {
   
$sql 'SELECT id FROM users';
   return array();
}

function 
test_function() {
    
$testresult originalfunction();
    
$expected = array(1,2,3);
   if(
count($expected) != count($testresult)) {
     return 
false;
   } 
   foreach(
$expected as $v) {
      if(!
in_array($v,$testresult)) {
         return 
false;
    }
   } 
  return 
true;   

}

if(
test_function() === false) {
   echo 
'failed';
} else {
   echo 
'passed';
}

?>


... jetzt also originalfunction() so lange ummodeln und den query verändern, bis du die korrekten userIDs rausbekommst.
axo ist offline   Mit Zitat antworten
Alt 16.03.2005, 21:47  
Neuer Benutzer
 
Registriert seit: 21.02.2005
Beiträge: 26
msdose
Standard

hab mich nicht groß weiter mit deinem code beschäftigt, trotzdem danke.

dachte halt bloß, das es ja auch irgendwie direkt in SQL gehen müsste, php ist im vergleich zu sql ja recht langsam.

mein neuer code:

PHP-Code:
<?php
$admins
=array();
$sql_result=mysql_query("SELECT users.ID as ID FROM users, rights WHERE rights.Userid = users.ID AND rights.Status='Admin'");
while(
$sql_data=mysql_fetch_array($sql_result))
    
array_push($admins,$sql_data['ID']);
                                    
$sql_result=mysql_query("SELECT ID, Nickname FROM users");
while(
$sql_data=mysql_fetch_array($sql_result))
    if(
in_array($sql_data['ID'],$admins)==false)
        
$inhalt.='<option value="'.$sql_data['ID'].'">'.$sql_data['Nickname'].'</option>';
?>
msdose ist offline   Mit Zitat antworten
Alt 17.03.2005, 08:21  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard Re: Abfrage aus mehreren Tabellen

Zitat:
Zitat von msdose
Hi,

also ich verwende für eine Benutzerverwaltung zwei tabellen, users für Die Benutzerkonten und rights unter anderem für die Admin-rechte.

Tabellenaufbau:

Code:
`users` (
  `ID` int(11) NOT NULL auto_increment,
  `Nickname` varchar(40) NOT NULL default '',
  `Passwort` varchar(25) NOT NULL default '',

  ...
  
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `Nickname` (`Nickname`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

`rights` (
  `ID` int(11) NOT NULL auto_increment,
  `Userid` int(11) NOT NULL default '0',
  `Status` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Jetzt möchte ich die Nicknames und ID`s aus der users-tabelle abfragen, bei denen in der rights-tabelle der Status gleich 'Admin' ist. Die Einträge ID in users entsprechen dabei den Einträgen Userid in rights.

hoff mal mir kann jemand weiterhelfen.
...
k thx, aber ich merk grad, das ich hier was vermehrt hab

ich will nämlcih die einträge zurückgegeben haben, wo Status nicht Admin ist oder wo gar kein Eintrag in users zu existiert.
Ach Du suchst die, die man zu Admins machen kann, weil der User noch kein Admin ist? Dann verlinke links rum:
Code:
SELECT
  u.ID AS userid
FROM
  users AS u
  LEFT JOIN rights AS r
    ON u.ID=r.Userid
WHERE
  r.Status IS NULL
  OR r.Status<>'Admin'
__________________
Cheers, Marco
marsch ist offline   Mit Zitat antworten
Alt 17.03.2005, 10:25  
Neuer Benutzer
 
Registriert seit: 21.02.2005
Beiträge: 26
msdose
Standard

genau das, hmm hab ich mich wohl etwas undeutlich ausgedrückt

danke noch mal
msdose ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
abfrage auf gleiche Spalten aus zwei Tabellen maeck Datenbanken 13 08.07.2008 10:09
Abfrage mehrere Tabellen SteiniKeule Datenbanken 14 18.04.2008 19:57
abfrage über mehrere tabellen mit einer bedingung DarkThunder PHP Tipps 2007 6 15.04.2007 17:13
select mit inhalten aus mehreren Tabellen wurtzel Datenbanken 6 02.12.2006 17:37
Abfrage über 3 Tabellen madSoul Datenbanken 5 26.06.2006 12:25
Abfrage mehrerer Tabellen per PHP (Code vereinfachen) PHP Tipps 2007 4 18.12.2005 12:34
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
[Erledigt] Daten aus mehreren Tabellen holen Datenbanken 0 19.09.2005 17:14
problem bei ausgabe einer abfrage aus 2 Tabellen Lia PHP Tipps 2005-2 2 28.07.2005 17:30
[Erledigt] MySQL Abfrage aus mehreren Tabellen Datenbanken 1 12.04.2005 17:53
[Erledigt] Suche mit mehreren unterschiedlichen Tabellen Datenbanken 9 31.12.2004 17:39
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
2 Tabellen 1 Abfrage nilsfeld Datenbanken 6 11.08.2004 11:18
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34
SQL Abfrage aus mehreren Tabellen PHP Tipps 2004 7 26.07.2004 16:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php abfrage aus 2 datenbank mit verschiedenen passwörtern, mysql_query primary key zurückbekommen, primary key zurückbekommen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.