Beiträge von SinnlosS

    Hm, bei mir ist es einfach Gewohnheit. Gegenfrage, welchen Vorteil bietet PDO wenn man sicher ist, dass das Projekt nicht mit anderen DBs als MySQL laufen muss? ^^
    Ich habe kürzlich auch einen umfassenden Vergleich von mysql_*, mysqli_* und pdo gelesen, bei dem mysqli im gesamten am Besten abgeschnitten hat (Performance-Fragen). Das hing damit zusammen, dass mysqli_* eben auf ein DBMS (mysql) beschränkt und optimiert ist. Ich schau mal ob ich den Bericht nochmal finde.
    Ich wollte mir aber für mein nächstes anstehendes Projekt mal Doctrine2 anschauen, das basiert auch auf PDO, und ich habe davon bisher nur Lob in den höchsten Tönen gehört.

    Gerne, wenn noch Fragen auftauchen sollten einfach wieder melden.

    Übrigens, als Tipp wenn du längerfristig mit PHP entwickeln möchtest: Schau dir mal mysqli an, am Besten gleich in der objektorientierten Version.
    mysql_* ist zwar nicht Deprecated, man braucht also keine alten Projekte umschreiben. Aber für neue Projekte ist es schon sinnvoll direkt die aktuelle Variante zu nutzen. Gerade in der oo-Variante bietet das schon nützliche Features, z.B. mit den prepared statements, oder multi_query.


    PS. Mein Lehrer wusste es auch nicht.



    Sorry, aber das kann ich nicht glauben... Ist das nen Lehrer an der Baumschule? :D
    Das muss doch nen Informatik-Lehrer sein wenn der PHP unterrichtet...

    % ist das Modulo-Zeichen.
    a%b = ganzzahliger Rest der übrigbleibt wenn man a durch b teilt.
    Z.B.:
    25%7 = 4
    Denn:
    25/7 = 21/7 + 4

    21 ist die höchste Zahl die durch 7 dividiert eine Ganzzahl ergibt, und da bleibt dann ein Rest von 4 übrig.

    Achso, bei mysqli prozedural muss man ja immer noch den Verbindungslink mit übergeben. Ich nutz das nur immer objektorientiert.
    Nutzt du denn mysql, mysqli prozedural oder mysqli objektorientiert?
    Bei mysql ist es mysql_real_escape_string(string $escapestr)
    http://de2.php.net/manual/de/func…cape-string.php
    Bei mysqli prozedural ist es mysqli_real_escape_string(mysqli $link , string $escapestr)
    Bei mysqli objektorientiert ist es mysqli::real_escape_string(string $escapestr)
    http://php.net/manual/de/mysqli.real-escape-string.php

    Weil du da nachfragst, du kennst die Funktion aber und weißt welchen Zweck die hat? Die schützt vor SQL-Injection und muss unbedingt auf SÄMTLICHE Daten angewendet werden, die vom User kommen und in SQL-Statements benutzt werden. Also z.B. alles aus $_GET, $_POST, $_COOKIE

    Ansonsten, wenn dir etwas an dem Code noch nichtganz klar ist frag gerne nach.
    Es macht ja mehr Sinn wenn du auch verstehst was da passiert. :)

    Die Dropdowns im Formular deklarierst du als array, mit einem numerischen Key dem du auf der Verarbeitungsseite über ein entsprechendes Array die passenden Spaltennamen zuweist.

    Beispiel:

    HTML
    [...]
    <form method="post" action="my_search.php">
    <select name="search_values[1]"><!-- options --></select>
    <select name="search_values[2]"><!-- options --></select>
    [...]
    </form>

    Verarbeiten kannst du das dann ganz simpel:

    Wenn jetzt mal Felder hinzukommen oder wegfallen brauchst du nur den Array $mySearchFields und dein Formular entsprechend anpassen. Der Rest läuft automatisch.

    Hier übrigens noch ein Link für dich:
    http://www.php-faq.de/q-sql-select.html

    Spontan würde ich zu einer temporären Tabelle raten.

    Passt es denn von der Normalisierung, dass jede Kategorie eine eigene Tabelle hat? Oder könnte man die Kategorien zusammenlegen in einer Tabelle mit einem zusätzlichen Schlüssel der definiert um welche Kategorie es sich handelt? Oder ansonsten die Spalten die in allen 3 Kategorien vorkommen in einer Tabelle zusammenfassen und nur Inhalte die sich stark unterscheiden in die jeweiligen einzelnenen Kategorie-Tabellen auslagern?
    Ich weiß ja nicht was du machen willst, daher ist das ein Schuss ins Blaue, in den meisten Fällen zu deiner Problembeschreibung ist aber eine Optimierung der Tabellenstrukturen wesentlich sinnvoller, als sich irgendwie eine Lösung zurechtzubiegen, die mit der aktuellen Tabellenstruktur läuft. Du mußt ja offensichtlich an mindestens einer Stelle (wo dein geschildertes Problem auftritt) auf alle Kategorien auf einmal zugreifen, also gibt es offensichtlich einzelne Daten in den verschiedenen Tabellen, die zusammengehören. Die sollten dann auch in nur einer Tabelle stehen.

    Wie sieht es aus wenn du dir in der Funktion selber mal paar Umlaute hart reincodest in die Mail. Kommen die auch falsch an? Falls ja stimmt etwas nicht mit den Header-Angaben, bzw. mit dem Zeichensatzformat der php-Datei.
    Wenn es nur bei den Inhalten die an die Funktion übergeben werden so ist, dann kommen diese Daten in einem falschen Zeichensatz an (blind geraten: ISO-8859-1) an. In dem Fall kannst du schauen, ob du Einfluss darauf nehmen kannst, je nachdem woher die Daten kommen. Oder du kannst mal iconv() probieren: http://php.net/manual/de/function.iconv.php

    Edit: Gibt es eigentlich einen Grund, wieso du das Rad neu erfinden möchtest, statt den phpmailer zu nutzen, den unregistriert (Bandit?) bereits verlinkt hat?

    Wie aktiviere ich jenes Tool denn? Im Firefox zeigt er von alleine nichts an?


    Du hast im Firefox bei "Extras" als neuen Punkt "Live HTTP Headers". Anklicken und es öffnet sich ein Fenster mit den Headern.
    Falls du so Zeug wie Google PR Check, Adsense o.ä. laufen hast würde ich das ausstellen, um das ganze ein wenig übersichtlicher zu halten.


    Bandit war ein hoch angesehenes Mitglied des Forums, das in vielen Bereichen hervorragende Hilfestellungen gab.
    Die Löschung war seine eigene Entscheidung, was das gesamte Administratoren- und Moderatoren-Team bedauert.
    Mehr will ich in diesem Moment dazu nicht sagen.



    Wie der hat sich echt löschen lassen? Das finde ich auch sehr schade. Auch wenn er manchmal etwas ruppig rüberkam in seinen Antworten, war er auf jedenfall ein kompetenter Helfer hier im Forum.

    Datenbanken werden bei großen Aufkommen ziemliche Krücken, im direkten Vergleich sind elementare Berechnungen natürlich schneller.. (ein paar Ausnahmen wie zb "uuid" gibts sicherlich)



    Hm, und PHP skaliert in Sachen Performance besser bei großen Aufkommen, so dass ab einem bestimmten Grad dann PHP schneller ist? Hast du da Quellen wo das genauer erläutert wird? Würde mich interessieren, habe ich noch nie gehört.

    joa mein reden :)



    Ja richtig :D
    War nur auf die Idee mit dem Testscript bezogen. Das müsste schon recht komplex aufgebaut sein um die verschiedenen Anforderungen adäquat zu messen. Wobei es in den meisten Fällen auch mit etwas gesundem Menschenverstand und eventuell ein paar Auswertungsstatistiken recht passend erkennbar sein sollte, welche Variante zu bevorzugen ist.
    Ich programmiere halt seit 2 Jahren hauptsächlich an einer rein internen Auftragsverwaltung mit Kunden-Backend, wo nichtmal 3-stellige Besucherzahlen zustande kommen, dafür aber recht komplexe Berechnungen und Datenbankabfragen auf teilweise sehr umfangreiche Datenmengen stattfinden. Und da ist die Ajax-Variante eigentlich immer zu bevorzugen, da für einen normalen Seitenaufruf schon teilweise 300-400 Queries und mehrere Tausend Zeilen HTML/JS-Quellcode zusammen kommen. :D
    Daher denke ich meistens als erstes an Optimierungen für solche Anforderungen. Mag nicht immer passend sein. ^^

    Naja, ich würde sagen es ist abhängig von der Situation.
    Wenn es eine recht kurze Liste ist, bei der zu jedem Punkt nicht allzuviele Infos kommen, und es sich aber um eine hochfrequentierte Seite handelt, dann sollte man lieber im ersten Request gleich die paar Infos mitladen.
    Wenn es sich aber um lange Listen handelt, wo zu jedem Punkt sehr viele Infos angezeigt werden, und es sich um eine interne Seite mit wenigen Besuchern handelt, dann sollte man die Ajax-Variante wählen.

    Also je nach Anforderung abwägen was sinnvoller ist. :)

    nur mal so am rande... wieso machst du das überhaupt so?
    so wie ich das grad sehe machst du nochmal einen zusätzlichen request und schiesst damit ne weitere query auf die db ab, richtig?
    ich an deiner stelle würde die benötigten infos in andere nicht sichtbare container laden und nur eine abfrage starten, so kannst du dann ganz normal das anzeigen, was du anzeigen willst und brauchst keine weiteren requests.


    Also ich muss sagen, ich würde es genauso machen wie er. Der eine Request sollte nicht viel Leistung kosten. Alle Infos für jeden User vorzuladen erzeugt da doch deutlich mehr Last. Ich lade lieber die Übersichtsseite schnell, und dann die Infos zu den paar Teams die mich vermutlich nur interessieren kurz nachzuladen, als auf die Übersicht länger zu warten, weil möglicherweise jede Menge Infos mitgeladen werden, die mich gar nicht interessieren.

    @Xantypia mal noch:
    http://www.php-faq.de/q-sql-select.html