Re: Login-Daten eines Scriptes vergleichen

2001-05-19 Thread Rene Drescher-Hackel
Hallo Marian,

Marian Seitner [EMAIL PROTECTED] schrieb im Newsbeitrag
news:[EMAIL PROTECTED]
  Das Prinzip hab ich kapiert, aber wie komm ich an die besagte 0 oder 1
 ran?

 Ich habs jetzt geschafft mit  $return = mysql_fetch_row($res);  an den
Wert
 ranzukommen, er liegt dann in  $return[0]. Das ganze mach ich ohne
Schleife,
 da ja rein theoretisch nur einen Datensatz zurückgeliefert werden kann.
Ist
 es auch möglich, das Ergebnis mit mysql_fetch_array() abzufragen?

 Greets
  Marian


vom Prinzip schon, dann mit SELECT COUNT(*) AS Anzahl FROM...

$data = mysql_fetch_array($result))
   {
$anzahl=$data[Anzahl];


doch wozu? Meines Wissens nach müsste der Index schneller sein und Du
benötigst doch eh nur die Auskunft, ob ein Datensatz gefunden wurde oder
nicht. Wenn Du die Tatsache mit einkalkulierst, eventuell doppelte
Usereinträge vorzufinden, dann solltest Du Deine Tabelle(n) noch einmal
überarbeiten. Theoretisch macht es aber nur Sinn, Userdaten so zu speichern,
dass Duplikate ausscheiden.

Gruß

Rene




Re: Login-Daten eines Scriptes vergleichen

2001-05-19 Thread Rene Drescher-Hackel
Hallo,
Marian Seitner [EMAIL PROTECTED] schrieb im Newsbeitrag
news:[EMAIL PROTECTED]
  vom Prinzip schon, dann mit SELECT COUNT(*) AS Anzahl FROM...
 
  $data = mysql_fetch_array($result))
 {
  $anzahl=$data[Anzahl];
 ...
  doch wozu? Meines Wissens nach müsste der Index schneller sein und Du
  benötigst doch eh nur die Auskunft, ob ein Datensatz gefunden wurde oder
  nicht. Wenn Du die Tatsache mit einkalkulierst, eventuell doppelte
  Usereinträge vorzufinden, dann solltest Du Deine Tabelle(n) noch einmal
  überarbeiten. Theoretisch macht es aber nur Sinn, Userdaten so zu
 speichern,
  dass Duplikate ausscheiden.

 Hi Rene!

 Hast schon recht, doppelte User hab ich keine, mir gings lediglich um die
 Syntax, ich bin noch Neuling in Sachen MySQL.

 Ist es möglich, daß wenn ein Datensatz gefunden wurde ich auch die ID
dieses
 Satzes bekomme? Nachdem ich nämlich weiß, ob der User der ist der er
vorgibt
 zu sein, frage ich die Tabelle noch einmal ab um an die Rechte des Users
 heranzukommen, die ebenfalls in der selben Tabelle abgespeichert sind.

 Hiermit prüfe ich, ob die Daten korrekt sind

 $query = SELECT count(*) FROM $dbt WHERE name='$name' AND pass='$pass';
 $res = mysql_query($query, $db); $ret = mysql_fetch_row($res);

 Ergebnis ist dann in $ret[0].

 Dann mach ich die gleiche Abfrage nochmal, nur diesmal mit allen Angaben

 $query = SELECT * FROM $dbt WHERE name='$name' AND pass='$pass';
 $res = mysql_query($query, $db); $ret = mysql_fetch_array($res);

 Wie gesagt, ich würde gerne wissen ob die ID des Datensatzes schon bei der
 ersten Abfrage zurückgeliefert werden kann. Dann würde eine weitere Suche
in
 der kompletten Table entfallen. Oder kann man die zweite Abfrage evtl.
 einfacher gestalten?

 Gruß
  Marian

Dann ist die bisherige Vorgehensweise wieder nicht mehr empfehlenswert.

Du musst Dir immer eines von vornherein klar machen: Welche Infos möchte ich
von der DB haben - hier jetzt also:
a) ist der User vorhanden
b) stimmen die von ihm gemachten Angaben
c) welche Rechte sind dem User zugewiesen.

Unter diesen Voraussetzungen mit COUNT zu arbeiten ist einfach gesagt
Unsinn.
Du brauchst im Prinzip die Berechtigung des Users, also fragst Du diese
gleich ab.

In der Auswertung prüfst Du dann if(!$result) -hier hast Du also keinen
Datensatz gefunden - entsprechende Fehlermeldung an den Benutzer ausgeben
oder eine entsprechende Routine aufrufen.
andernfalls hast Du den Benutzer gefunden, jetzt kannst Du (wenn Deine
Berechtigungsspalte 'rechte' heißt) dann mit

$query = SELECT id, rechte FROM $dbt WHERE name='$name' AND pass='$pass';
$res = mysql_query($query, $db);
$ret = mysql_fetch_row($res);
$userid = $ret[0];
$recht = $ret[1];

die Berechtigung und ID  auslesen und entsprechend weiterverarbeiten.

Den von Dir beschriebenen Ansatz könnte man auch wählen, sollte man aber
nicht, da Du ja alle Infos schon mit EINER Abfrage bekommen kannst.


Gruß

Rene