OffTopic: money-island.eu lehrt PHP

money-island.eu

gib mir rotes
9 November 2006
180
9
PHP:
$id2="";
$id3="";
$id5="";
$id10="";
$id_komplett="";
$sql1=sql_query("SELECT id FROM " . $prefix . "_test");
while($res1=sql_fetch_array($sql1)) {
    switch($res1['id']) {
        case 2: $id2++; break;
        case 3: $id3++; break;
        case 5: $id5++; break;
        case 10: $id10++; break;
    }
    $id_komplett++;
}
 
@money-island.eu:
Was soll bitte ""++ sein ? :hö:
 
Ähm.. was meinst du?
Und du denkst viele hier haben nicht viel Ahnung von PHP?
Ich wette mit dir theHacker hat mehr Ahnung von PHP als du...

Du wettest mit den Kenntnissen anderer Leute ? Klingt für mich aber nicht überzeugend.....

Wenn Hacker so gut sein soll, müsste er wissen, das die Syntax von PHP an C angelehnt ist ... wenn er jetzt aber fragt, was das ++ soll....scheint er nicht viel Ahnung zu haben.
 
...Erkläre mir mein Code-Beispiel mit deinen PHP-Kentnissen
das ist eigentlich nicht möglich, da es eben total unlogisch ist

PHP:
$id2=""; //Zuordnung eines leeren Strings
$id3=""; //Zuordnung eines leeren Strings
$id5=""; //Zuordnung eines leeren Strings
$id10=""; //Zuordnung eines leeren Strings
$id_komplett=""; //Zuordnung eines leeren Strings
$sql1=sql_query("SELECT id FROM " . $prefix . "_test"); //nehmen wir mal an, das ist eine selbstdefinierte Funktion würde hier eine ID-Abfrage versucht
while($res1=sql_fetch_array($sql1)) { //siehe sql_query
    switch($res1['id']) { //Entscheidung, was steht $res['id'] (immerhin id in Hochkommas)
        case 2: $id2++; break; //Erhöhung eines leeren Textes mit 1?! WTF?
        case 3: $id3++; break; //Erhöhung eines leeren Textes mit 1?! WTF?
        case 5: $id5++; break; //Erhöhung eines leeren Textes mit 1?! WTF?
        case 10: $id10++; break; //Erhöhung eines leeren Textes mit 1?! WTF?
    }
    $id_komplett++; //Erhöhung eines leeren Textes mit 1?! WTF?
}
und nichts anderes sagt
...Was soll bitte ""++ sein ? :hö:
aus

Schalt doch einfach mal paar Warnings ein und dann ... :ugly:

Kurzum: Was passiert, wenn man kein PHP hätte, welches glücklicherweise von selbst versucht den richtigen Datentyp zu finden?

Korrekterweise müsste es so heißen:
PHP:
$id2=0; //Zuordnung der Zahl 0
$id3=0;
$id5=0;
$id10=0;
$id_komplett=0;
$sql1=sql_query('SELECT id FROM '.$prefix.'_test');
while($res1=sql_fetch_array($sql1)) {
    switch($res1['id']) {
        case 2: $id2++; break; //Erhöhung der Zahl um 1
        case 3: $id3++; break;
        case 5: $id5++; break;
        case 10: $id10++; break;
    }
    $id_komplett++;
}

//Klugscheißer Ende
 
Das ist PHP......scheinen hier aber nicht viele von Ahnung zu haben ;)
Wie recht du doch hast :LOL:
Du wettest mit den Kenntnissen anderer Leute ? Klingt für mich aber nicht überzeugend.....
Aber du musst doch zugeben, dass es besser is, auf jemanden anders zu setzen, von dem man weiß, dass er gewinnt, als sein ganzes Hab und Gut auf sowas wie ""++ zu setzen ? :mrgreen:

Für alle, die nicht wissen, worums geht: Freilich ist ""++ in PHP definiert. Dass es aber semantisch genauso hirnrissig is, wie zu versuchen einen "Sahne-Pudding ohne Kochen"-Beutel auf 250°C im Backofen zuzubereiten *), steht auf einem anderen Blatt :ugly:

So und nun genug mit money-island.eu-PHP-beibringen und back2topic.


*) Sorry, aber n dämlicherer Vergleich is mir grad ned eingefallen *lol*
 
PHP:
 $id2=""; // Initialisierung einr Variable
$id3=""; // Initialisierung einr Variable
$id5=""; // Initialisierung einr Variable
$id10=""; // Initialisierung einr Variable
$id_komplett=""; // Initialisierung einr Variable
$sql1=sql_query("SELECT id FROM " . $prefix . "_test"); // Nicht irgendwas.......das ist ne ganz normale Query.....also kein Wunderwerk :P
while($res1=sql_fetch_array($sql1)) { // Resourcenbelegung und Initialisierung
    switch($res1['id']) { // schonmal was von "switch" und "case" gehört ? Was macht "switch" den, wenn "$res1['id']" = 2 ist ?
        case 2: $id2++; break; // Zähler=Zähler+1
        case 3: $id3++; break; // Zähler=Zähler+1
        case 5: $id5++; break; // Zähler=Zähler+1
        case 10: $id10++; break; // Zähler=Zähler+1
    }
    $id_komplett++; // Zähler=Zähler+1
so wäre es wohl richtig.........aber wenn ich mir so manche Scripte und Codeschnipsel hier im Forum ansehe, könnte ich mir den Finger in Hals stecken.

Für diejenigen, welche jetzt einen kostenlosen Grundkurs in PHP wollen, habe ich mal das rausgesucht ;)

Achte auf die ++

https://phpforum.de/php/php-handbuch/static/control-structures.for.html

@ Hacker ... wer redet hier von dem ? : ""++
Tolle Sprüche bringt hier wohl jeder.......brauchbaren Code nur ne Handvoll
 
na ja, wie gesagt: glücklicherweise ist PHP sehr, sehr intelligent bzw. versucht es es zu sein

Ein Befehl sql_fetch_array und sql_query steht bei mir nicht im Handbuch drin. Ist scheinbar von morgen :ugly:

Das ist eben Professionelles Programmieren.....oder glaubst du wirklich, das ich Standard-Querys nutze ?

Ist doch wohl logisch, das wenn ich ein Portal aufbaue, das dort auch ein gescheiter SQL-Layer mit reinkommt.....und nicht son Frickelkram, der bei jedem Script-Aufruf erneut die DB Connectet..

Und sowas will mir hier ein von PHP und Programmieren erzählen..... :mrgreen::mrgreen:
 

Dein Script funktioniert nur weil, wie bereits gesagt, PHP die Typen der Variablen selber ändert. (also wenn man eine Variable so initialisiert: $variable = "";, dann ist die Variable vom Typ String, wenn man sie so initialisiert: $variable = 0; dann ist sie vom Typ Integer.)

Deine Variablen sind am Anfang vom Typ String. Und dann willst du einen String um eins erhöhen? Gut das wir hier in PHP programmieren/scripten. Denn PHP wandelt dann deinen String um in Integer...
Würde PHP das nicht machen, würde es garnicht gehen...

Ähm.. zu deinem Link: Reden wir hier von Schleifen?? Denn dein Link zeigt ein Beispiel zu einer for() Schleife...


Und wie LasMiranda gerade geschrieben hat gibt es die Befehle sql_query() und sql_fetch_array() nicht.. Die beiden Befehle musst du oder jmd. anderes wohl erstellt haben.. Du meinst wohl eher mysql_query() und mysql_fetch_array()

EDIT: mysql_query() connectet immer neu zur DB? Wäre mir neu.. Du baust doch nur einmal mit mysql_connect() eine Verbindung auf und mit mysql_close() schliest du sie (solltest du aufjedenfall).

EDIT2: Achso, sry. Habe überlesen das du Scriptaufruf geschrieben hast, dachte Befehlaufruf.
Aber wie willst du es schaffen, dass man nicht immer neu zur DB connecten muss?
 
