Beiträge von timtim

    Ach ich bin doof, es geht auch mit wordwrap, indem du den letzten parameter noch mitgibst.


    Code
    string wordwrap  ( string $str  [, int $width = 75  [, string $break = "\n"  [, bool $cut = false  ]]] )



    Er wird default auf 0 gesetzt wenn du TRUE mitgibst, bricht er auf jedenfall ob leerzeichen oder nicht nach der bestimmten stelle ab.


    Greetz TimTim

    Dann wollt ich mal fragen?


    Müssen sie umgebrochen werden, oder geht auch was anderes.


    - Eingabe bei zu langen wörtern entfernen,
    - Bei eingabe zu langer wörter fehler ausgeben.
    - Zu lange wörter kürzen


    Dazu wüsste ich einfache lösungen, aber mit dem umbruch binn ich mir nicht sicher wie man es performant lösen kann.


    Mein ansatz wäre



    Meine überlegen ist nun, das zu lange wort in mehrer teile zu zerlegen, vill immer nach 8 zeichen, diese in eine array zu schreiben.


    Und danach die array wieder auszugeben über eine schleife, das in einen string zu schreibne und dazwischen immer ein <br /> zu machen.



    Dass dann natürlich auch in einer schleife laufen lassen.



    Greetz TimTim

    Also, glaube nicht das es so geht.


    Denn ich habe nur die index.php darin werden alles seiten includet,


    daher muss ich das über php dynamisch machen. Da ich aber nur auf der startseite keine navigation habe, ist mir keine ander lösung eingefallen.


    Auser ich verstehe dich falsch =)


    Greetz TimTim

    Hi ho,


    ich hab ein kleines problem mit einer hintergrundgrafik im IE.



    Und zwar geht es um no-repeat.


    Wenn ihr euch folgende seite mit dem IE anschaut.


    http://twg-klick.net/kempf


    Im FF wird die Hintergrundgrafik nicht wiederholt, im IE allerdings schon, wie kann ich das am besten umgehen. Weiter ignoriert der IE die width angabe bei der naviegation.


    Könnt ihr mir vielleicht tips gebe wie ich das handhaben kann?


    #nav ist für das menü auf der linken seite


    #nav-oben für das obere menü.





    thx.



    Greetz TimTim

    Ne, sry dort ist jetzt kein offensichtlicher fehler mehr drinn. Sicher das es die stelle ist.


    Kann auch sein das es durch einen der aufrufe geschiet. Aber da kann ich dann nichtsmehr dazu sagen.


    Ich versteh das eh nicht. Du hast dir das Wordpress heruntergeladen und da sollen die fehler drinn sein ?.


    Woher hast du es denn.


    Greetz timtim

    ah, verguggt, nicht vorletzte sondern 3 letzte



    $o

    Code
    embed = _wp_oembed_get_object();
       $oembed->providers[$format] = array( $provider, $regex );
    }


    Code
    $oembed = [b]$[/b]_wp_oembed_get_object();
       $oembed->providers[$format] = array( $provider, $regex );
    }



    Naja, auf den Free hostern ist es oft abgeschalten.


    Aber auf standartserver muss das gehen.


    Greetz TimTim

    Hast du auch die IP adresse in $REMOTE_ADDR?


    wenn nicht dann mach zuvor mal noch


    $REMOTE_ADDR = $_SERVER["REMOTE_ADDR"];


    Die sollte ja schon definiert sein.


    Greetz TimTim

    Dann sollten wir mal über die Debbuging möglichkeiten reden.


    PHP hat dort einige hilfreiche funktionen.


    Zum sehen ob PHP fehler ausgibt die wir nicht sehen, schreiben wir ganz oben in die Datei


    Code
    error_reporting(E_ALL);


    Und nach jedem querry


    Code
    echo mysql_error();


    So bekommen wir schonmal einige fehler herraus.
    Wenn du das eingebaut hast schau ich gerne nochmal auf die seite.


    Dann lass dir mal zu testzwecken das $sql per echo ausgeben ob dort vielleicht etwas falsch ist.


    Dann zum nächsten, hast du das darüber auch genau gelesen?


    Nachdem wie das skript jetzt aussieht glaube ich es nicht.


    Greetz TimTim

    So, habe mir mal deine Querrys angeschaut. Die sind so nicht schön.



    1. Warum schreibst du in die Couter TB jeden user hinein. Das sind doch auf zeit viel zu viele daten.


    2. Warum machst du Select * wen du ledigich die anzahl der einträge haben willst.


    3. Für was brauchst du bei einem counter die info über betriebssystem, und browser.


    Man sollte immer angeben welche spalten man anspricht und nicht * benutzen auch wenn man alle auslesen will.
    Wen die Tabellen größer werden und du alle abfragen so schreibst, sind 60% der verbrauchten leistung verschwändet, machen die DB langsamer und lässt den MySQL server leichter fehler ausgeben.


    Ich glaube das wird selten bei Tutorialen angesprochen ist aber sehr wichtig denke ich.


    Vielleicht solltest du dir doch lieber ein wenig mehr zeit nehmen um den ganzen php grundteil zu lernen.


    Ich kann mir vorstellen das deine scripte recht große sicherheitslücken haben.


    Am anfang ist das alles eben recht komplieziert, aber das wird mit der zeit schon =).


    Greetz TimTim

    Ok,


    Am besten du schaust dir mal im Tutorial den teil zu den Cookies an.
    Damit lässt es sich ganz gut lösen.


    Oder du sätzt eine IP sperre ein.


    Dann bäuchtest du eine tabelle die so ausehen sollte.


    Code
    CREATE TABLE IF NOT EXISTS `ip_sperre` (
      `id` int(32) NOT NULL AUTO_INCREMENT,
      `user_ip` char(16) NOT NULL,
      `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      KEY `user_ip` (`user_ip`,`time`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


    Und dann schreibst du eine Abfrage nach


    Code
    "SELECT user_ip FROM ip_sperre WHERE ip = ".$REMOTE_ADDR." LIMIT 1"


    Überprüft ob die IP bereitzs eingetragen ist. Falls ja zählst du nicht hoch. Wenn doch dann wird hochgezählt. Und die IP in die ip_sperre eingetragen.


    Bei dem feld Time musst du selbst nichts eintragen, da dort bei jedem neuen eintrag automatisch der momentane Timestampe eingetragen wird.


    Dann baust du darunter noch einen Querry der die einträge wieder löscht.


    Code
    "DELET FROM ip_sperre WHERE time > ".time()-3600.""


    das time() enthält den momentanen Timestamp, und die 3600 sind die secunden die abgezogen werden also eine Stunde. Somit würde nur jede stunde der gleiche besucher hochgezählt.


    ** Ich habe keine ahnung ob ich das so gut erklären kann. wie gesagt, falls fragen sind helfe ich gerne weiter.


    Greetz TimTim

    Ok, nur keinen stress machen =).


    Falls du etwas nicht genau verstanden hast kann ich es gerne noch etwas ausführlicher schreiben. bzw. gleich einen link zu einem Tutorial hinzufügen =).



    Skanky Korrekt.
    Ich hab mir den hintergrund mal genauer angeschaut. Wegen dem schüler war ich bei einem System das wir mal bei uns an der schule haten. Mit test die über ein Modul gemacht werden konnten. Da wäre diese logig sinfoller.


    Für diesen fall würde ich auch diese lösung wählen wenn alles in die DB muss.


    tb user
    user_id, name, ip, uhrzeit


    tb Fragen


    id, frage


    tb Antworten-moeglich


    id, frage_id, antwort_id, antwort


    tb fragebogen


    id, user_id,frage_id,antwort_id,freie_antwort



    Dann gibt es keine redundanz.


    Greetz TimTim

    Jop korrekt, aber das einzige was hier redundant ist, wäre die rechner IP, die könnte man in eine kürzere form bringen und dann die user ID.


    mehr nicht.


    Wenn dann nur die IDs drin stehen ist das korrekt.


    oder verstehen wir uns gerade falsch =)


    Aber um es genauer sagen zu können müsste man mehr infos haben.


    Greetz

    Und wenn es mal 100 Fragen sind ist das ne sehr seltsame Tabelle...


    Also eigentlich ist das schon korrekt so.


    TAblele Fragen


    Tabele Schüler


    Tablele Computer



    Und in der Dritten dann


    id, Schüler id, Frage id, Computer id, uhrzeit


    Dann kannst du die namen bzw Mail adresesen rauslassen und nur die ID der schüler eintragen ist nacher schneller beim durchsuchen. Und bei den rechnern genauso. Nur die ID der Rechner eintragen usw.



    Greetz TimTim


    **Edit


    Merke gerade das da n haufen Rechtschreibfehler drinn sind. Ich entschuldige mich.


    Falls interresse daran besteht die DB struktur zu überarbeiten (falls es nötig ist) würde ich gerne dabei helfen. Was dann nötig ist ist eine genaue beschreibung was genau gemacht wird.

    So problem erkannt.


    Der primary Key heist nicht umsonnst so. 1. Ist er Unique das heist einzigartig, das soll er auch sein denn jeder datensatz soll eine eigene eindeutige id bekommen. Und man darf ihn auch nur 1 mal benutzen. Sonnst passiert das was bei dir passiert. Er wird nicht richtig angewendet.


    Dann funktioniert auch AI.


    Den nur in dieser verbindung macht der AI ja sinn. Sonnst weis MySQL nicht ob es die Zahl schoneimal gibt. Und schreibt immer die erste die ihm vorgegeben wird.


    Warum wolltest du den überall den primary setzen ?


    Dafür gibt es nacher den INDEX. Den setzt man auf alle felder die offt durchsucht werden.


    Hier mal die verbesserte variante.



    CREATE TABLE IF NOT EXISTS `fragebogen` (
    `ID` int(11) NOT NULL AUTO_INCREMENT,
    `schueler` varchar(50) NOT NULL,
    `computer_id` varchar(20) DEFAULT NULL,
    `FrageID` varchar(20) NOT NULL DEFAULT '',
    `AntwortID` varchar(20) NOT NULL DEFAULT '',
    `FreieAntwort` varchar(3000) DEFAULT NULL,
    `Transaktionsdatum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`ID`),
    KEY `schueler` (`schueler`),
    KEY `computer_id` (`computer_id`),
    KEY `FrageID` (`FrageID`),
    KEY `AntwortID` (`AntwortID`),
    FULLTEXT KEY `FreieAntwort` (`FreieAntwort`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;




    INSERT INTO `fragebogen` (`ID`, `schueler`, `computer_id`, `FrageID`, `AntwortID`, `FreieAntwort`, `Transaktionsdatum`) VALUES
    (1, 'Stephie Schmidt', '79.215.10.196', 'F13', '', NULL, '2010-01-12 22:09:26'),
    (2, 'Stephie Schmidt', '79.215.10.196', 'F5', '', NULL, '2010-01-12 22:09:26'),
    (3, 'Stephie Schmidt', '79.215.10.196', 'F4', '', NULL, '2010-01-12 22:09:26'),
    (4, 'Stephie Schmidt', '79.215.10.196', 'F1', '', NULL, '2010-01-12 22:09:26'),
    (5, 'Stephie Schmidt', '79.215.10.196', 'F1', '2', NULL, '2010-01-12 22:11:17'),
    (6, 'Stephie Schmidt', '79.215.10.196', 'F4', '1', NULL, '2010-01-12 22:11:17'),
    (7, 'Stephie Schmidt', '79.215.10.196', 'F5', '2', NULL, '2010-01-12 22:11:17'),
    (8, 'Stephie Schmidt', '79.215.10.196', 'F13', '0', NULL, '2010-01-12 22:11:17'),
    (9, 'Max', '79.215.7.40', 'F13', '0', NULL, '2010-01-13 17:53:38'),
    (10, 'Max', '79.215.7.40', 'F5', '2', NULL, '2010-01-13 17:53:38'),
    (11, 'Max', '79.215.7.40', 'F4', '1', NULL, '2010-01-13 17:53:38'),
    (12, 'Max', '79.215.7.40', 'F1', '0', NULL, '2010-01-13 17:53:38'),
    (13, 'xxx', '87.170.51.54', 'F1', '0', NULL, '2010-01-13 18:03:14'),
    (14, 'xxxe', '87.170.51.54', 'F4', '0', NULL, '2010-01-13 18:03:14'),
    (15, 'xxx', '87.170.51.54', 'F5', '2', NULL, '2010-01-13 18:03:14'),
    (16, 'xxx', '87.170.51.54', 'F13', '0', NULL, '2010-01-13 18:03:14'),
    (17, 'xxx', '79.215.2.134', 'F1', '1', NULL, '2010-01-13 18:42:58'),
    (18, 'xxx', '79.215.2.134', 'F4', '0', NULL, '2010-01-13 18:42:58'),
    (19, 'xxx', '79.215.2.134', 'F5', '2', NULL, '2010-01-13 18:42:58'),
    (20, 'xxxe', '79.215.2.134', 'F13', '0', NULL, '2010-01-13 18:42:58');