kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: CREATE VIEW (MySql) bei Lima-City nicht erlaubt?

    geschrieben von cars-ten

    Das erklärt es. Ich bin definitiv ein "alter" Benutzer ... ;-) und werde das Ticket gleich mal aufmachen. Danke!!
  • in: CREATE VIEW (MySql) bei Lima-City nicht erlaubt?

    geschrieben von cars-ten

    Hi Kollegen,

    ich habe gerade versucht, eine View anzulegen wurde dann aber zurückgepfiffen mit der Meldung
    CREATE VIEW command denied to user 'USER16nnnn'@'webspace6.lima-city.de' for table 'mydm'

    Muss man möglicherweise Gulden bezahlen, um Views anlegen zu dürfen, oder gibt es die gar nicht unter Lima-City?
  • in: Auswahl einer ID aus einer MySql Tabelle

    geschrieben von cars-ten

    Du musst in function ausfüllen() zunächst das Select-Feld selbst bestimmen mit
    var optionsfelder=document.getElementById('optionsfeld')

    Dann kannst Du mit
    var var opt_nr=optionsfelder.selectedIndex
    herausfinden, welcher Eintrag (welche Option) aktuell selektiert ist. Diesen kannst Du dann z. B. so weiterverarbeiten:
    eval(optionsfelder[opt_nr].value);

    Ich habe es nicht ausgetestet, aber so, der so ungefähr solltest Du zur Lösung kommen!

    ((Ich weiß, ich wiederhole mich, weil ich fast alle meine Beiträge zu JavaScript mit dieser Bemerkung beende, aber trotzdem:
    Schau Dir mal die JavaScript-Bibliothek jQuery an. Damit lassen sich Deine Operationen viel leichter nachvollziehbar und mit weniger Code umsetzen. Klar musst Du Dich an dieses Framework erst einmal gewöhnen, aber es ist ein sehr schlankes Paket und macht JavaScript-Programmierung insgesamt sooooo viel leichter, weil man sich wieder auf die eigentlichen Inhalte konzentrieren kann.))
  • in: PHP Uploader Daten mit FTP senden

    geschrieben von cars-ten

    Nur noch eine Frage zum Verständnis (ich bin in Sachen File-upload auch noch ziemlich "grün"=unerfahren):

    Wenn Du eine Datei mit POST hochlädtst, dann wird sie doch automatisch unter einem temporären Verzeichnis auf dem "schnellen Server" zunächst zwischengespeichert, oder etwa nicht ?!?

    Dein Kommando ftp_put(...) bezieht sich ja definitiv auf eine Datei des "lokalen" Server (also Deines "schnellen Servers"). Dann hast Du also auf dem Temp-Bereich Deines "schnellen Servers" keine Platzprobleme?
  • in: Auswahl einer ID aus einer MySql Tabelle

    geschrieben von cars-ten

    Hmmm, nach dem Stand des PHP-Scripts sollten in den Auswahlmöglichkeiten der Select-Box lediglich die ID-Nummern der Datensätze angezeigt werden, während die Inhalte von der Spalten Titel und Inhalt im Value Attribut In Verbindung mit Deiner Javascript-Function "eintragen()" untergebracht sind. Ich nehme jedenfalls an, dass "eintragen()" eine JavaSript-function sein soll. Ich weiß noch nicht, wie Du sie aufrufen willst, denn allein dadurch, dass sie in einem Value-Attribut aufgeführt wird wird sie definitiv noch nicht ausgeführt. Dazu solltest Du vielleicht ein onclick-Attribut definieren.

    Also, nach Stand des PHP-Sripts sollte folgender HTML-Code erzeugt worden sein:
    <option value="eintragen('nr1','TITEL_aus_DB-TABELLE');eintragen('nr2','INHALT_aus_DB-Tabelle')">ID_aus_DB-TABELLE</option>


    Als Option angezeigt wird dann aber nur ID_aus_DB-TABELLE.

    Ich habe Deinen letzten Beitrag gerade noch einmal gelesen. Möchtest Du vielleicht statt einer Select Box (ich hatte bislang angenommen, dass der gesamte HTML-Code von einem <select name=... > und </select> eingeschlossen wurde) mehrere Input-Boxen (=einzeilige Texteingabefelder) erzeugen?!?!!!!

    In dem Fall sollte Dein Code eher wie folgt aussehen:
    while($row = mysql_fetch_array($result)) {
    echo "<input type='text' name='titel_$row[id]' value='$row[titel]' size=16> "
        ."<input type='text' name='inhalt_$row[id]' value='$row[inhalt]' size=60><br>\n";
    }

  • in: javascript variable in php

    geschrieben von cars-ten

    Alfr3d hat die Lösung schon richtig umrissen.

    Du musst clientseitig die Bildschirmauflösung mit JavaScript "erfragen" und kannst sie dann am einfachsten über ein hidden-Input-Feld beim nächsten Senden des Formulars an den PHP-Server übermitteln.

    Alternativ kannst Du (mit AJAX) im Hintergrund die Information an den Server senden und auch eine evtl. Rückmeldung gleich in die aktuelle Seite einbauen. Die AJAX-Lösung kommt ohne ein Absenden eines Formulars aus, ist aber in der Anwendung ein klein wenig komplexer. Am besten verwendest Du eine JavaScript Framework-Bibliothek wie z. B. jQuery. Wenn Du Dich erst einmal an die grundsätzliche Notation von jQuery gewöhnt hast, wird die restlicheJavaScript-Programmiererei zum Kinderspiel!

    (Es gibt natürlich auch zahlreiche andere Bibliotheken, wie z.B. Prototype ...)
  • in: Auswahl einer ID aus einer MySql Tabelle

    geschrieben von cars-ten

    Hi Alfr3d,
    ja, im Prinzip hast Du schon Recht. Mich nervt hier nur der Ton ein wenig. Es ist sehr leicht, einfach auf Fehler hinzuweisen und alle anderen als Deppen dastehen zu lassen. Diejeigen, die einige Aspekte korrigiert haben und - in der Schnelle - die übrigen noch nicht herausgeschmissen haben, werden dann auch in die gleiche Kategorie der Oberidioten geschoben.

    Es dauert eben ein klein wenig länger, eine ausgestestete und von allen Fehlern befreite Lösung zu präsentieren, als nur einmal kurz einen auf "dicke Hose" zu machen ... (und wieviele Gulden der schon hat!!!!)
  • in: Auswahl einer ID aus einer MySql Tabelle

    geschrieben von cars-ten

    Na, das ist ja ein netter Umgangston hier ...

    Wenn man innerhalb eines mit doppelten Quotes (") abgegrenzten Strings Variablen unterbringt, so braucht man diese darin definitiv NICHT mit dem Verkettungsoperator zu verknüpfen. Ich glaube schon, dass meine Lösung funktioniert, auch wenn ich meinerseits natürlich auch noch nicht alle Fehler aus dem Originalscript entfernt habe (<b> machen bei <option> keinen Sinn und auch den eigentlichen Inhalt (der Text zwischen <option> und </option>) noch in einfache Quotes zu stellen ('), ist auch überflüssig. Müsste aber trotzdem funktionieren, erzeugt allerdings in der Selektion später sichtbare '-Zeichen.
  • in: Auswahl einer ID aus einer MySql Tabelle

    geschrieben von cars-ten

    Um in der while-Schleife html-Code zu erzeugen, musst Du ihn entweder in einer Stringvariablen speichern oder direkt per echo ausgeben, also z.B. so (mit einzelnen echo-Statements):
    while($row = mysql_fetch_array($result)){
     echo "<option value=\"eintragen('nr1','$row[titel]');eintragen('nr2','$row[inhalt]\">'$row[id]'</option>[/b]\n";
    }
    oder (als kumuliernde Stringvariable):
    $txt='';
    while($row = mysql_fetch_array($result)){
     $txt.= "<option value=\"eintragen('nr1','$row[titel]');eintragen('nr2','$row[inhalt]\">'$row[id]'</option>[/b]\n";
    }
    echo $txt;

    Beachte auch die maskierten doppelten Quotes (\"), die im HTML-Code so stehen bleiben und eben nicht schon auf der PHP-Ebene interpretiert werden sollen!
  • in: PHP Code in Variable nicht ausführen

    geschrieben von cars-ten

    Ja ja, ich hatte da noch einen Fehler übersehen: Die Textstring-Verkettung geschieht bei PHP nicht über "+=" sonder über ".=". Da ich selbst sehr viel mit JavaScript programmiere, ist mir das zunächst gar nicht aufgefallen!

    also versuche mal:
    $puffer .= fgets($handle, 4096);


    Gruß, Carsten
  • in: PHP Code in Variable nicht ausführen

    geschrieben von cars-ten

    Da scheint sich noch ein kleiner Fehler einschlichen zu haben:
    Statt
    $datei
    hätte dort
    $handle
    stehen müssen. Also hier noch einmal das ganze im Zusammenhang:
    <?php
    	$handle = fopen ("/pfad/name.ext", "r");
    	while (!feof($handle)) {
    		$puffer += fgets($handle, 4096);
    	}
    	fclose ($handle);
    	$puffer = htmlentities($puffer);
    	echo "<textarea>$puffer</textarea>";
    ?>

    Übrigens: In Textareas wird html-Code (außer natürlich das schließende Tag von <textarea> selbst!) ohnehin nicht ausgeführt. Insofern könntest Du die Zeile
    $puffer = htmlentities($puffer);
    eigentlich auch weglassen. Nur müsstest Du dann natürlich sicherstellen, dass das schließende Tag vorher "unschädlich" gemacht wird ... Aber, ich sehe schon, dann ist die ursprüngliche Lösung letzenendes doch wieder die einfachere! ;-))

    Gruß,
    Carsten
  • in: Vergleichs-PHP-Script

    geschrieben von cars-ten

    Hi Andrea,
    Es hat, glaube ich, weniger Sinn, Dir im Einzelnen zu erklären, wie das jetzige Script arbeitet, damit Du dann noch mehr "Sonderfälle" damit behandeln kannst. So, wie das Script jetzt schon dasteht, ist es, wie Du selbst sagst, recht unübersichtlich. Und nachdem ich gesehen, habe, wie fast derselbe Code dreimal wiederholt wird,
    ...
              }elseif(strtolower($tmp_mutter[$i]) == "cc" && array_search("chc",array_map("strtolower",$tmp_vater)) !== false){
                $key2 = array_search("chc",array_map("strtolower",$tmp_vater));
                $ausgabe[$d] = multiplyhimas($tmp_mutter[$i]."/".$tmp_vater[$key2]);
                $found_gens[] = "chc";
                $found_gens[] = "chch";
                $found_gens[] = "cc";
              }elseif(strtolower($tmp_mutter[$i]) == "chch" && array_search("cc",array_map("strtolower",$tmp_vater)) !== false){
                $key2 = array_search("cc",array_map("strtolower",$tmp_vater));
                $ausgabe[$d] = multiplyhimas($tmp_mutter[$i]."/".$tmp_vater[$key2]);
                $found_gens[] = "chc";
                $found_gens[] = "chch";
                $found_gens[] = "cc";
              }elseif(strtolower($tmp_mutter[$i]) == "chch" && array_search("chc",array_map("strtolower",$tmp_vater)) !== false){
                $key2 = array_search("chc",array_map("strtolower",$tmp_vater));
                $ausgabe[$d] = multiplyhimas($tmp_mutter[$i]."/".$tmp_vater[$key2]);            
                $found_gens[] = "chc";
                $found_gens[] = "chch";
                $found_gens[] = "cc";
              }else 
    ...
    glaube ich umso mehr, dass ein "rewrite" die bessere Lösung wäre. Es ist nicht unüblich (und ist mir auch schon des öfteren passiert), dass man einen anfangs gewählten Weg irgendwann einfach wieder verlassen und das ganze neu aufziehen muss. Du solltest Dir, unabhängig von konkreten Farbwerten den eigentlichen Algorithmus (=das Regelwerk) klarmachen, der vererbungstechnisch greift. Leider habe ich davon keine Ahnung (ich kenne nur noch "rezessive" und "dominante" Gene ...). Aber, wenn es Dir gelingt, dieses Regelwerk unabhängig von konkreten Farbwerten aufzubauen, brauchst Du es später nur noch mit Deinen konkreten Farben (und ihren spezifischen Eigenschaften, wie "dominant"/"rezessiv" oder was auch immer) zu füttern. Die Farbdaten selbst können dann in einer übersichtlichen Struktur, vielleicht sogar in einer oder mehreren Datenbanktabellen gehalten werden. Eine Erweiterung ist dann sehr einfach und das ganze läßt sich dann wahrscheinlich auch einfacher auf andere Nagetiere anpassen.

    Vielleicht kannst Du die Regeln ja tatsächlich ine "einfachen Worten" beschreiben? Das wäre schon mal ein guter Anfang! (Dein Beispiel mit den Abkürzungen habe ich so leider noch nicht verstanden... vielleicht fehlen da aber auch nur noch ein paar Definitionen?)

    [hr]
    Habe mir Deine eingabe.php-Seite noch einmal angesehen. Daraus ist ersichtlich, wie sich unterschiedliche Farben als Ergebnis von bestimmten Genkombinationen (1 bis 5 Gene) ergeben. Diese "Farbtabelle" solltest Du in einer Datenbankstruktur (drei Tabellen) hinterlegen. Hier ein paar mögliche Tabellendefinition:
    -- Tabelle der Erscheinungstypen (der "gemischten" Farben)
    CREATE TABLE phaenotyp (phaenid int auto_increment primary key, farbname varchar(128));
    -- Tabelle der einzelnen Gene (getrennte Einträge für MOmo und MOMO in Spalte gencode)
    -- wichtig: COLLATE  latin1_general_cs für Spalte gencode!
    CREATE TABLE gene (genid int auto_increment primary key, gencode varchar(8) COLLATE latin1_general_cs , genname varchar(64))
    -- Tabelle der Genkombinatinen (es können n Gene zu einem Phaenotyp zusammenkommen)
    CREATE TABLE combi (pid int,gid int, UNIQUE (pid,gid))
    Nachdem Du die Basisgene wie folgt eingeben hast:
    insert into gene (gencode,genname) VALUES
    ('AA','Black'),
    ('aa','Agouti'),
    ('Aa','Black?'),
    ('BB','Chocolate'),
    ('Bb','Schoko'),
    ('bb','Kakao'),
    ('dd','english Blue')
    -- usw. ...
    kannst Du die Farbkombinationen wie folgt definieren:
    -- zuerst die Namenseinträge in phaenotyp:
    INSERT INTO phaenotyp (farbname) VALUES
    ('Black'),('Agouti'),('Chocolate'),('Cinnamon Chac based'),('Classic Lilac'),('Classic Lilac Agouti')
    -- dann die erforderlichen Gene zusammensuchen ...
    INSERT INTO combi VALUES
    (1,2),
    (2,1),
    (3,2),
    (3,6),
    (4,1),
    (4,6),
    (5,2),
    (5,6),
    (5,7),
    (6,1),
    (6,6),
    (6,7)
    Wenn Du so mit allen genen und Farbkombinationen verfährst, hast Du hinterher ein genaues Abbild der Zusmmenhänge in einer strukturierten Datenbank und Du kannst über (relativ) einfache Abfragen erfahren, welche Gene zu einer bestimmten Farbzusammensetzung gehören
    select farbname,gencode,genname from phaenotyp 
      inner join combi on pid=phaenid 
      inner join gene on genid=gid
    WHERE farbname='classic lilac'
    ergibt die folgendes:
    farbname        gencode   genname
    --------------------------------------  
    Classic Lilac   aa        Agouti 
    Classic Lilac   bb        Kakao 
    Classic Lilac   dd        english Blue
    oder welches Erscheinungsbild bei einer bestimmten Genkombination entstehen wird:
    select * from phaenotyp
     where phaenid in 
      (select pid from combi inner join gene on genid=gid where gencode='aa')
     AND phaenid in 
      (select pid from combi inner join gene on genid=gid where gencode='bb')
     AND phaenid in 
      (select pid from combi inner join gene on genid=gid where gencode='dd')
    ergibt:
    phaenid     farbname 
    -------------------------
    5           Classic Lilac
    Die SQL-Abfrage würde in Deinem PHP-Script natürlich je nach Anzahl der beiteiligten Gene "mechanisch" zusammengebaut werden. (Die Abfrage ist so auch noch nicht ganz komplett, denn im Moment würde sie auch noch Farben liefern, die zu ihrer Entstehung die oben aufgeführten, aber darüberhinaus noch weitere Gene benötigen!). Grundsätzlich hätest Du damit aber die wesentliche Logik in den Bereich der Datenbank verbannt und keine verwirrenden if und esle-if Konstrukte mehr in Deinem PHP-Script.

    Die Abfragen liessen sich noch leichter (ein 'INNER JOIN' weniger!) schreiben, wenn Du in der Tabelle 'gene' die Spalte 'gencode' gleich alsPrimärschlüssel verwenden würdest. Diesen müsstest Du dann natürlich auch wieder in der Tabelle 'combi' aufschnappen, also dort gäbe es dann die Spalten 'pid' und 'gcode' (statt 'gid').
  • in: Jquery this + weitere Atribute verwenden

    geschrieben von cars-ten

    Na, da fängst Du ja gleich ganz schön ntensiv mit jQuery an! Habe schon vieles damit emacht, aber ein plugin habe ich bislang noch nicht in Angriff genommen. In Deinem Code konnte ich ein paar Syntaxfehler (=fehlende Zeichen) entdecken. Der folgende Code zeigt dann auch zumindest das erste Bild mit dem eingeblendeten Untertitel an. Die anderen Bilder werden nicht behandelt, weil die Pseudovariable 'this' in der global definierten function gallery(), die über einen Intervalltimer aufgerufen wird, nicht bekannt ist!

    Die function gallery() müsste Teil Deines Plugin sein, damit sie auf das mit jQuery identifizierte Object über this oder $this zugreifen kann!

    Wie das genau geht, musst Du aber schon selbst herausfinden - keine Zeit mehr ...
    (function($){
    $.fn.smallShow = function(options) {
    		var
    		 defaults = {
    			speed : '3000',
    		},
    		settings = $.extend({}, defaults, options);  
    	this.each(function() {
    	
    		var $this = $(this);
    			
    		$(this).append('<li id="slideshow-caption" class="caption"><div class="slideshow-caption-container"><h3></h3><p></p></div></li>');			
    		$('li',this).css({opacity: 0.0});
    		$('li:first',this).css({opacity: 1.0});	
    		$('#slideshow-caption h3').html($('a:first', this).find('img').attr('title'));
    		$('#slideshow-caption p').html($('a:first',this).find('img').attr('alt'));
    		$('#slideshow-caption').css({opacity: 0.7, bottom:0});	
    		var timer = setInterval('gallery()',settings['speed']);
    		$(this).hover(
    			function () {
    				clearInterval(timer);	
    			},function () {
    				timer = setInterval('gallery()',settings['speed']);			
    			}
    		);
    	
    	})
    }
    })(jQuery);  
    
    function gallery() {
    	var current = ($('li.show',this)?  $('li.show',this) : $('li:first',this));
    	var next = ((current.next().length)?((current.next().attr('id') == 'slideshow-caption')? $('li:first',this):current.next()): $('li:first', this));
    	var title = next.find('img').attr('title');	
    	var desc = next.find('img').attr('alt');	
    	next.css({opacity: 0.0}).addClass('show').animate({opacity: 1.0}, 1000);
    	$('#slideshow-caption').animate({bottom:-70}, 300, function () {
    			$('#slideshow-caption h3').html(title);
    			$('#slideshow-caption p').html(desc);				
    			$('#slideshow-caption').animate({bottom:0}, 500);	
    	});		
    	current.animate({opacity: 0.0}, 1000).removeClass('show');
    }
    
    
    $(document).ready(function() {		
    	$('ul.slideshow').smallShow();
    });
  • in: Jquery this + weitere Atribute verwenden

    geschrieben von cars-ten

    Der jQuery-Selector hat ein optionales 2. Argument, in dem der Kontext des ersten Argument angegeben werden kann. Ein <li> innerhalb eines <div>, das schon als DOM-Objekt in der Pseudovariablen 'this' vorliegt, selektierst Du deshalb mit
    $('li',this)
    Die von Dir angeführte Syntax
    $(this 'li')
    ist so leider nicht möglich, da Du ein DOM-Objekt einfach neben eine String-Variable stellst. Die Variablen sind weder durch ein Komma getrennt, noch werden sie mit einem + verbunden (was ohnehin nicht ginge). Ein Selektor
    $('div li')
    hingegen wäre möglich, findet aber ein <li> unterhalb eines JEDEN beliebigen <div> und eben nicht nur in dem unter 'this' abgelegten <div>.
  • in: Kleines Abfrage Problem

    geschrieben von cars-ten

    Die Meldung
    mysql_result() expects parameter 1 to be resource, boolean given
    besagt lediglich, dass die mit mysql_query() abgeschickte Abfrage als Rückgabewert einen logischen Wert zurückgegeben hat. Ein Zeichen dafür, dass in der Abfrage womöglich ein Syntaxfehler versteckt war oder eine nicht existierende Spalte referenziert wurde. Um Klarheit zu bekommen, solltest Du Deine Abfrage mit einer Fehlerausgabe kombinieren (zumindest während der Debug-Phase)
    $result = mysql_query("SELECT count(*)  FROM account WHERE online='1' AND ID in
                    (SELECT ID FROM acount_access WHERE gmlevel IN (1,2) ))");
    if ($result)  list($anzahl)=mysql_fetch_row($result); 
    else echo 'Fehler in Datei'.__FILE__.' Zeile '.__LINE__.': '.mysql_error();
    // falls kein Fehler auftreten sollte kannst Du 
    // die gesuchte Zahl in $anzahl weiterverwenden ...
    dann weißt Du zumindest, WAS da nicht gepasst hat ...

    Ich habe mal ein paar Beispieltabellen erstellt:
    CREATE TABLE account (ID int, name varchar(80),online int, PRIMARY KEY (ID));
    CREATE TABLE account_access (ID int,gmlevel int, grp int, PRIMARY KEY (ID))
    darin ein paar Werte untergebracht:
    INSERT INTO account VALUES (1,'a',1),(2,'b',1),(3,'c',0),(4,'d',1),(5,'e',0),(6,'f',1);
    INSERT INTO account_access VALUES (1,1,3),(2,0,3),(3,2,3),(4,2,3),(5,0,3),(6,1,3)
    und es dann damit ausprobiert:
    select count(*) anzahl from account where online='1' AND id in
    (select id from account_access where gmlevel in (1,2))
    Als Ergebnis habe ich die Zahl
    $anzahl = 3
    bekommen, was ich auch so erwartet habe: Es gibt genau Drei "Leute", die den gmlevel 1 oder 2 haben und "online" sind (online=1).
  • in: Kleines Abfrage Problem

    geschrieben von cars-ten

    Versuch es mal mit dieser Abfrage:
    SELECT count(*) as count FROM account 
    INNER JOIN account_acces ON account_acces.ID=account.ID 
    WHERE gmlevel in (1,2) AND online='1'
    Das liefert Dir allerdings nur dann die richtige Anzahl, wenn maximal jeweils ein Eintrag in account_access einem Eintrag in account zugeordnet ist, oder, anders ausgedrückt, wenn z.B. ID sowohl in account als auch in acount_access UNIQUE KEYs sind. Falls Du in acount_access einem Eintrag in account auch mehrere Access-Levels zugeordnet haben solltest, kannst Du das ganze über eine Unterabfrage lösen:
    SELECT count(*) as count FROM account WHERE online='1' AND ID in
    (SELECT ID FROM acount_access WHERE gmlevel IN (1,2) ))
  • in: Fehlermeldung phpmail

    geschrieben von cars-ten

    Die header()-function darf nur aufgerufen werden, wenn auf der aktuellen Seite noch keine Ausgabe erfolgt ist (z.B. durch echo,die, print ... oder aber auch einfacher Text außerhalb eines PHP-Blocks). Anscheinend hat es in Deinem Sript auf Zeile 10 schon eine Textausgabe gegeben und der hat dann zu dem Fehler, der in Zeile 104 gemeldet wurde, geführt.
  • in: Link Out Counter

    geschrieben von cars-ten

    He Jungs,
    immer schön locker bleiben... ich habe mir schon gedacht, dass meine Meta-Anweisung für Diskussionsstoff sorgen würde! Die Sache mit den Short-Open Tags (@nikic: Vielen Dank für den Hinweis auf den short_open_tag-Flag!) benutze ich des öfteren, wenn ich - was hier sicher auch als unsauberer Stil bezeichnet werden wird - auf einer PHP-Seite in einem "Template-Bereich" (also in einem reinen html-Bereich) auf sehr kurze Art und Weise den Inhalt einer PHP-Variablen unterbringen möchte. Die Alternative wäre, den gesamten html-Code durch echo-Anweisungen auf die Seite zu bringen. Dabei läßt sich der html-Code, da er (möglicherweise auch noch fragmentiert) in PHP-Strings steht, aber nicht mehr mit einem Syntax-Hilighter auf offensichtliche Fehler überprüfen. Deshalb ich halte die Short-Open-Tags nach wie vor für eine praktikable Lösung (vorausgesetzt, das o.g. Flag ist auch tatsächlich gesetzt!).

    Und ich nehme gern den Hinweis mit der "echten" PHP-header-Funktion an! Danke, werde ich mir für zukünftige Anwendungen merken!
  • in: Link Out Counter

    geschrieben von cars-ten

    Ich nehme an, dass da eher
    example.org/go-to?t=example.net
    gestanden hat. Denn so wäre es einfach, die Umleitung mit der Datei "index.php in Ordner "go-to" zu übernehmen. index.php bekommt dann eine Variable $_GET['t'] hereingereicht, die das Umleitungsziel definiert. Nun ist es ein Leichtes, die Umleitungsaktion mit den dazugehörenden Informationen wie Zeitpunkt, möglicherweise Benutzername (aus einer Sessionvariable, falls sie existiert) und IP-Adresse (ja,ja, ich sage jetzt nichts zu den datenrechtlichen Bestimmungen ...) mit einem INSERT in eine entsprechende MySQL Tabelle einzufügen und danach mit einem einfachen HTML-header-Meta-Tag
    <meta http-equiv="refresh" content="0; URL=<?= $_GET['t'] ?>">
    die Umleitung auf die neue Seite vorzunehmen. In der obigen Zeile habe ich in ein "normales" head-tag ein kurzes PHP-Segment eingefügt. Dabei ist "<?=" quasi gleichbedeutend mit "<?PHP echo".

    Naja, nun bin ich eben der zweite, der das schreibt ...

    LG,
    Carsten
  • in: MYSQL Funktion

    geschrieben von cars-ten

    Alles schön und gut, aber Functions können wir hier unter Lima-city nicht definieren, oder?!?

    Ich hab's zumindest mal hiermit (bewusst ein paar Stufen einfacher) probiert:
    CREATE FUNCTION hello (s CHAR(20))
    RETURNS CHAR(50) DETERMINISTIC
    RETURN CONCAT('Hello, ',s,'!');

    und bin mit
    #1044 - Access denied for user 'USER16nnnn'@'%' to database 'db_nnnnnn_n'

    höflich, aber doch sehr bestimmt, zurückgewiesen worden. :-(
  • in: String überprüfen (preg_match)

    geschrieben von cars-ten

    Da Du ja eigentlich zwei Bedingungen abprüfen möchtest, musst Du auch zweimal testen:
    $stri="Hier der String der überprüft werden soll";
    $res=preg_match('#[A-Za-z]#',$stri) && preg_match('#[0-9]#',$stri);


    So sollte es gehen - getestet habe ich es aber nicht ...
  • in: AJAX Daten senden und laden

    geschrieben von cars-ten

    Habe Deinen Code noch nicht selbst getestet, aber folgendes fällt mir auf:

    1. Der Befehl zum Erzeugen des xmlHttp-Objects ist hier nicht dargestellt. Dieser Befehl ist unterschiedlich für W3C-konforme Browser und dem MS-IE und möglicherweise solltest Du den noch einmal überprüfen! Die von Dir benutzten Befehle sind dagegen (nach meinem Wissensstand) "crossbrowsertauglich".
    2. Du verwendest zweimal die send()-Methode, einmal mit Daten und danach wieder ohne! Das zweite send() ist definitiv überflüsig. Das erste send() dagegen rufst Du zu früh auf: Du solltest erst Deine onreadystatechange-function definiert haben und erst dann den Ajax-(Sende- UND Empfangs-)Vorgang mit send() auslösen. Also, vielleicht klappt es ja damit:

    function setData(name){
     if (xmlHttp) {
         xmlHttp.open('GET', 'datei.php', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("content").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send('name=' + name);
     }
    }


    Aber: ausgetestet habe ich es selbst noch nicht ...

    [[ Aber darüberhinaus stimme ich qap2 eigentlich zu: Bibliotheken können Dir die Arbeit erheblich vereinfachen. Ich selbst LIEBE jQuery! Der Einstieg ist vielleicht etwas gewöhnungbedürftig, aber wenn Du das jQuery-Prinzip erst einmal verstanden hast, sparst Du Dir sooooooo viel Arbeit und kannst Dich auf das wesentliche konzentrieren,]]
  • in: CSS Schreibeproblem

    geschrieben von cars-ten

    Du hast ein wenig zuviel geschrieben! Gerade im zweiten CSS-Block für die hover-Situation brauchst Du die Merkmale, die Du schon vorher gleich definiert hast, nicht noch einmal zu erwähnen, da sie "cascadierend" (daher der Name!) von der darüberliegenden CSS-Eigenschaft übernommen werden.

    Der Grund, warum Du keinen Text hinter die Menüeinräge schreiben konntest, liegt in der
    display:block
    Eigenschaft. Wenn Du sie in "inline" änderst, klappt es. Hier Dein von mir abgeänderter Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <style type="text/css">
    a.menupunkt{
    color: black;
    font-weight: normal;
    text-align: left;
    font-family: Arial;
    font-style: normal
    font-size: 15 px;
    border-color: yellow ;
    border-style: normal ;
    border-width: 2 px;
    padding: 8 px;
    background: red;
    width: 130;
    display:inline;
    text-decoration: none;
    }
    a.menupunkt:hover{
    color: blue;
    font-weight: 600;
    text-align: right;
    border-color: black ;
    background: black;
    }
    </style>
    </head>
    <body>
    <a class="menupunkt"href="deineurl" target="">Home</a> Home-Text ...<br>
    <a class="menupunkt"href="deineurl" target="">Über uns</a> Über uns-Text ...<br>
    <a class="menupunkt"href="deineurl" target="">Produkte</a> Produkte-Text<br>
    <a class="menupunkt"href="deineurl" target="">Help</a> Help-Text ...<br>
    <a class="menupunkt"href="deineurl" target="">Links</a> Links-Text ...<br>
    <a class="menupunkt"href="deineurl" target="">Impressum</a Impressum-Text ...><br>
    </body>
    </html>
  • in: MySQL Primary Key auto increment für nicht-Zahlen

    geschrieben von cars-ten

    Habe gerade unter myphpadmin kurz angetestet, on sich eine varchar()-Spalte als PRIMARY KEY mit autoincrement einrichten läßt und als Antwort folgendes bekommen
    CREATE TABLE cmtest (
    `id` VARCHAR( 12 ) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'string als identity',
    `zahl` INT NOT NULL ,
    `wert` VARCHAR( 30 ) NOT NULL
    ) ENGINE = MYISAM ;
    
    MySQL meldet: Dokumentation
    #1063 - Incorrect column specifier for column 'id'

    Aber warum soll denn die ID-Spalte unbedingt ein anders Format haben? Du kannst es (solltest es!!!!!) sowieso nicht aktiv beschreiben (bzw. verändern). Falls es Dir wichtig ist, die ID-Werte als HEX zu sehen, kannst Du sie z.B. mit
    conv(ID,10,16)
    konvertieren.
  • in: IP in Datenbank speichern

    geschrieben von cars-ten

    Interessante Diskussion!

    Wie sieht es denn aus, wenn ich mich mit meinem Gästebuch vor unflätigen Äußerungen bestimmter Besucher schützen möchte? Ich darf also nicht versuchen, herauszufinden, WER mich fortwährend diffamiert, sondern muss mir das einfach gefallen lassen?!?

    (In meinem Gästebuch weise ich übrigens darauf hin, dass die IP des Eintragers gespeichert wird.)
  • in: IP in Datenbank speichern

    geschrieben von cars-ten

    Das INSERT Statement ist so tatsächlich auch gültig, allerdings hast Du am Ende anscheinend vergessen, den String richtig abzuschließen (es fehlt ein " am Ende). Du kannst den String ohnehin ein wenig einfacher schreiben, da " unter PHP ja immer noch die Auflösung von Variablen zulässt. Du kannst die Variablen direkt in den mit " abgeschlossenen String hineinschreiben:
    "INSERT INTO userdaten SET 
    	username	= '$username', 
    	kid 	= '$kid', 
    	passwort 	= '$pass', 
    	nachname 	= '$nn', 
    	vorname 	= '$vn', 
    	email 	= '$mail', 
    	activated	= '$activated', 
    	Aktiv 	= 1, 
    	guthaben 	= 0, 
    	klicks	= 0, 
    	klickpunkte	= 0,
    	aktivierungscode= '$aktivierungscode'
    	ip              = '$ip'"

    Üblicher ist allerdings die Schreibweise mit VALUES () usw.:
    "INSERT INTO userdaten 
    (username,kid,passwort,nachname,vorname,email,activated,Aktiv,guthaben,klicks,klickpunkte,aktivierungscode,ip)
    VALUES ('".join("','",array($username,$kid,$pass,$nn,$vn,$mail,$activated,1,0,0,0,$aktivierungscode,$ip))."')"

    Über den join-befehl werden auch die numerischen Werte in ' eingeschlossen, aber das stört MySQL eigentlich wenig...


  • in: Eingegebene Url überprüfen

    geschrieben von cars-ten

    He Leute,
    eigentlich gehört dieses Problem in den Fred http://www.lima-city.de/board/sonstige-programmiersprachen, auch wenn die REGEXP hier unter PHP genutzt wird ...

    Die Regular Expression kann natürlich grundsätzlich nur die syntaktische Korrektheit und nicht die Existenz einer URL abfragen. So etwas geht eben nur über eine echte Abfrage (z.B im Hintergrund über Ajax). Aber auch die hier angegegbene Regexp-Syntax läßt sich noch ein wenig anpassen/verbessern:

    1. Um auch info-Domains zuzulassen, muss einfach die Stringlänge für die TLD angehoben werden von max. 3 auf max. 4 Zeichen, also statt "\.[a-zA-Z]{2,3}" jetzt
    \.[a-zA-Z]{2,4}

    2. Um GET-Argumente hinter der URL zuzulassen könnte der String um folgendes ergänzt werden:
    (\?\S+=\S*(\&\S+=\S+)*)?

    äußere Klammer: es wird dort nach dem Vorhandensein ("?"=einmal oder gar nicht) eines Strings gesucht, der mit einem Fragezeichen beginnt "\?", dann mindestens ein oder mehrere non-blank-Zeichen enthält "\S+", danach genau ein "=", danach beliebig viele (=auch keine) non-blan-Zeichen "\S*" (Variableninhalte können auch leer sein), danach optional (Klammergruppe mit "*" bedeutet 0 bis n mal) weitere Argumente, die mit "&" abgetrennt sind.
    Der Gesamt-Regexp-Ausdruck müsste in etwa so aussehen (habe ich jedoch nicht ausgetestet):
    ^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(/\S*)?(\?\S+=\S*(\&\S+=\S*)*)?$
  • in: Tabelle nach Einträgen sortieren

    geschrieben von cars-ten

    Versuchs mal hiermit:

    select irgenwas,sparte from tabelle order by case sparte when 'gesamt' then 1 when 'mx' then 2 else 3 end


    oder so ähnlich.
  • in: MySQL login klappt nicht ?

    geschrieben von cars-ten

    Das SQL-Kommando wurde von MySQL als "fehlerhaft" eingestuft:

    Entweder enthält es einen ungültigen Spalten- oder Tabellennamen, oder sonst irgendetwas. Füge einfach mal
    $err=mysql_error();
    hinter die Zeile mit Deinem Query ein und gib den String $err aus. Damit kannst Du Dir die MySQL-Fehlermeldung zeigen lassen!
  • in: Klick-Captcha erstellen

    geschrieben von cars-ten

    Öhmmmm, ...
    da hast Du natürlich Recht! Wenn der weiterführende Link dann auch schon im html-Code steht, kann natürlich jeder Robot diesem Link folgen. Sorry für meine "mentale Entgleisung"! :frown:

    Habe jetzt nicht die Zeit, Dir eine ausgearbeitete andere Alternative vorzustellen, aber ich weiß - habe es selbst schon angewendet! - , dass es mit jQuery extrem einfach ist, die Mausposition (und die Position des Bildes selbst) herauszufinden, die Du bei einem Click auf einem Bild hattest. Ich weiß, ich wiederhole mich mit meinen jQuery-Hinweisen (auch in anderen Freds), aber diese Library ist wirklich das geilste, was ich in den letzten Jahren zu JavaScript gefunden habe!

    http://jquery.com

    Du musst das Click-Event auf das Bildchen abfangen und damit Deinen Ajax-Aufruf generieren.

    [[Damit gehört dieser Beitrag jetzt eigentlich in den JavaScript-Fred]]
  • in: Ein neuer Sport

    geschrieben von cars-ten

    find' ich echt cool - aber ob es sich als Wettbewerbssportart durchsetzen wird?!? Ich glaube eher nicht, aber es ist echt cool anzusehen! Ich selber laufe zur Zeit eher längere Strecken (mit größeren Rollen) und bin längst nicht mehr beweglich genug, so etwas zu machen ...
  • in: Elementengruppe mit Javascript ansprechen

    geschrieben von cars-ten

    Hol Dir jQuery! Damit ist as ganze ein Kinderspiel!!!!

    http://jquery.com
  • in: Von frame A frame B aktulisieren

    geschrieben von cars-ten

    schau mal hier nach:
    http://de.selfhtml.org/javascript/beispiele/zweiframes.htm
  • in: Grafik skalieren

    geschrieben von cars-ten

    Warum einfach, wenn's kompliziert sein kann?!?!?

    Probier' doch einfach mal IrfanView aus! Die Software ist Freeware, einfach, klein und genial! Gerade Bilder fürs Web aufbereiten geht super schnell damit. Du kannst Irfan auch sehr gut über Shellscripts steuern (aufrufen), oder, wenn Du lieber interaktiv arbeitest, ganze Batch-Jobs interaktiv definieren und ablaufen lassen!

    Bei der Verkleinerung von Grafiken (strg-r) solltest Du darauf achten, dass Du auf jeden Fall resample anhakst und einen vernnftigen Filter (wie Lanczos) wählst. Nach dem Verkleinern evtl. noch einmal nachschärfen (shift-s) und - fertig!

    http://irfanview.de/
  • in: Klick-Captcha erstellen

    geschrieben von cars-ten

    Nachdem Du mit PHP die Grafik erstellt hast und für die Darstellung unter HTML eingebunden hast, brauchst Du nur noch ein passendes "map" dazu zu erstellen. Das ist eine ganz alte HTML-Methode, mit der man Teile einer Bildes in Links verwandeln kann. Ich weiß nicht, ob es sowas auch als CSS-Implementation gibt (wahrscheinlich ...), aber die HTML-Geschichte funktioniert ja auch so!

    Schau mal hier nach: http://de.selfhtml.org/html/grafiken/verweis_sensitive.htm
  • in: Browsergame Animierung

    geschrieben von cars-ten

    Wenn Du Deine Seite nicht gerade mit Flash animieren willst, wirst Du wohl ein wenig JavaScript lernen und anwenden müssen. Am besten startest Du aber gleich mit jQuery - da werden Dir die nervigsten Aufgaben und die Probleme der Browserinkompatibilitäten gleich zu Beginn abgenommen! Außerdem gibt es jede Menge an Plugins für Animationseffekte und ähnliches.

    http://jquery.com

    ... aber, wie bei fast allem: Ohne Fleiß keinen Preis!
  • in: passwortzeile javascript

    geschrieben von cars-ten

    Den Ordner musst Du einfach - mit '/' getrennt - vor die Eingabe setzen:

    <script language="JavaScript">
    var ordner='meinOrdner'
    var eingabe = window.prompt("Bitte Passwort eingeben","");
    window.location.href = ordner + '/' + eingabe + ".html";
    </script>

    Viel wichtiger ist aber, dass Du die neue URL über
    window.location.href

    definieren musst!

    Das darauffolgende <form></form> kannst Du Dir dann sparen.

    Natürlich sollte nicht unerwähnt bleiben, dass das ganze alles andere als sicher ist ...
  • in: Externe Links

    geschrieben von cars-ten

    Das ist mal wieder so ein typischer, Fall wo ich mich Frage: "What is the bloody point!?!" - Warum sollte ich mir die Finger brechen, bei dem Versuch, einen "xhtml 1.0 strict valide" Code zu produzieren, wenn der von vornherein soviel komplizierter sein muss. Wenn ich ein Fenster über
    onclick="open(url)"
    öffnen will, muss ich zumindest voraussetzen, dass JavaScript aktiviert ist!

    Ich glaube, das ist mal wieder so eine Grundsatzdiskussion, wie es sie vor Jahren schon gegeben hat, als Microsoft die Objekteigenschaft innerHTML eingeführt hat. Alle haben darüber gewettert, dass es ja nicht W3C-konform und somit schlecht sei. Aber dass man mit "legalen" Mittel (also der Generierung und Plazierung von Nodes zu einem Objektbaum) einen erheblich höehren Aufwand und Fehlermöglichkeiten hat, wurde dabei geflissentlich übersehen. Mittlerweils findet sich innerHTML auch in anderen Browsern wieder und soll anscheinend demnächst auch in den Standard aufgenommen werden ...

    Meine Meinung: target="_blank" ist völlig OK!

    Carsten
  • in: in DB speichern

    geschrieben von cars-ten

    Bist Du sicher, dass Du mögliche quotes (") ausreichend maskiert hast? Hört sich für Dich vielleicht albern und selbstverständlich an, aber das bei mir immer die Gründe gewesen, warum gewisse SQL-Kommandos nicht funktioniert haben! Am besten lässt Du Dir die Kommandos mal als Text ausgeben, bevor Du sie an MySql weitergibst! So hast Du (bzw. haben wir) eine Chance, zu sehen, wo der Fehler liegt!

    LG,
    Carsten
  • in: Abschneiden eines Strings nach einem Wort

    geschrieben von cars-ten

    Grundsätzlich sieht Deine Lösung plausibel aus. Ich kenne Flash nicht im Detail und hoffe, dass die indexOf()-Funktion dann auch die Position gemessen ab dem Offset (in Deinem Fall 15) zurückgibt, ansonsten könntest Du Dir die Addition des Offsets natürlich sparen.

    Als weiterer Punkt fällt mir auf, dass die Metasequenz /s (="Matches any white-space character (a space, tab, newline, or return character).
    ") nicht unbedingt in einem String gefunden werden muss. Ich weiß nicht, was Du als Antwort bekommst, wenn Dein String (ab Position 15) zum Beispiel so aussieht: "abc" in diesem Fall gibt es kein Leerzeichen oder Zeilenendezeichen!

    Geeigneter für Deine Suche wäre die Metasequenz /b (="Matches at the position between a word character and a nonword character. If the first or last character in the string is a word character, also matches the start or end of the string.
    ") deutlich günstiger!

    Die unter Flash gültigen Metasequenzen sind hier erklärt: http://www.adobe.com/livedocs/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000111.html
  • in: MySQL: Tabellen-Präfix

    geschrieben von cars-ten

    Es wäre auf jeden Fall eine gute Idee, wenn Du dem Benutzer die Möglichkeit gibst, ein von Dir vorgeschlagenes Präfix selbst abzuändern, damit von vornherein Namenskonflikte ausgeschlossen werden können. Ansonsten, glaube ich, sollte die Anzahl an Tabellen nicht sooo groß werden, als dass separate Namespaces wirklich erforderlich wären.

Login zum Webhosting ohne Werbung!