kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Zweimal Count in einer Abfrage bei MySQLi ?

    geschrieben von sportinfo

    ich möchte in einer Spalte in der Tabelle zählen,

    Ergebnis der Abfrage soll sein:

    xa = Alle Gesamt
    xb = Keine doppelten zählen (DISTINCT)

    im "alten" MySQL ging es so
    $sql =  "SELECT COUNT(name1) AS xa, COUNT(DISTINCT name1) AS xb FROM ".$db_tabelle.""; 
    $res = mysql_query($sql);
    
    while( $row = mysql_fetch_assoc($res) )  {
       echo $row['xa'] ." --- ". $row['xb'] ."<br /> \n"; 
       }


    aber bei MySQLi bekomme ich damit nur den ersten Wert für xa
    verwende für mysqli das gleiche $sql Statement
    $sql =  "SELECT COUNT(name1) AS xa, COUNT(DISTINCT name1) AS xb FROM ".$db_tabelle.""; 
    $res= $mysqli->query($sql);
    
    while( $row = $res->fetch_assoc() )  { 
       echo $row['xa'] ." --- ". $row['xb'] ."<br /> \n"; 
       }



    PS: ja ... $mysqli ist eine hergestellte MySQLi Verbindung
    Ergebnis kommt ja auch, aber eben nur das eine für xa


    funktioniert das COUNT(DISTINCT,...) in mysqli nicht,
    oder liegt es daran, das es quasi ja zwei Abfragen in einem Statement sind ?

    Wie dieses "Zwei ml Zählen"
    ... a) Alle, und ... b) nur Unique (keinen Doppelte)
    in mysqli umsetzen ? .... Danke!
  • in: image resize Thumbnail (von gif) und transparentez

    geschrieben von sportinfo

    ja, das ist es im Grunde schon

    $out= imagepng($new_image,$dst);
    und dann
    return $out;

    und den Teil
    switch($type) { ... }
    werde ich auch noch ändern,
    also den case default, wenn Image-Type (key) nicht in case Liste,
    dann anstatt dem echo "Error"; und exit(); ein return für falsches Image.Type von $src



  • in: image resize Thumbnail (von gif) und transparentez

    geschrieben von sportinfo

    jetzt habe ich die Funktion hinbekommen, das es funktioniert,

    <?php
    // ---------------------------------------------------------- 
    
    function resize_image($src, $dst, $new_width, $new_height) { 
    
    list($old_width, $old_height, $type, $attr) = getimagesize($src);
    
    switch($type) { 
    
    	case (1):
    	$image_source = imagecreatefromgif($src);
    	break;
    	
    	case (2):
    	$image_source = imagecreatefromjpeg($src);
    	break;
    	
    	case (3):
    	$image_source = imagecreatefrompng($src);
    	break;
    	
    	default:
    	echo "Error";
    	exit(); 
    	break;
    
    }
    
    	
    	$Transparent = imagecolortransparent($image_source);
    
    	$new_image = imagecreate($new_width, $new_height);
    	imagepalettecopy($new_image, $image_source);
    	imagefill($new_image, 0, 0, $Transparent);
    	
    	if ($Transparent >= 0) {
    		$tColor = imagecolorsforindex($image_source, $Transparent);
    		imagecolortransparent($new_image, $Transparent);
    	}
    	else {
    		$tColor = array('red' => 255, 'green' => 255, 'blue' => 255);
    		imagecolorallocate($new_image, $tColor['red'], $tColor['green'], $tColor['blue']);
    	}
    	
    	
    	imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height); 
    	
    	imagepng($new_image,$dst);
    	
    	imagedestroy($image_source);
    	imagedestroy($new_image);
    
    
    }
    
    // ---------------------------------------------------------- 
    ?>


    jetzt brauche ich noch eine Rückgabe (return)
    die mir sagt, ob das neue Bild erfolgreich erstellt und gespeichert wurde (true / false)


  • in: image resize Thumbnail (von gif) und transparentez

    geschrieben von sportinfo

    Hallo

    ich habe eine Funktion,
    die mir aus einem größeren Image eine kleins Bild davon als .png kopieren soll,
    Stichwort: Thumbnail

    aber wenn ich eine .gif als Quelle nehme und die auch tranzparente Flächen enthält,
    dann werden diese dann im resized .png zu schwarze Farb-Fläche

    hier die Funktion(en):
    <?php 
    // ---------------------------------------------------------- 
    
    function resize_image($src, $dst, $dstw, $dsth) {
        list($width, $height, $type, $attr) = getimagesize($src);
    	
    	// ---- Image $type Flags: ---- 1 = GIF, 2 = JPG, 3 = PNG ----
    	// ---- http://www.php.net/manual/en/function.exif-imagetype.php
    	// ---- http://www.php.net/manual/en/function.image-type-to-mime-type.php
    
    	switch($type)
    	{
    		case (1):
    		$im = imagecreatefromgif($src);
    		break;
    		
    		case (2):
    		$im = imagecreatefromjpeg($src);
    		break;
    		
    		case (2):
    		$im = imagecreatefrompng($src);
    		break;
    		
    		default:
    		echo "Error";
    		exit(); 
    		break;
    	}
    	
    
        $tim = imagecreatetruecolor($dstw, $dsth);
        imagecopyresampled($tim, $im, 0, 0, 0, 0, $dstw, $dsth, $width, $height);
        $tim = ImageTrueColorToPalette2($tim, false, 255);
    	
        imagepng($tim,$dst);
    	
    }
    
    
    function ImageTrueColorToPalette2($image, $dither, $ncolors) {
        $width = imagesx( $image );
        $height = imagesy( $image );
        $colors_handle = ImageCreateTrueColor( $width, $height );
        ImageCopyMerge( $colors_handle, $image, 0, 0, 0, 0, $width, $height, 100 );
        ImageTrueColorToPalette( $image, $dither, $ncolors );
        ImageColorMatch( $colors_handle, $image );
        ImageDestroy($colors_handle);
        return $image;
    }
    
    
    // ---------------------------------------------------------- 
    ?>



    Beispiel Aufruf dann so (vereinfacht)

    $isrc = 'testimg1.gif';   // ---- Original-Bild / Quelle 
    $type = '.gif';           // ---- Image-Type von Original-Bild
    
    $dstw = 120;   // ---- Thumbnail width in Pixel
    $dsth = 120;   // ---- Thumbnail height in Pixel
    
    $idst = basename($isrc, $type);   // --- ergibt: testimg1 ohne .gif
    $idst .= 'thumb_'.$idst.'.png';   // --- prefix und filetype des Thumbnail
    
    if (!file_exists($idst)) { 
      $new_image = resize_image($isrc, $idst, $dstw, $dsth); 
    }
    
    // ---- Test / Debug Ausgabe ---- 
    echo "<br /> \n"; 
    echo "<br /> Original: \n"; 
    echo "<br /><img src=\"".$isrc."\" border=\"0\" />\n"; 
    echo "<br /> \n"; 
    echo "<br /> Thumbnail: \n"; 
    echo "<br /><img src=\"".$idst."\" border=\"0\" />\n"; 
    echo "<br /> \n";


    erzeugt wird somit die neue Datei
    $idst = 'thumb_testimg1.png';


    Fragen:

    a) kann ich die Transparenz irgendwie beibehalten,
    damit die transparenten Bereiche aus .gif auch in der .png transparent bleiben ?

    b) oder [wenn a) nicht geht] wo muss ich die Werte ändern,
    wenn ich eine andere Farbe als Ersatz für die transparenten Flächen haben will,
    also z.B., weiß (255, 255, 255) anstatt schwarz (0,0,0) ... aber wo im Code anpassen ?

    c) oder kennt jemand eine andere (bessere) image-Resize Funktion,
    um Thumbnail zu erstellen, in der transparente Bereiche auch transparent bleiben ?

  • in: rewrite - bestehende Ordner ausschließen ?

    geschrieben von sportinfo

    Hallo

    ich möchte, dass meine Rewrite-Regeln nur dann greifen,
    wenn die aufgerufene Adresse nicht (physikalisch) existiert,

    also nur Rewrite anwenden, wenn aufgerufener Dateiname oder Ordner nicht schon existiert

    aber mit der Ausschluß-Regel im RewriteCond klappt das nicht für Ordner

    RewriteCond %{REQUEST_URI} (.*)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d


    die Zeile:
    RewriteCond %{REQUEST_FILENAME} !-f
    funktioniert,
    aber die Zeile:
    RewriteCond %{REQUEST_FILENAME} !-d
    funktioniert nicht

    in den Rewrite-Regeln werden zwar auch Aufrufe als Ordner-Struktur um-geschrieben
    RewriteRule ^([^\/]*?)(\/?)$ artikel.php?a=$1 [L,QSA]
    RewriteRule ^([^\/]*)\/([^\/]*?)(\/?)$ artikel.php?a=$1&b=$2 [L,QSA]


    aber die sollte ja garnicht "greifen" wenn der Ordner echt (physikalisch) existiert,
    ... tut es aber doch :(

    Beispiel 1:
    Ordner: /kategorie/ existiert nicht physikalisch
    Aufruf: <domain>/kategorie/ ----> Rewrite zu artikel.php?a=kategorie
    .... OK

    Beispiel 2:
    Ordner: /ablage/ existiert physikalisch
    <domain>/ablage/ ----> Rewrite zu artikel.php?a=ablage
    .... Fehler ... Ordner existiert, hier soll der Inhalt von /ablage/ kommen (Directory Index)


    Wie kann ich, bei Aufruf eines Ordners, der schon existiert, die Rewrite-Regel(n) ausschließen ?
    .... die Zeile:
    RewriteCond %{REQUEST_FILENAME} !-d
    funktioniert nicht ?!?

  • in: Daten für Funktion mit oder ohne Übergabe

    geschrieben von sportinfo

    ok. vielen Dank
    ich glaube jetzt habe ich es verstanden,

    mit Referenz in der Funktionsdefinition wird direkt das Original verändert

    hatte mich nur gewundert, dass eine Funktion ohne return was "zurück gibt"
    ... aber jetzt ist es klar, sie muss in dem Fall nichts "zurück geben"
    weil sie direkt das Original bearbeitet.

    Danke für die Erklärung :)
  • in: Daten für Funktion mit oder ohne Übergabe

    geschrieben von sportinfo

    sorry, aber fehlt da nich auch noch ein return in der Funktion ?
    ..... sonst wird ja nichts zurück gegeben ?!

    function test( &$daten )
    {
    $daten += 5;
    return $daten; 
    }
     
    $zahl = 3;
    $ergebnis = test( $zahl );
    echo $ergebnis;


    oder geht das - wegen der Referenz & hier auch ohne return ?
    (weil das Original Objekt verändert wird) .... ?

    heisst das jetzt, Funktionsdefinition mit Referenz zu Variable als Parameter
    ist gleich wie diese Variable als global (in der Funktion) zu definieren ?
    ... habe ich das richtig verstanden ?
  • in: Daten für Funktion mit oder ohne Übergabe

    geschrieben von sportinfo

    Hallo

    macht es einen (Performance) Unterschied,
    ob ich $daten (z.B. mehrere KB großes Array)
    im Funktionsaufruf übergebe oder als "globale" Variable nutze ?

    und wenn ich in einer Funktion "große" Variablen verwenden möchte,
    was ist dann besser ...

    a) ... als global() in der Funktion definieren
    b) ... als Session (vorher) anlegen
    c) ... als Konstante (vorher) definieren
    d) ... im Funktions-Aufruf übergeben
    e) ... erst in Funktion Datenquelle auslesen

    Beispiel:
    $daten = file('liesmich.txt');
    $anz = count($daten);
    
    if ($anz < 1) {  echo "<p>Keine Daten vorhanden.</p>\n";  }
    else {  echo "<p>" . zeige_daten ($anz) . "</p>\n"; }
    
    // ---------------------------------------------
    function zeige_daten ($anz) {
       global($daten);  // oder als SESSION oder als KONSTANTE ??? 
        
       $out = "Anzahl: ".$anz."\n";
       $out .= "<br />----------------------------\n";
       $i=1;
       foreach($daten as $item) {
          $out .= "<br />".$i." --- ".$item."\n";
          $i++;
       }
       $out .= "<br />----------------------------\n";
     
       return $out;
    }
    // ---------------------------------------------



    oder mit Übergabe im Funktions-Aufruf

    Beispiel:
    $daten = file('liesmich.txt');
    $anz = count($daten);
    
    if ($anz < 1) {  echo "<p>Keine Daten vorhanden.</p>\n";  }
    else {  echo "<p>" . zeige_daten ($daten, $anz) . "</p>\n"; }
    
    // ---------------------------------------------
    function zeige_daten ($daten, $anz) {
    
       $out = "Anzahl: ".$anz."\n";
       $out .= "<br />----------------------------\n";
       $i=1;
       foreach($daten as $item) {
          $out .= "<br />".$i." --- ".$item."\n";
          $i++;
       }
       $out .= "<br />----------------------------\n";
     
       return $out;
    }
    // ---------------------------------------------


    macht das einen Unterschied,
    ... ob die $daten globa() definiert oder im Funktions-Aufruf übergeben werden ?
    ... oder wäre es als SESSION besser ... oder gar define() als KONSTANTE ??

    Oder doch besser erst innerhalb der Funktion die $daten auslesen ?

    $datenquelle = 'liesmich.txt';  
    
    echo "<p>" . zeige_daten ($datenquelle) . "</p>\n";
    
    // ---------------------------------------------
    function zeige_daten ($datenquelle) {
       $daten = file($datenquelle);
       $anz = count($daten);
       if ($anz < 1) { 
          $out = "Keine Daten vorhanden.\n";
       }
       else { 
          $out = "Anzahl: ".$anz."\n";
          $out .= "<br />----------------------------\n";
          $i=1;
          foreach($daten as $item) {
             $out .= "<br />".$i." --- ".$item."\n";
             $i++;
          }
          $out .= "<br />----------------------------\n";
       } 
    
       return $out;
    }
    // ---------------------------------------------



    oder macht das gar keinen Unterschied ?

  • in: rewrite mit verschiedenen Endungen

    geschrieben von sportinfo

    vielen Dank

    habe alle drei "neuen" Versionen ausprobiert, und die funktionieren alle :)

    RewriteRule ^([^\/]+)\/([^\/\.]+) artikel.php?a=$1&b=$2 [L,QSA]
    
    RewriteRule ^([^\/]*)\/([^\/\.]*)(\/?|\.html?)$ artikel.php?a=$1&b=$2 [L,QSA]
    
    RewriteRule ^([^\/]*)\/([^\/]*?)(\/?|\.html?)$ artikel.php?a=$1&b=$2 [L,QSA]


    jetzt kann ich mir ja eine aussuchen ... mal würfeln ...

  • in: rewrite mit verschiedenen Endungen

    geschrieben von sportinfo

    hmmm , naja, fast ...

    wenn ich jetzt Aufruf machen wie
    /xxxxx/yyyyy.html


    dann ist in der artikel.php als $_GET['b'] = yyyyy.html

    also das .html wird mit in der GET-Variable übergeben ?
    obwohl es doch Teil der Rewrite-Regel ist ... bei Slash / am Ende passiert das nicht

    ok, das könnte ich mit einem str_replace() wieder raus filtern,
    aber schöner wäre halt doch gleich in $_GET ohne Datei-Endung
  • in: rewrite mit verschiedenen Endungen

    geschrieben von sportinfo

    Hallo

    ich habe ein Rewrite Regel, die funktionieren soll,
    egal ob im Aufruf (URL) ein Slash / am Ende ist oder nicht, oder ein .html oder ein .htm

    OK, ich kann einfach alle Regeln in die .htaccess untereinander schreiben

    ohne Slash / am Ende:
    RewriteRule ^([^\/]*)\/([^\/]*)$ artikel.php?a=$1&b=$2 [L,QSA]

    mit Slash / am Ende:
    RewriteRule ^([^\/]*)\/([^\/]*)\/$ artikel.php?a=$1&b=$2 [L,QSA]

    mit .html am Ende:
    RewriteRule ^([^\/]*)\/([^\/]*)\.html$ artikel.php?a=$1&b=$2 [L,QSA]

    mit .htm am Ende:
    RewriteRule ^([^\/]*)\/([^\/]*)\.htm$ artikel.php?a=$1&b=$2 [L,QSA]



    ---> aber kann man das nicht auch in einer Zeile erledigen,
    so dass Aufruf mit Slash oder ohne Slash oder mit .htm oder mit .html funktioniert

    ... also sowas wie ein "entweder .. oder" ... bzw. .... Liste erlaubter / möglicher Endungen

    irgendwas in Klammern mit ? Fragezeichen und | Oder Zeichen ... aber wie

  • in: Im Div-Container den Text aus einer anderen Datei anzeigen

    geschrieben von sportinfo

    da es im HTML / Javascript Forum steht, vermute ich, er meint sowas mit Ajax in DIV laden

    Beispiel (Das DIV heisst hier "myDiv"

    Datei 1: ajax_test.htm
    <!DOCTYPE html>
    <html>
    <head>
    
    <title>Ajax Test</title>
    
    <script type="text/javascript">
    
    function loadXMLDoc(id) { 
    
    var milliseconds = new Date().getTime();
    
    var filename = "ajax_info.php"; 
    
    var readfile = "./"+filename+"?t="+milliseconds; 
    
    var xmlhttp;
    if (window.XMLHttpRequest) {  // code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else {  // code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      
    xmlhttp.onreadystatechange=function() { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
        document.getElementById(id).innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET", readfile, true);
    xmlhttp.send();
    }
    
    </script>
    
    </head>
    <body>
    
    <div id="myDiv" style="margin:10px; padding:8px; background:#DEDEDE;">
      <h2>Lass AJAX diesen Inhalt &auml;ndern</h2>
      <p>(Beipsiel: .. hier im DIV mit id=&quot;myDiv&quot;)
    </div>
    
    
    <p>&nbsp;</p>
    
    <p>... mit Button Klick ... <button type="button" onclick="loadXMLDoc('myDiv')">Change Content</button> </p>
    <p>&nbsp;</p>
    
    <p>... oder ... mit Link Klick ... <a href="javascript:loadXMLDoc('myDiv')">Change Content</a> ... </p>
    <p>&nbsp;</p>
    
    <p>... <a href="?">RESET</a> ... </p>
    <p>&nbsp;</p>
    
    </body>
    </html>


    Das Anhängen des (GET) Parameters ?t= (Milisekunden)
    var readfile = "./"+filename+"?t="+milliseconds;

    ist notwendig, damit ... wenn gewünscht ... nicht der Cache verwendet wird,
    sondern jeder Klick (Aufruf der Funktion) eine "neue" Anfrage sendet (und Ergebnis ausgibt)
    (das "Laden ohne Cache" kann man bestimmt auch anders machen, z.B. per .htaccss)


    und die Datei, (aus der die erzeugte Ausgabe gelesen und ins DIV geschrieben wird)

    Datei: ajax_info.php
    <?php
    // ---------------------------------------------- 
    
    echo "<h2>Neuer Inhalt ist jetzt da</h2>\n"; 
    
    if (!empty($_GET['t'])) { 
    echo "<p>Miliseconds Time: ".$_GET['t']."</p>\n"; 
    }
    
    echo "<p>Mehr Info oder PHP Code hier ... </p>\n"; 
    
    // ---------------------------------------------- 
    ?>


    anstatt der Datei ajax_info.php kannst Du auch eine .html oder einfche .txt Datei nehmen
    ... dazu die Zeile:
    var filename = "ajax_info.php";
    ändern

    anstatt <div id="myDiv"> kannst du auch andere Elemente mit eindeutiger ID nehmen
    ... dazu den Funktions-Aufruf anpassen:
    loadXMLDoc('id_name')
    (im Bsp 2x: Button und Link)

    ich hoffe das hilft weiter :)


  • in: Schwierige MySQL Abfrage PHP

    geschrieben von sportinfo

    nochmal zu Auslesen:
    um Einträge mit Datum aus bestimmten Monat ( in bestimmten Jahr) zu finden
    wäre wohl eine Möglichkeit ... wenn Du Deine Datenbank-Struktur etwas änderst,
    und anstatt von (oder zusätzlich zum) DATETIME als ganzes Datum,
    jeweils nur Tag (date_day), Monat (date_month) und Jahr (date_year) in einzelne Spalten speicherst

    dann kannst Du Anfragen machen wie

    ... SELECT * FROM `tabelle` WHERE date_year = '2012' AND date_month = '09' ...


    oder .. ohne Daten-Struktur-Änderung
    ... Du erstellst Dir vor der Abfrage die zwei Datums-Grenzen
    (von Monats-Beginn bis Monats-Ende) als Datum-String
    und damit kannst Du dann eine Abfrage mit BETWEEN machen

    $von_datum = '2012-09-01'; 
    $bis_datum = '2012-09-31'; 
    
    $sql = "SELECT * FROM `tabelle` WHERE date BETWEEN '$von_datum' AND '$bis_datum' ";


    oder ... eventuell "besser"" ... mit MySQL Datums-Funktionen in der Abfrage
    $sql = "SELECT * FROM `tabelle` WHERE month(date) = '09' AND year(date)= '2012' ";


    alle Möglichkeiten siehe hier: MySQl Date and Time Functionsl


    oder als String behandeln und mit LIKE ?!? .. z.B. alles im September 2012

    SELECT * FROM  `tabelle` WHERE date LIKE '20112-09-%'


    aber ob das geht (und gut ist) kann ich nicht sagen ...

    Wichtig ist halt, dass Du das richtige Datum-Format in den Daten hast: YYYY-mm-dd HH:ii:ss
    also mit PHP:
    $datum = date('Y-m-d H:i:s');
    zum Speichernn in die Spalte 'date'
    also nicht das "deutsche" Datums-Format sondern US-Format (bzw. das MySQL Standard-Format)


    zu den anderen Fragen:

    paddy-herrmy schrieb:
    ich möchte also dass pro tag nur eine Spalte ausgegeben wird.


    meinst Du jetzt damit nur eine Daten-Zeile aus der Tabelle
    oder in der Ausgabe der Daten ??? ... dabei hilft ja das
    GROUP BY DAY (date)


    in Ausgabe mit PHP (in der while-Schleife) ginge es vielleicht mit date_parse()
    dann kannst Du Die Ergebnisse in Array pro Tag legen und do ausgeben

    $ergebnis = array(); 
    while($obj = mysql_fetch_object($result)){
    
        $fulldate = $obj->date;
        $date_parts = date_parse($fulldate); 
        
        $jahr = (int)$date_parts['year']; 
        $monat = (int)$date_parts['month']; 
        $tag = (int)$date_parts['day']; 
    
    $ergebnis[$jahr][$monat][$tag][] = array ( 
       'message' => $obj->message , 
       'playerid' => $obj->playerid , 
       'fulldate' => $fulldate 
    ); 
    
    }
    
    print "<br>DEBUG Ausgabe: \n"; 
    print "<pre>\n"; 
    print_r($ergebnis); 
    print "</pre>\n";


    Dann kannst Du mit foreach() die Elemente aus dem $ergebnis Array ausgeben
    gestaffelt nach Jahr, Monat, Tag (in den Array-Ebenen)

    also z.B. alle Tage im August 2012
    // ----- Start --- Schleife Tage --- 
    foreach($ergebnis[2012][8] as $dkey => $item) { 
    
    echo "<br />------------- Tag: ".$dkey."-------------\n"; 
    
       $n=1; 
      // ----- Start --- Schleife Daten --- 
       foreach($item as $daydata) { 
          echo "<br />-------- Nr: ".$n."--------\n"; 
          echo "<br />".$item['playerid']."\n"; 
          echo "<br />".$item['message']."\n"; 
      $n++; 
      }
      // ----- Ende --- Schleife Daten --- 
    
    }
    // ----- Ende --- Schleife Tage ---



    oder alle Ergebnisse für den 11.09.,2012
    $n=1; 
    // ----- Start --- Schleife Daten --- 
    foreach($ergebnis[2012][9][11] as $item) { 
       echo "<br />-------- Nr: ".$n."--------\n"; 
       echo "<br />".$item['playerid']."\n"; 
       echo "<br />".$item['message']."\n"; 
    $n++; 
    }
    // ----- Ende --- Schleife Daten ---



    oder halt doch gleich in der MySQL Abfrage
    also .... gleich Tag, Monat und Jahr auslesen und in "neue" Variable ablegen

    SELECT *, DAY(date) as tag, MONTH(date) as monat, YEAR(date) as jahr FROM  `tabelle` WHERE .....

    aber ich weiss nicht ob man nach dem * noch weitere Werte mit Komma angeben kann
    sonst halt so
    SELECT message, playerid, date, DAY(date) as tag, MONTH(date) as monat, YEAR(date) as jahr FROM  `tabelle` WHERE .....


    keine Ahnung ob das so funktioniert, wäre wohl geschickter
    denn dann könntest Du dir das date_parse() in der while() Schleife sparen
    und hättest direkt aus der Abfrage die "neuen" Variablen (bzw. als Objekte) ....

    ... uff .. schwere Geburt dieser Beitrag, aber hoffe es hilft :)
  • in: mit java script zu div springen

    geschrieben von sportinfo

    warum Javascript

    du machst einfach vor dem DIV einen Anker-Punkt

    <a name="divname"></a>
    <div id="divname">
    ...
    </div>


    und als Link einfach als Ziel #ankername

    <a href="#divname">zum DIV springen</a>


    dann "springt" der Browser zum Anker-Punkt

    wenn der Anker-Punkt auf einer anderen Seite ist,
    dann einfach vor das # die URL (Dateiname) zur Seite

    <a href="information.php#ankername">zum Ankername</a>


    ist doch so viel einfacher, da braucht es doch kein JavaScript ?!

    Wenn es ein etwas smooth scrollen sein soll, und nicht ein direkter Sprung
    dazu gibt es dann doch JavaScripte .. BSP: http://www.kryogenix.org/code/browser/smoothscroll/
    oder jQuery plus das Plugin ScrollTo oder bestimmt noch andere Möglichkeiten

  • in: Zeilenanzahl von Tabelle durch Variable bestimmen

    geschrieben von sportinfo

    Hallo

    Daten als Zeilen mit Spalten ....
    ... wie schon gesagt wurde, für sowas ist eigentlich Datenbank viel besser (MySQL)

    aber wenn es unbedingt .txt sein soll, dann ist hier das Stichwort: CSV !!!

    hier mal Beispiel für m_spieler.txt mit 3 Spalten:

    "Name";"Punkte";"Datum"
    "Supersonic","131","2012-06-27"
    "Donald","44","2012-06-21"
    "Horst","89","2012-05-22"
    "Jonny","131","2012-06-26"


    und als PHP in etwa so:
    // --------------------------------------------------------- 
    
    $filename = 'textdateien/m_spieler.txt';   // --- Pfad und Datei-Name der CSV 
    $strenner = ';';                // --- Spalten-Trenner-Zeichen der CSV
    $prozeile = '1024';             // --- maximale Zeichen pro Zeile 
    
    // --------------------------------------------------------- 
    
    $handle = fopen($filename, "r"); 
    
    while (($data = fgetcsv($handle, $prozeile, $strenner)) !== FALSE) {
       $zeilen_data[]=$data;  
       }
       
    fclose($handle);
    
    // ---------------------------------------------------------



    dann hast Du $zeilen_data als Array und kannst es mit foreach() ausgeben

    zum Beispiel so:


    $nbr = "\n"; 
    
    echo '<table border="0" cellspacing="0" cellpadding="3" width="320">'.$nbr; 
    $n=0; 
    
    foreach($zeilen_data as $zeile) { 
    $nr = $n; 
    if ($n == 0) { $bgcol = '#CCCCCC'; $nr = '&nbsp;'; } 
    elseif (($n%2) == 0) { $bgcol = '#EFEFEF'; } else { $bgcol = '#FFFFEE'; } 
    
    echo ' <tr style="background:'.$bgcol.';">'.$nbr; 
    echo '   <td width="20">'.$nr.'</td>'.$nbr; 
    echo '   <td width="120">'.$zeile['0'].'</td>'.$nbr; 
    echo '   <td width="80">'.$zeile['1'].'</td>'.$nbr; 
    echo '   <td width="100">'.$zeile['2'].'</td>'.$nbr; 
    echo ' </tr>'.$nbr; 
    
    $n++; 
    }
    
    echo '</table>'.$nbr; 
    
    echo '<br />'.$nbr;




    beachte dabei, dass die Spalten bei 0 (Null) anfangen,
    die Spalte 1 hat die Nummer [0] im Array,
    die Spalte 2 hat die Nummer [1] im Array, usw.

    aber nimm doch besser MySQL, das ist stabiler und viel besser,
    u.a. um bestimmte Zeilen (nach Bedingung) zu finden
    oder für Sortierung (nach Punkte / nach Dateum / etc)
    und viele weitere Vorteile ...

  • in: Object-Inhalt immer als Array ?

    geschrieben von sportinfo

    Danke,
    stimmt, ich muss es ja garnicht immer in Array umwandeln,
    kann es ja auch ohne foreach ausgeben, wenn es kein Array ist
    ... ich dachte halt, es wäre schöner mit einheitlichen Daten-Struktur zu arbeiten
    auch für den Fall, die Ausgabe in eine andere Funktion auszulagern

    und ich glaube eine wichtige (verwirrende) Frage ist etwas untergegangen

    bei einem "stdClass Object" funktioniert es (zu Array machen wenn nicht)
    warum funktioniert es dann nicht bei einem "SimpleXMLElement Object" ???

    Daten als JSON ---> json_decode() ---> stdClass Object ----> Object zu Array machen funktioniert
    Daten als XML ---> simplexml_load_string() ---> SimpleXMLElement Object ----> funktioniert nicht

    ??? Logik? Gründe?
  • in: Alle Datensätze mit beliebigem Wert in Spalte auslesen

    geschrieben von sportinfo

    wieso nicht die Select-Abrfage zusammensetzen ?!?

    Wenn $wert = '*'; dann alles abfragen ... sonst mit Bedingung ...

    if ($wert == '*') { 
      $sql = "SELECT a,b,c,d FROM tabelle1"; // alles 
    }
    else { 
      $sql = "SELECT a,b,c,d FROM tabelle1 WHERE a ='".$wert."' OR b ='".$wert."' OR c ='".$wert."'";
    }
    
    $abfrage = mysql_query($sql);


    und bist Du sicher, dass Du AND als weitere Bedingungen willst,
    dann kommen nur Treffer, wenn der gesuchte Wert in allen Spalten gleich ist
    und solche Spalten würden keinen Sinn machen, daher wohl eher OR (oder)
    also Treffer, wenn in mind. einem der Felder der Wert genau gleich ist

    Wenn es sich um Teil-Strings-handelt, die Du Suchen willst, dann geht das mit LIKE
    ... WHERE a LIKE '%".$wert."%'  ...


    Info zu LIKE siehe hier: http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html

    oder was genau hast Du vor?

  • in: Bild in Tabelle html

    geschrieben von sportinfo

    das Prinzip ist immer das-selbe, egal welches Bild-Format, Bild Ausgabe in HTML mit IMG-Tag

    Infos: http://de.selfhtml.org/html/grafiken/einbinden.htm

    <img src="images//bild1.jpg" width="180" height="90" alt="Bild-Name" border="0" />


    und egal ob in Tabelle, in DIV oder sonst wo


    <table width="250" border="0" cellspacing="2" cellpadding="2">
      <tr>
        <td width="58">jpg:</td>
        <td width="190">
    	   <img src="images/bild1.jpg" width="90" height="50" alt="Bild" border="0" />
    	</td>
      </tr>
      <tr>
        <td width="58">jpeg:</td>
        <td width="190">
    	   <img src="images/bild1.jpeg" width="90" height="50" alt="Bild" border="0" />
    	</td>
      </tr>
      <tr>
        <td width="58">gif:</td>
        <td width="190">
    	   <img src="images/bild1.gif" width="90" height="50" alt="Bild" border="0" />
    	</td>
      </tr>
      <tr>
        <td width="58">png:</td>
        <td width="190">
    	   <img src="images/bild1.png" width="90" height="50" alt="Bild" border="0" />
    	</td>
      </tr>
    </table>



    es sollte auch funktionieren, wenn Dein Bild als .jpeg vorliegt
    aber anstatt .jpeg wird meist eher .jpg verwendet ....

  • in: Object-Inhalt immer als Array ?

    geschrieben von sportinfo

    Hallo

    ich habe ein Array, das Objekte enthält
    aber in den Daten sind bestimmte Felder manchmal (object) und manchmal (array of objects)

    wie kann ich die Daten so durchgehen,
    damit jeweils das Feld bilder->img immer als Array behandelt wird ?
    ... auch wenn es nur ein Bild enthält (kein Array ist, sondern direkt das Object)

    Beispiel: $daten

    => Array ( 
    
        [0] => stdClass Object
            (
                [title] => Name1
                [bilder] => stdClass Object
                    (
                        [img] => stdClass Object
                            (
                                [url] => bild1a.jpg
                                [alt] => Bild 1A
                            )
    
                    )
    
                [info] => Text blabla
            )
    
        [1] => stdClass Object
            (
                [title] => Name2
                [bilder] => stdClass Object
                    (
                        [img] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [url] => bild2a.jpg
                                        [alt] => Bild 2A
                                    )
    
                                [1] => stdClass Object
                                    (
                                        [url] => bild2b.jpg
                                        [alt] => Bild 2B
                                    )
    
                            )
    
                    )
    
                [info] => Text blabla
            )
    
        [2] => stdClass Object
            (
                [title] => Name3
                [bilder] => stdClass Object
                    (
                        [img] => stdClass Object
                            (
                                [url] => bild3a.jpg
                                [alt] => Bild 3A
                            )
    
                    )
    
                [info] => Text blabla
            )
    
    )



    mein Versuch bisher ist es, in einer Schleife
    ... wenn es kein Array ist dann zu Array machen

    // ------------ Daten Ausgabe ------ 
    $n=1; 
    foreach($daten as $item) { 
       echo "<br />Nr: ".$n."\n"; 
    
       if (!is_array($item->bilder->img)) { $item->bilder->img = array($item->bilder->img); } 
    
    // ------------ Ausgabe [img] Array ------ 
       echo "<br />Bilder: \n"; 
       $i=1; 
       foreach($item->bilder->img as $imgitem) { 
          echo "<br />".$i." --- ".$imgitem->url." ---".$imgitem->alt."\n"; 
          $i++; 
        }
    // ------------
       echo "<br />\n"; 
       $n++; 
    }
    // ------------------------------


    bei stdClass Object funktioniert das, aber NICHT bei SimpleXMLElement Object

    also wenn die Daten aus simplexml_load_..... kommen, dann nicht ?!

    dann kommt bei dieser if-Zeile die Meldung:
    Warning: It is not yet possible to assign complex types to properties ...


    Struktur ist die gleiche, nur der Object-Typ nicht, und das gibt den Fehler? ... höääää?
    warum?
    ... wie aus simplexml_load_... die Daten in $item->bilder->img immer als Array behandeln ?

    so, dass man immer die Ausgabe der Bilder in einer foreach() Schleife machen kann
    auch wenn nur ein einziges Bild im Datensatz ist (direkt als Onject, nicht als Array of Objects)


    Danke!

Login zum Webhosting ohne Werbung!