Beiträge von SinnlosS

    In Procedures wird das nicht automatisch umgecastet? Ich habe es selber noch nicht ausprobiert, wundert mich aber etwas, ich kann nicht ganz nachvollziehen wieso sich SQL da anders Verhalten sollte. Dieses Verhalten hat ja nichts explizit mit SELECT zu tun.
    Aber gut, wenn du es ausprobiert hast wird es wohl stimmen. ^^

    Eigentlich castet MySQL Strings automatisch um, wenn sie in einer Berechnung verwendet werden:
    SELECT 1.1 + '1.1'
    -> 2.2

    Aber warum nimmst du ein VARCHAR-Feld, wenn da Zahlen drinstehen mit denen auch gerechnet werden muss?

    Bei den beiden if-else-Konstrukten fehlen einmal eine öffnende geschweifte Klammer { und einmal eine schließende geschweifte Klammer }
    if($sqlErgebnis['nickname'] == $nickname) <-- die Überprüfung macht nicht viel Sinn, ist ja doppelt. Das prüfst du ja schon in der SQL-Abfrage.
    Wenn diese if-Bedingung nicht erfüllt wird, wurde gar kein Datensatz gefunden, $sqlErgebnis['nickname'] ist daher nicht belegt, und PHP schmeißt eine Notice, wenn du error_reporting nicht ausgedreht hast, was ich nicht hoffe.
    Überprüfe da stattdessen ob überhaupt ein Ergebnis gefunden wurde: if( $sqlErgebnis = mysql_fetch_assoc($sqlCheck) ) {

    Ansonsten nicht vergessen: http://php.net/manual/de/func…cape-string.php

    Du überprüfst in deiner if-Bedingung nur ob der Query ausgeführt werden kann. Du musst aber das Ergebnis von mysql_num_rows prüfen wenn du wissen willst, ob Datensätze gefunden wurden.
    z.B.:

    PHP
    $res = mysqli_query($con,"SELECT * FROM objekte WHERE {$sqlWhere}");
    if( !mysqli_num_rows($res) ) {
        echo "Keine Einträge vorhanden.";
        mysqli_free_result($res);
    }
    else {
        // Ergebnisse verarbeiten
    }

    Tage: $dif / 86400
    Stunden: $dif / 3600 % 24
    Minuten: $dif / 60 % 60
    Sekunden: $dif % 60
    So einfach geht das, man muss nicht bei jedem Scheiß mit den PHP-Standarfunktionen rumhampeln, scheint ne schlechte Eigenschaft bei PHP-Programmierern zu sein, überall müssen date, array_*, preg_replace etc. ins Boot geholt werden…

    Naja... du hast natürlich recht, wenn es um die Berechnung reiner Zeiträume geht, und nicht um die Berechnung konkreter Tage, dann kann und sollte man es so machen wie du schreibst.
    Wenn man aber konkrete Daten berechnen möchte ist es durchaus sinnvoll die vorgesehenen Funktionen zu verwenden. Da können sich sonst sehr leicht Fehler einschleichen, einer der beliebtesten z.B. das Nicht-Berücksichtigen von Sommer-/Winterzeit.


    Passt zwar nicht exakt zum Thema, aber trotzdem ein interessanter Link über den ich kürzlich gestolpert bin:
    http://pumka.net/2010/10/24/why…erent-from-php/

    Noch nicht gewusst, danke!
    Eine Alternative: Die IP-Adresse des Servers prüfen.



    Ich hatte es auch nicht sicher gewußt, hatte nur im Hinterkopf mal etwas über Unsicherheit bei $_SERVER-Attributen gelesen zu haben. Und habe dann gerade mal nach gegoogled. Fand ich auch interessant zu wissen, man lernt nie aus. :)

    Den verwend ich am Anfang von meinen Scripts:

    PHP
    if($_SERVER['SERVER_NAME']=='localhost')
    {
    	@ini_set('display_errors', 1);
    	error_reporting(E_ALL);
    }else
    {
    	@ini_set('display_errors', 0);
    	error_reporting(E_NONE);
    }



    Diese Beispiel sollte auf keinen Fall im tatsächlichen Live-Betrieb verwendet werden (und lokal kann man sich die Prüfung dann auch schenken).
    Der Wert in $_SERVER['SERVER_NAME'] ist nicht sicher und kann über den per HTTP gesendeten Host geändert werden. Damit kann dann prinzipiell jeder an die PHP-Fehlermeldungen kommen.
    http://shiflett.org/blog/2006/mar/…ersus-http-host

    Ich habe sowas in der Art mal bei einer Navigation gemacht, halt Menupunkte beliebig um Untermenupunkte erweiterbar und das ganze beliebig tief verschachtelt.
    Alle Menupunkte stehen in einer Tabelle, egal ob Hauptmenupunkt oder Untermenupunkt. Das - genauso wie die Tiefe der Verschachtelung - ergibt sich aus dem Feld `parent_id`. Hauptmenupunkte haben `parent_id`=0, Untermenupunkte - wer hätte es gedacht - die ID des Elternmenupunktes.
    Ich klatsch dir einfach mal eine Funktion rein, die das Menu aufbauen soll (ist aus einem Projekt das seit einer ganzen Weile auf Eis liegt und ungetestet. Soll aber ja sowieso nur als Inspirationsquelle dienen):

    Vielleicht hilft dir das als kleiner Denkanstoß.

    Ich tippe mal auf eine seite mit frames, das waere zumindest noch ein halbwegs sinnvoller grund fuer diese aktion.

    Dann sollte der Betreiber sich lieber die ganze Seite nochmal neu machen lassen, und zwar "in ordentlich" :D
    Ich würde aber eher vermuten, dass das jemand ist der für sein Unternehmen eine neue Seite hat machen lassen, die jetzt ganz toll findet, und nun möchte das auch jeder Besucher sich schön die ganze Seite anschaut. Wer würde sich auch nicht gern durch so eine tolle Seite komplett durchklicken?

    Klingt blödsinnig? Klar, ist auch rein geraten, aber zumindest auf eigene Erfahrungswerte gestützt. Sowas kommt in ähnlicher Form oft genug vor, hatte ich alleine in diesem Jahr bei 4 oder 5 verschiedenen Seiten die ich gemacht habe. Und an so einer Stelle ist es ganz klar auch Aufgabe des Entwicklers den Betreiber darauf hinzuweisen (schon aus Eigeninteresse, wenn denn der eigene Name als Entwickler im Impressum steht).

    Als allererstes würde ich dringend versuchen dem Betreiber der Seite diesen Unfug auszureden. Eine Mechanik die mich zwingt bei einer Seite immer auf der Startseite anzukommen wäre für mich ein Grund diese Seite nicht mehr zu besuchen. Wenn ich einen Link bei Google anklicke dann will ich auch auf der verlinkten Seite ankommen welche die Informationen enthält die ich suche. Ich weiß ja nicht was das für eine Seite ist, aber wenn es eine seriöse Seite werden soll, dann ist so etwas ein absolutes No-Go. Das solltest du als Entwicklerin dem Betreiber der Seite auf jedenfall ganz deutlich klarmachen!
    Tipps wie man so einen Unfug am besten realisiert möchte ich nicht geben.

    Da diese Frage ja immer wieder auftaucht habe ich mich gerade mal hingesetzt und ein kleines Script dafür erstellt.
    Als erstes wird ein Array für die verfügbaren Navigationspunkte erzeugt. Wenn sich an der Navigation etwas ändert, also Menu-Punkte wegfallen oder neu dazukommen, braucht nur dieser Array erweitert bzw. gekürzt werden:

    Mit dem folgenden Code wird überprüft welche Datei eingebunden werden soll:

    Mit dem folgenden Code wird das Menu zur Ausgabe auf der Seite erzeugt:

    Ich würde das ganze über zwei Querys lösen (bzw. bei Nutzung von mysqli oo (o.ä.) noch komfortabler dank prepared statements, aber du nutzt ja noch mysql_*, richtig?).
    Erstes Query liest du Postings aus und füllt sie in einen Array.
    Zweites Query liest dann die Antworten aus und ergänzt das erstellte Posting-Array um die Antworten.

    Wenn man das in einem Query per Join löst bläht man meiner Meinung nach nur das Ergebnis unnötig auf. In der Ergebnismenge sind ja zwangsläufig immer entweder die Spalten aus der Antworttabelle leer, oder die Spalten aus der Postingtabelle sind doppelt-, drei, ... zig-facher Content. Da nehme ich lieber ein Query mehr in Kauf und halbiere dafür den Speicherbedarf für meine Ergebnismenge(n).

    Wenn du schreibst "Habe mir gerade die verschiedenen JS-Array Schreibweisen angeschaut und es war nirgends so eine mit dabei", was meinst du dann mit "so eine"? Was für eine? Ich verstehe nicht so ganz an welcher Stelle du nicht weiterkommst.
    Das einzige was gegenüber PHP z.B. wirklich großartig anders ist, dass assoziative Arrays in JS als new Object() erstellt werden.

    Code
    numerisches_array = new Array();
    numerisches_array[0] = "Hallo";
    numerisches_array[1] = " Welt!";
    alert(numerischer_array[0]+numerischer_array[1]);
    
    
    assoziatives_array = new Object();
    assoziatives_array['hello'] = "Hallo";
    assoziatives_array['world'] = " Welt!";
    alert(assoziatives_array['hello']+assoziatives_array['world']);

    Wenn du übrigens vorhast an vielen Stellen JavaScript/Ajax einzusetzen würde ich dir zur Verwendung eines JS-Frameworks raten. Ich nutze JQuery und kann das nur weiterempfehlen.

    P.S.: Schöne Grüße nach Freital, sehe ich grade. Mein Vater hat lange in Dölzschen gewohnt, da war ich häufiger. (oder ist das nicht das Freital bei Dresden? ^^)

    Ok bei dem Punkt mit dem "mailto:" in der RegExp muss ich mich wohl für meinen etwas harschen Ton entschuldigen, ich bin nicht so der RegExp-Experte und habe nicht daran gedacht, dass das ? ja für Menge {0,1} steht. ^^
    Ich nehme an du wirst deine Gründe haben das in zwei Funktionen zu splitten. Deine Benennung ist aber nicht sehr glücklich, daraus lässt sich absolut nicht schließen was nun der Unterschied ist.
    Du könntest die z.B. mit checkEmail_Bool() und checkEmail_String() benennen, nach dem Typ des Rückgabewertes. Das wäre schon aussagekräftiger. Glaub mir, Tipp-Faulheit bei der Vergabe von Variablen- und Funktions-/Methodennamen wird fast immer spätestens dann bestraft, wenn man sich nach einigem Abstand nochmal damit beschäftigen muss. ^^

    checkMail() bzw. checkEmail_String() ;) könntest du übrigens gut um einen Parameter erweiterern. Nämlich die id des Elements in dem die Meldung ausgegeben werden soll. Damit machst du die Funktion universeller nutzbar.
    Das könnte dann so aussehen:

    Code
    function checkEmail_String(mail,output_id) {
    	meldung = checkEmail_Bool(mail) ? "E-Mail ist gültig!" : "E-Mail ist ungültig!"
    	document.getElementById(output_id).innerHTML = meldung;
    }
    // und falls du jquery benutzt:
    function checkMail(mail,output_id) {
    	meldung = checkEmail_Bool(mail) ? "E-Mail ist gültig!" : "E-Mail ist ungültig!"
    	$("#"+output_id).html(meldung);
    }

    Ergänzung:
    Mit Goolge Chrome kann man Javascript recht gut debuggen.
    Strg+Shift+J öffnet auch hier die entsprechende Fehlerkonsole und dort werden dir auch beide Fehler angezeigt, die dafür sorgen, dass dein Code nicht funktioniert. Die schaust du aber bitte selber nach, damit du beim nächsten Mal direkt selber weißt wo du gucken mußt.

    Probier es mal so:

    HTML
    E-Mail: <input name="email" type="text" size="30" onkeyup="checkemail(this.value);">

    Desweiteren ist deine Funktion in der Form sowieso Unfug.

    Code
    var proto   = "(mailto:)?";


    Ich wage zu bezweifeln, dass jemand seine email-Adresse mit dem Präfix "mailto:" einträgt. Man muss nicht immer alles selber neu schreiben, natürlich kann man sich nützliche Code-Schnippsel zusammensuchen und verwenden. Dann sollte man sich aber auch soweit damit auseinandersetzen, dass man versteht was da überhaupt passiert und welchem Zweck sie überhaupt dienen. Irgendwelche Code-Schnippsel blind zusammenwürfeln und dann in Foren von anderen an die eigenen Bedürfnissen anpassen lassen ist weder die feine englische Art, noch hat das irgendetwas mit Programmieren zu tun.

    Code
    return rgx.exec(email) ? true : false);


    Wozu steht danach noch Code? Der wird niemals ausgeführt werden. Du weißt was return macht, oder?


    Also, "var proto" gehört nicht in die regexp und es gehört nur ein return in deine Funktion, und zwar ans Ende. Pass das erstmal an und schau dann weiter.

    JQuery hat ein Drag-and-Drop-Widget, das ist ziemlich unproblematisch.

    Von der Nachrichtenaktualisierung würde ich abraten, wieviel soll denn da geschrieben werden, dass alle 5 Sekunden auf neue Nachrichten gecheckt wird? Ein PN-System ist kein Chat, wenn überhaupt eine regelmäßige Aktualisierung per JS dann maximal 1x pro Minute. Ich halte das aber an dieser Stelle für vollkommen unnötig. Resourcen-Verschwendung durch ständige HTTP-Requests die vermutlich in weit über 90% der Fälle unnötig sind.

    Validitätschecks für Formulare mittels JavaScript sind prima, da damit unnötige Requests gespart werden können. Es darf aber selbstverständlich lediglich eine Ergänzung zu der Validierung der Eingaben mittels PHP sein. Serverseitige Überprüfung ist immer Pflicht.

    Wenn du Probleme mit dem Zusammenspiel von HTML, CSS, JS auf der einen Seite, und PHP, MySQL auf der anderen Seite, dann hast du vermutlich den Ablauf eines HTTP-Requests noch nicht ganz verstanden, bzw. noch nicht wirklich verinnerlicht.
    HTML/CSS/JS und PHP/MySQL haben im direkten Sinne nichts miteinander zu tun. Deswegen sollte der Code für beide Parteien auch strikt voneinander getrennt sein.
    Am HTML/CSS/JS-Code verändert sich exakt Null wenn man server-seitig noch mit PHP und MySQL arbeitet. Für den Besucher einer Seite macht es absolut keinen Unterschied, ob der Code der auf einen Request an seinen Browser zurückgeschickt wird statisch ist oder dynamisch vom Server generiert wurde.


    Für konkretere Tipps/Hilfen müsstest du erstmal auch konkrete eigene Lösungsversuche zeigen.
    Nur zu beschreiben was du machen willst und dann ganz allgemein "Aber das Zusammenspiel zwischen client- und serverseitigen abläufen verstehe ich nicht ganz" bietet leider keine besonders guten Ansatzpunkte für weitere/konkretere Hilfe.