Beiträge von Eckard41

    Beschreib doch mal an einem konkreten Beispiel, was du vorhast.
    Willst du eine Variablenübergabe an Javascript realisieren, oder einfach nur von PHP generierte Ausgaben an bestimmte Stellen im Code setzen?
    Bei letzterem, solltest du wissen, dass echo bzw. print eigentlich auch für HTML-Ausgaben gedacht ist.
    Um eine Ausgabe innerhalb eines span-Tags zu erzielen, schreibst du etwa
    echo "<span>TEXT</span>";
    Natürlich kannst du für größere HTML-Abschnitte auch den PHP-Teil unterbrechen:


    Oder du gibst Variablen auf die direkte Art aus:
    <span><?=$result?></span>
    Das geht dann schon fast in die Richtung Template-Engine. Genaueres dazu findest du in der Infothek.

    Indem du die entsprechende Datei in die, aus der die Functions angesprochen werden wollen, includierst.

    Code
    include("functions.php");


    Beachte aber, dass eventuell vorhadener Code in der functions.php, der außerhalb definierter Functions steht, auch ausgeführt wird!
    Sieht die functions.php beispielsweise so aus

    PHP
    <?php
    echo "Ich werde ausgegeben!";
    
    
    function DeineFunction() {
    // Code...
    }
    ?>


    wird echo ausgeführt. Du musst dir also vorher überlegen, wie du deine functions.php aufbaust.

    Funktioniert mit GOTO.
    Zunächst definierst du (anfang des Codes) eine Sprungmarke mit LABEL sprungmarke;
    Die Sprungmarke selbst setzt du per sprungmarke :
    Der GOTO-Befehl sieht so aus: goto sprungmarke;
    :arrow: http://www.db.informatik.uni-k…al/einfuehrung/pas35.html
    Beachte aber, dass man sowas normalerweise vermeiden sollte. In der Regel sollte man das Programm besser strukturieren. Meistens sind Sprünge durch einen sauberen Aufbau des Codes ohnehin überflüssig.

    Dann gibt es über die Alphafilter in CSS hinaus wohl keine andere Lösung. Oder aber du schneidest einen Teil der Gesamtgrafik so zu, dass sie genau die Lücke in der Textbox füllt, was aber zugegebenermaßen schwierig wird, wenn die Textbox nicht absolut positioniert ist und sich auf dem Hintergrundbild verschieben kann.

    Liegt daran, dass die Werte als Strings behandelt werden und nicht als Zahlen. 9 kommt vor 10 weil bei der 9 das erste Zeichen größer ist als das bei der 10. Welchen Datentyp hat denn das entsprechende Feld?
    Versuch es mal mit Integer. Wenn du den Datentyp unbedingt beibehalten willst kannst dus auch mit einem Typecasting lösen:

    SQL
    SELECT id,kuenstler,titel,stimmen FROM songs ORDER BY CAST(stimmen AS UNSIGNED) DESC, id ASC

    Das Problem ist immer noch, dass ORDER BY aufgrund der Tatsache, dass "lfdnr" vom Typ VARCHAR ist, nicht nummerisch sortiert. Auf der anderen Seite brauchst du VARCHAR, wie Schky bereits beschrieben hat, damit gemischte Zahlenfolgen wie 11a möglich sind. Ich würde daher einfach in der ORDER BY-Klausel ein Typecasting (ja, auch in SQL ist sowas begrenzt möglich) durchführen:

    SQL
    SELECT lfdNr, Datum, FzV, FzG, Betrag, mnr FROM ig04fahrten ORDER BY CAST(Datum AS UNSIGNED), lfdnr ASC

    Man kanns noch etwas zusammenfassen. Beispielsweise die Wochen 2-6 in eine for-Schleife packen, die in 7er-Schritten hochzählt. Woche 1 ließe sich evtl. auch noch da reinbauen, allerdings blick ich nicht so ganz durch diesen mysql_fetch_row-Trick beim ersten Datensatz, da ich deine Datenbankstruktur, bzw. den Inhalt ja nicht kenne.


    Hoffe, es sind keine Fehler drin. Ich hab das nun mal zusammengefasst, ohne den Code im Einzelnen zu testen:

    Das sollte eigentlich nicht sein. Poste doch mal deinen Code.
    Oder probiers mit der nicht ganz so verwirrenden fetch_arraw-Variante:

    Code
    $sql = mysql_query("SELECT kalender.id, kalender.event FROM kalender WHERE kalender.tag = '31'");
    
    
    $data = array();
    while ($row = mysql_fetch_array($sql)) {
       array_push($data, array("id" => $row["id"], "event" => $row["event"]));
    }
    
    
    echo $data[0]["id"];

    :D Wenn du bei meiner ersten möglichkeit im SQL-Code LIMIT 1,1 ergänzt hast ja.
    Eigentlich hatte ichs ja so gemeint, dass du entweder die erste Variante nimmst oder deinen Code mit LIMIT 1,1:

    Ahja jetzt weiß ich wo das Problem liegt.
    Zum einen liefert mysql_fetch_row wirklich nur einen Datensatz (und zwar den ersten) und schau dir mal die Funktion mysql_fetch_row() genau an:
    Wenn du in die Variable $fetch_test das Ergebnis der Query schreibst, erhälst du mit $fetch_test[0] nicht den ersten Datensatz, sondern das erste Feld (...des ersten Datensatzes, denn ein einfaches mysql_fetch_row () liefert ja nur einen). D.h. du bewegst dich, wenn du den Array-Schlüssel ($fetch_test[0]) veränderst, nicht vertikal zwischen den Datensätzen hin und her, sondern horizontal zwischen den einzelnen Feldern des ersten Datensatzes.
    Ein Beispiel:
    Angenommen du holst per SELECT ein 2. Feld aus der DB:

    SQL
    SELECT kalender.kalender_id, kalender_event FROM kalender WHERE kalender.tag = 31


    Du wirst dich wundern, was du mit $fetch_test[1] erhälst. Nämlich den Wert des Feldes kalender_event des ersten Datensatzes.


    Es gibt nun 2 Möglichkeiten, den 2. Datensatz zu erhalten.
    Die erste wirst du später in ähnlicher Form brauchen, wenn du mehrere (alle) Datensätze ausgeben möchtest. Ich schreibe mit einer Schleife die kompletten Daten aller Datensätze, auf die die Query zutrifft, in ein mehrdimensionales Array:

    Code
    $test = mysql_query("SELECT kalender.kalender_id, kalender.kalender_event FROM kalender WHERE kalender.tag = '31'");
    
    
    $data = array();
    while ($fetch_test = mysql_fetch_row($test)) {
       array_push($data, array($fetch_test[0],$fetch_test[1]));
    }
    
    
    echo $data[1][0];


    In $data hast du nun alle Datensätze vorliegen. Der erste Schlüssel gibt den Datensatz, der 2. Das Feld an. Mit echo $data[1][0]; gibst du also das erste Feld (kalender_id) des 2. Datensatzes aus.
    Ich geb zu, ziemlich verwirrend.
    (Deshalb würde ich dir empfehlen später mysql_fetch_array() zu verwenden, dann kannst du mit den Feldnamen arbeiten, und musst dich nicht mit Zahlen-Schlüsseln rumschlagen. )


    Aber du wolltest ja eigentlich nur den 2. Datensatz ausgeben. Die Lösung liegt in SQL: :wink: Du kannst dir $num_test = mysql_num_rows($test); und die Tatsache, dass nur ein Datensatz geliefert wird zunutze machen, wenn du in SQL LIMIT 1,1 ergänzt:

    SQL
    SELECT kalender.kalender_id FROM kalender WHERE kalender.tag = '31' LIMIT 1,1


    Der erste Parameter bei LIMIT gibt die Datensatzzeile an, ab der die Ausgabe erfolgt, der 2. beschränkt die Anzahl.
    Du musst dir vorstellen, dass du mit LIMIT die Ergebnisse, die auf WHERE kalender.tag = 31 zutreffen, noch einmal einschränkst. In dem Fall auf den 2. Datensatz.
    $num_test = mysql_num_rows($test); wird also nun genau den richtigen Datensatz liefern, durch die weitere Einschränkung per SQL.
    Den restlichen Code kannst du so stehen lassen.

    Öhm was hast du denn überhaupt vor?
    $fetch_test = mysql_fetch_row($test); liefert dir auch nur einen Datensatz, für mehrere musst du eine Schleife schreiben.
    Beschreib doch mal ausführlich was du beabsichtigst.

    Beides bedeutet, dass das Formular von der selben Datei ausgewertet wird, in der es sich selbst befindet. Man könnte den PHP-Code zur Auswertung in eine 2. Datei stecken: action="berechnen.php"
    $_SERVER['PHP_SELF'] sollte man der #-Schreibweise vorziehen.

    Ich nehme mal an, dass du sowas in der Art vorhast... :wink:

    Oder ohne foreach() und mit array_search() :wink:

    Naja kompliziert ist das eigentlich nicht.
    Lass die Zeilen doch per file() in ein Array schreiben und mach dir die Schlüssel zunutze:



    Denk aber dran, dass Array mit dem Index 0 beginnen. $data_fp1[2] liefert daher die 3. Zeile.
    Überprüfen, ob ein Wort im Array vorkommt, kannst du mit in_array() und den entsprechenden Index findest du mit array_keys() heraus.

    Ja eigentlich nur jeweils die Variable: