Daten auslesen

"display:none;" wird in fast keinem Browser für Dateiuploadformulare beachtet (zumindest nicht in mir bekannten außer vielleicht in alten IE Versionen)

Also mein Firefox 2.0.0.11, Safari und der IE7 beachtet das bei mir sehr wohl.

Du, es bekommt die Key-Events durchaus noch. Der Cursor ist ja immer noch im Feld, du legst lediglich _danach_ etwas darüber. Wenn der User dann woanders hinklickt, muss man das entweder irgendwie abfangen oder hat Pech gehabt.

Ok, wenn man nur einen Div-Container oder so drüberlegt bekommt das Feld die Key-Events immer noch, das stimmt.
 
Um mal von den Zitaten in Zitatet in Zitaten und Disskusionen weg zu kommen.
1. Wie gesagt es hat mich nur interesiert. Habe nichts spezielles vor in diesem Sinne.

Allerdings hab ich jetzt schon wieder eine Frage^^
ist vllt eine ganz einfache antwort^^ Aber ich verstehs einfach ned^^
Also: Wie kann ich einen Datensatz aus MYSQL auf eine php Variable bringen?
so etwas:?

$sqlloginname = "SELECT loginname FROM zugang";
$resultloginname = mysql_query ($sqlloginname);
$loginname="$resultloginname";

echo $loginname;

$sqlpasswort = "SELECT passwort FROM zugang";
$resultpasswort = mysql_query ($sqlpasswort);
$passwort="$resultpasswort";

echo $passwort;