Das ist eben Professionelles Programmieren...
natürlich
...das dort auch ein gescheiter SQL-Layer mit reinkommt...
hab ich da was anderes behauptet, als ich geschrieben habe, dass es eine eigene Funktion ist?
...der bei jedem Script-Aufruf erneut die DB Connectet...
dass die Datenbank aber zusätzlich im Hintergrund geschlossen wird, wenn das Script geparsed ist, ist aber klar, oder? EDIT: Weswegen natürlich nach Gebrauch der DB diese wieder geschlossen werden sollte und das nicht automatisch gemacht werden sollte.

Ein mysql_pconnect wird ja hoffentlich nicht verwendet. :pray:
 
Dein Script funktioniert nur weil, wie bereits gesagt, PHP die Typen der Variablen selber ändert. (also wenn man eine Variable so initialisiert: $variable = "";, dann ist die Variable vom Typ String, wenn man sie so initialisiert: $variable = 0; dann ist sie vom Typ Integer.)

Deine Variablen sind am Anfang vom Typ String. Und dann willst du einen String um eins erhöhen? Gut das wir hier in PHP programmieren/scripten. Denn PHP wandelt dann deinen String um in Integer...
Würde PHP das nicht machen, würde es garnicht gehen...

Ähm.. zu deinem Link: Reden wir hier von Schleifen?? Denn dein Link zeigt ein Beispiel zu einer for() Schleife...


Und wie LasMiranda gerade geschrieben hat gibt es die Befehle sql_query() und sql_fetch_array() nicht.. Die beiden Befehle musst du oder jmd. anderes wohl erstellt haben.. Du meinst wohl eher mysql_query() und mysql_fetch_array()

EDIT: mysql_query() connectet immer neu zur DB? Wäre mir neu.. Du baust doch nur einmal mit mysql_connect() eine Verbindung auf und mit mysql_close() schliest du sie (solltest du aufjedenfall).

EDIT2: Achso, sry. Habe überlesen das du Scriptaufruf geschrieben hast, dachte Befehlaufruf.
Aber wie willst du es schaffen, dass man nicht immer neu zur DB connecten muss?

Damit auch die Klamm-User endlich mal was gescheites zu Gesicht bekommen und nun endlich auch mal wissen, wie man eine SQL-Query baut, ohne auf den Standard-Kram zurückgreifen zu müssen, weil Standard-Kram bei SQL-Injection hoffnungslos zerbröselt, wei man an Tausenden Mailer, Mailtauschern und auch Loseseiten sehen kann :D

Jetzt kommt mir bloß nicht an und sagt "Was ist denn eine Funktion"....

PHP:
function sql_fetch_array($result, $xx = "") {
    $row = array();
    $row = @mysql_fetch_array($result);
    if (!empty($php_errormsg) && $GLOBALS["sql_error_debug"]) {
        $n1 = (isset($php_errormsg)) ? $php_errormsg : mysql_error();
        echo "<br><b>Error sql_fetch_array():</b> <br>descr:<b> " . $n1 . "</b><br>";
        back_trace();
    } 
    return $row;
}

bis morgen :D
 
PHP:
function sql_fetch_array($result, $xx = "") {
$row = array();
$row = @mysql_fetch_array($result);
if (!empty($php_errormsg) && $GLOBALS["sql_error_debug"]) {
$n1 = (isset($php_errormsg)) ? $php_errormsg : mysql_error();
echo "<br><b>Error sql_fetch_array():</b> <br>descr:<b> " . $n1 . "</b><br>";
back_trace();
}
return $row;
}

Sooo....
Was ne super Funktion :biggrin: .
1: $php_errormsg ist immer leer, denn ich sehe nirgends, wo was in der Variable geschrieben wird. Deine Bedingung ist also immer false.
2. Wenn $php_errormsg nicht leer sein sollte, was sie ja eigentlich immer ist, damit die Bedingung true ergibt, wurde die Variable auch gesetzt. Also isset($php_errormsg) gibt auch true zurück. Dein $n1 = (isset($php_errormsg)) ? $php_errormsg : mysql_error(); ist also überflüssig.
3. <b> ist veraltet. Aber ich weiß ja nicht ob du XHTML benutzt oder nicht.
4. Warum initalisierst du die Funktion mit dem Parameter $xx = "". Die Variable wird doch gar nicht in der Funktion verwendet.
5. Was macht die Funktion back_trace(); ?