(habe die echos hingemacht um überhaupt mal zu schauen, was er sich da holt. Und das Problem ist, das er mir dann nicht die Daten die in der SQL drinsetehn zeigt, sondern nur Resource IDs.


Und wenn ich es so mache:

$sqlloginname = "SELECT loginname FROM zugang";
$resultloginname = mysql_query ($sqlloginname);
while ($row = mysql_fetch_object ($resultloginname))
{
echo....
}

dann kann ich sie ja nur anzeigen lassen. Aber wie setze ich die daten auf ein Variable meiner Wahl?
 
PHP:
$sql = "
    SELECT
        loginname
    FROM
        zugang
";

$res = mysql_query ($sql);

$loginNames = array();
while ($row = mysql_fetch_assoc($res) {
    $loginNames[] = $row['loginname'];
}

echo '<pre>';
print_r($loginNames);
echo '</pre>';

Du könntest das ganze so machen, Du bekommst von mysql_query() ein ResultSet zurück, welches Du mit mysql_fetch_assoc() usw. durchlaufen kannst.
 
Hi,

du hast die Daten bereits in einer Variable deiner Wahl.
Und zwar in diesem Fall in $row.
PHP:
$sqlloginname = "SELECT loginname FROM zugang";
$resultloginname = mysql_query ($sqlloginname);
while ($row = mysql_fetch_object ($resultloginname))
{
  $loginname = $row->loginname;
  // irgendwas mit der var machen ....
}

MfG

Edit: to late
 
{
$loginname = $row->loginname;
// irgendwas mit der var machen ....
} ?>

Kann ich mit der Variable dann nur innerhalb von der while schleife arbeiten, also von { bis }?
 
Hi,

bei PHP kannst du auch ausserhalb mit der Varible arbeiten, eigentlich ein unding.
Aber was soll man sagen, PHP is halt nen Krampf :D

MfG
 
Es ist wohl in jeder Programmiersprache so, dass man ausserhalb einer Schleife die Variablen noch benutzen kann.
Ich kenne jedenfalls keine, bei der es nicht so ist.

Ich würde an deiner Stelle lieber mal überlegen, bevor ich schreibe.
 
Original von adrian90
Ich würde an deiner Stelle lieber mal überlegen, bevor ich schreibe.

Sorry, aber die Frage ist, wer hier mal überlegen sollte, bevor er schreibt (und vor allem in welchem Ton er schreibt!)

In fast allen Programmiersprachen sind Variablen nur in dem Gültigkeitsbereich verfügbar, indem sie deklariert wurden.
Wenn du also in einer IF-Verzweigung oder in einer Schleife eine Variable deklarierst, ist sie außerhalb nicht erreichbar. Da man in PHP nicht einmal Variablen deklarieren muss, bevor man sie benutzt, ist da eben alles ein wenig anders, was manchmal nützlich, manchmal bedenklich ist...

Also: erst überlegen, bevor du andere Foren-Member hier kritisierst...
 
Wer definiert denn schon eine Variable innerhalb einer If-Abfrage.
Dies ist wohl fast nie der Fall.

Edit:
Achja, der Ton war vielleicht ein bisschen Barsch. Aber ich finde ihn angemessen. Denn so wie es klingt, hat System.I/O noch nie PHP benutzt. Denn ansonsten wüsste er, dass PHP sehr wohl strukturiert sein kann. Nur weil die Variablen bei der ersten zuweisung definiert werden...
 
Original von adrian90
Wer definiert denn schon eine Variable innerhalb einer If-Abfrage.
Dies ist wohl fast nie der Fall.

Ich denke beavisbee wollte darauf hinaus, dass sämtliche Variablen, die innerhalb eines Anweisungsblocks nicht explizit global deklariert werden, auch nur innerhalb dieses Blocks gültig sind und nach dem Verlassen des Blocks deallokiert werden -> nicht mehr ansprechbar sind.

Code:
//...

{ //anweisungsblock
    String lokalerString = "lalala";
    global String globalerString = "blablabla";
} //anweisungsblock wird verlassen

echo lokalerString; //gibt nichts aus / error: variable existiert nicht mehr
echo globalerString; //ausgabe: blablabla

Und das ist in den meisten Programmiersprachen so.
 
Achso
Ja OK aber die Schleifen und If-Abfragen werden ja nicht gleich geahndet wie einen Anweisungsblock. Ist es nicht so, dass die Variablen von ausserhalb auch in den Schleifen und If-Abfragen benützbar sind? Dort sind es doch keine "normalen" Blöcke.

Das einzige was mich an System.I/Os Aussage stört ist, dass PHP deswegen gleich schlecht ist, nur weil es dort nunmal ein bisschen anders ist.
 
Original von adrian90
Wer definiert denn schon eine Variable innerhalb einer If-Abfrage.
Dies ist wohl fast nie der Fall.

Edit:
Achja, der Ton war vielleicht ein bisschen Barsch. Aber ich finde ihn angemessen. Denn so wie es klingt, hat System.I/O noch nie PHP benutzt. Denn ansonsten wüsste er, dass PHP sehr wohl strukturiert sein kann. Nur weil die Variablen bei der ersten zuweisung definiert werden...
Es ist ja nicht nur die fehlende Deklaration der Variablen die PHP in MEINEN Augen zu einer "schlechten" Sprache macht.
Um mal nur ein paar Beispiele zu nennen:

- Keine richtige Typisierung der Variablen
- Kein konsequent durchgezogenes Exception handling
- Keine richtige Überladung von Methoden
- Schlechte Namensgebung und Strukturierung der Funktionssammlung
- Keine Namensräume (soll in PHP 5.3 implementiert werden)
- Kein Threading
- etc... ( bei Bedarf liefer ich gerne mehr)

Und hier die passende Literatur dazu.

MfG
 
Original von adrian90
Ja OK aber die Schleifen und If-Abfragen werden ja nicht gleich geahndet wie einen Anweisungsblock.

Ein Anweisungsblock ist einfach dass, was zwischen den geschweiften Klammern steht... (oder bei Pascal/Delphi eben zwischen BEGIN und END)

und bei
PHP:
if($foo=="bar")
{
  //do something
}
ist das, wo "//do something" drin steht demzufolge ein Anweisungsblock.


Original von adrian90
Ist es nicht so, dass die Variablen von ausserhalb auch in den Schleifen und If-Abfragen benützbar sind?
Klar; Variablen, die in einem übergeordneten Anweisungsblock deklariert wurden, sind in einem untergeordneten Anweisungsblock natürlich noch verfügbar. ABER NICHT UMGEDREHT! (außer bei PHP)



Original von adrian90
Wer definiert denn schon eine Variable innerhalb einer If-Abfrage.
Dies ist wohl fast nie der Fall.

Ich geh mal davon aus, dass du wahrscheinlich noch nicht sooo lang programmierst und noch keine größeren Projekte hattest, wo es auch auf Speicher-Optimierung und Sicherheit ankommt...

Variablen sollten stets so global wie nötig, aber so lokal wie möglich deklariert werden
Damit können sie nicht in einem Programm-Teil, in dem sie überflüssig sind, fälschlicherweise (oder auch böswilligerweise) manipuliert werden (oder wie im folgenden Beispiel andere Werte überschreiben) und außerdem belegen sie nur solange Arbeitsspeicher, wie sie wirklich benötigt werden.


kleines C++-Beispiel:
einmal den Ort der Deklaration nicht beachtet:
Code:
int i=5;
//Die Variable i ist 5 und wird auch noch später so benötigt

/* [jede Menge Code] */

//und irgendwo eine Zählschleife
for(i=0;i<=9;i++)
{
  // do something
}
/* [noch etwas Code] */

//und hier wird die alte Variable i benötigt
cout << "i hat den Wert " << i << endl;
// OH SCHRECK, i IST NICHT MEHR 5 SONDERN 10!!!!!

und einmal nach dem Leitsatz "so lokal wie möglich":
Code:
int i=5;
//Die Variable i ist 5 und wird auch noch später so benötigt

/* [jede Menge Code] */

//und irgendwo eine Zählschleife
for(int i=0;i<=9;i++)// hier wird i nochmal lokal deklariert und hat nichts mehr mit der oben deklarierten Variable i zu tun. Dieses i ist nur innerhalb der for-Schleife verfügbar...
{
  // do something
}
/* [noch etwas Code] */

//und hier wird die alte Variable i benötigt
cout << "i hat den Wert " << i << endl;
// und i ist noch immer 5, so wie gewünscht!



Ich finde PHP eine schöne Sprache, auch wenn die Einwände von System.I/O nicht ganz von der Hand zu weisen sind.

- wobei ich bei dem, was ich mit PHP so mache, nicht wüsste, wozu ich in einer Scriptsprache unbedingt Threads brauchen sollte...

- schlechte Namensgebung wüsste ich jetzt auch nicht, wo ich die finden sollte

- und die Tatsache, dass Variablen automatisch gecastet werden, finde ich auch nicht sooo schlimm (man kann ja z.B. mit is_int(), is_string(), is_array() etc. den Typ abfragen, um vor unerwünschter Eingabe zu schützen...)
 
Original von adrian90
Es ist wohl in jeder Programmiersprache so, dass man ausserhalb einer Schleife die Variablen noch benutzen kann.
...


Sofern du die Variable lokal ( in der Schleife o.ä) deklarierst, kannst du bei richtigen Programmiersprachen wie C/C++ oder Java definitiv vergessen ausserhalb des lokalen Bereiches auf die Variable zuzugreifen.
 
Zurück
Oben