Suche auf lima-city
-
in: Tabelle: in der 1 Spalte 4 Zeilen, in der 2. 3 Zeilen ?
geschrieben von tags
biwidesign schrieb:
Kann man die drei Zeilen auch gleichmäßig aufteilen ?
mit rowspan geht das nicht, aber du kannst Tabelle in Tabelle machen
... zuerst die Tabelle mit 2 Spalten (und 1e Zeile)
und in die 1. Spalte eine Tabelle mit 4 Zeilen ... und Zeilen-Höhe z.B: 30px;
und in die 2. Spalte eine Tabelle mit 3 Zeilen ... und Zeilen-Höhe z.B: 40px;
4 x 30 = 120 .... und 3*40 = 120 .... damit ist es "gleichmäßig" verteilt.
a) Tabellen in Tabelle
<table width="500" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50%" align="left" valign="top"> <table width="100%" border="0" cellspacing="2" cellpadding="2"> <tr> <td width="100%" height="30" align="left" valign="top" bgcolor="#CCCCFF">Zeile 1</td> </tr> <tr> <td width="100%" height="30" align="left" valign="top" bgcolor="#CCCCFF">Zeile 2</td> </tr> <tr> <td width="100%" height="30" align="left" valign="top" bgcolor="#CCCCFF"> Zeile 3</td> </tr> <tr> <td width="100%" height="30" align="left" valign="top" bgcolor="#CCCCFF"> Zeile 4</td> </tr> </table> </td> <td width="50%" align="left" valign="top"> <table width="100%" border="0" cellspacing="2" cellpadding="2"> <tr> <td width="100%" height="40" align="left" valign="top" bgcolor="#FFFFCC">Zeile 1</td> </tr> <tr> <td width="100%" height="40" align="left" valign="top" bgcolor="#FFFFCC">Zeile 2</td> </tr> <tr> <td width="100%" height="40" align="left" valign="top" bgcolor="#FFFFCC">Zeile 3</td> </tr> </table> </td> </tr> </table>
EDIT: ... aber besser ist es wohl, die 2 Spalten (außen) als DIV-Container zu machen
und mit CSS ... float die eine DIV links und die andere DIV rechts ausrichten
a) Tabellen in DIVs
<div style="text-align:center;"> <div style="margin:0 auto; width:500px;"> <div style="float:left; width:250px; margin:0px; padding:0px; text-align:left;"> <table width="100%" border="0" cellspacing="2" cellpadding="2"> <tr> <td width="100%" height="30" align="left" valign="top" bgcolor="#CCCCFF">Zeile 1</td> </tr> <tr> <td width="100%" height="30" align="left" valign="top" bgcolor="#CCCCFF">Zeile 2</td> </tr> <tr> <td width="100%" height="30" align="left" valign="top" bgcolor="#CCCCFF"> Zeile 3</td> </tr> <tr> <td width="100%" height="30" align="left" valign="top" bgcolor="#CCCCFF"> Zeile 4</td> </tr> </table> </div> <div style="float:right; width:250px; margin:0px; padding:0px; text-align:left;"> <table width="100%" border="0" cellspacing="2" cellpadding="2"> <tr> <td width="100%" height="40" align="left" valign="top" bgcolor="#FFFFCC">Zeile 1</td> </tr> <tr> <td width="100%" height="40" align="left" valign="top" bgcolor="#FFFFCC">Zeile 2</td> </tr> <tr> <td width="100%" height="40" align="left" valign="top" bgcolor="#FFFFCC">Zeile 3</td> </tr> </table> </div> </div> </div>
hier auch gleich mit einem umschließenden DIV, damit Du alles zentrieren kannst
Edit: .. habe dir nochmal beide Codes neu rein :)
... die Tabellen-Höhe (und Breite, Farben, etc) kannst Du natürlich (besser) auch mit CSS machen
-
in: Tabelle: in der 1 Spalte 4 Zeilen, in der 2. 3 Zeilen ?
geschrieben von tags
hallo
neben colspan gibt es ja auch rowspan :)
<table width="500" border="0" cellspacing="2" cellpadding="2"> <tr align="left" valign="middle"> <td width="50%">Spalte1 in Zeile 1</td> <td rowspan="2" width="50%">Spalte2 in Zeile 1 plus Zeile 2</td> </tr> <tr align="left" valign="middle"> <td width="50%">Spalte1 in Zeile 2</td> </tr> <tr align="left" valign="middle"> <td width="50%">Spalte1 in Zeile 3</td> <td width="50%">Spalte2 in Zeile 3</td> </tr> <tr align="left" valign="middle"> <td width="50%">Spalte1 in Zeile 4</td> <td width="50%">Spalte2 in Zeile 4</td> </tr> </table>
hier ist in Spalte 2 die Zeile 1 und Zeile 2 ein Feld
-
in: google taxonomy Liste zu Array mit Parent_Id
geschrieben von tags
schon ganz nett :)
aber mit der Funktion wird bei jedem Durchlauf das Farben-Array $bgcolor immer wieder neu erstellt,
das würde ich auch noch in eine extra Funktion auslagern, also nur einmal vorher "bauen"
und dann anstatt
eben das Farben-Array nehemenglobal $max_deep;
global $bgcolor;
also vorher das Array für Hintergrund-Farben erstellen
<?php // ----------------------------------------------------------------- // ---- die Variable $max_deep (int) ist aus vorherigem Script vorhanden $color1 = '#ACACAC'; $color2 = '#FFFFCC'; if (!isset($bgcolor)) { $bgcolor = tree_color_data($color1, $color2, $max_deep); } // ----------------------------------------------------------------- ?>
mit der (neuen) Funktion tree_color_data()
<?php // ----------------------------------------------------------------- // -------------------- Ebenen Hintergrund-Farben ------------------ // ----------------------------------------------------------------- function tree_color_data($color1, $color2, $max_deep) { $r1 = hexdec(substr($color1,1,2)); $g1 = hexdec(substr($color1,3,2)); $b1 = hexdec(substr($color1,5,2)); $r2 = hexdec(substr($color2,1,2)); $g2 = hexdec(substr($color2,3,2)); $b2 = hexdec(substr($color2,5,2)); $diff_r = ($r2-$r1); $diff_g = ($g2-$g1); $diff_b = ($b2-$b1); $bgcolorarr = array(); for ($i=1; $i<=$max_deep; $i++) { $factor = ($i / $max_deep); $r = round($r1 + $diff_r * $factor); $g = round($g1 + $diff_g * $factor); $b = round($b1 + $diff_b * $factor); ## $xcolor = '#' . sprintf('%02X',$r) . sprintf('%02X',$g) . sprintf('%02X',$b); $xcolor = '#' . dechex($r) . dechex($g) . dechex($b); $bgcolorarr[$i] = $xcolor; } return $bgcolorarr; } // ----------------------------------------------------------------- ?>
und dann die print_tree() Funktion mit
machen / aufrufenglobal $bgcolor;
<?php // ----------------------------------------------------------------- // ------------------- print_tree() --- Version: 3 ----------------- // ----------------------------------------------------------------- function print_tree($array, $level=0, $view=1) { global $bgcolor; // ---- Ebenen Hintergrund-Farben ---- $anzkat = 1; // ---- Kategorie Zaehler ---- $prefix = 'kat'; // ---- Prefix fuer ul ID ---- $cspace = "\t"; // ---- Quellcode Spacer ---- $spacer = str_repeat($cspace, (($level+1)*2)); // -------- Ebene 1 --- START -------- if ($level == 0) { print "\n<ul id=\"".$prefix."_root\" style=\"display:block; background:".$bgcolor[0].";\">\n"; } // -------- Baum aus Array --- START -------- foreach($array as $key => $val) { $prelevel = $level; $level++; if ( isset($val['sub']) && !empty($val['sub']) ) { $subcount = count($val['sub']); $preid = $val['parent_id']; $switch_link = "<a href=\"javascript:show('".$prefix.$key.$level."')\">open/close:</a> + ".$subcount.""; // -------- Listen-Element mit Unter-Ebene --- START -------- print $spacer."<li>Level: ".$level." --- ID: ".$key." --- (". str_pad($anzkat,2,'0',STR_PAD_LEFT) .") --- <strong>".$val['name']."</strong> [".$switch_link."] "; $anzkat++; $ulcolor = 'background:'.$bgcolor[$level].';'; if ($level >= $view) { $ulview = 'display:none;'; } else { $ulview = 'display:block;'; } $ulstyle = 'style="'.$ulview.' '.$ulcolor.'"'; // -------- Sub-Ebene --- START -------- print "\n".$spacer."<ul id=\"".$prefix.$key.$level."\" ".$ulstyle.">\n"; print_tree($val['sub'], $level, $view); // ---- rekursiver Funktions-Aufruf ---- print $spacer."</ul>\n"; // -------- Sub-Ebene --- ENDE -------- print $spacer."</li>\n\n"; // -------- Listen-Element mit Unter-Ebene --- ENDE -------- } else { // -------- Listen-Element ohne Unter-Ebene -------- print $spacer."<li>Level: ".$level." --- ID: ".$key." --- (". str_pad($anzkat,2,'0',STR_PAD_LEFT) .") --- <strong>".$val['name']."</strong></li>\n"; $anzkat++; } $level--; } // -------- Baum aus Array --- ENDE -------- if ($level == 0) { print "</ul>\n"; } // -------- Ebene 1 --- ENDE -------- } // ----------------------------------------------------------------- ?>
bei 10 Kategorien spart Dir das 9 mal den Zusammen-Bau des Hintergrund-Farben-Array
... also es muss nur 1x berechnet werden :=)
hier nochmal das ganze Script .... http://paste42.de/4179/taxonomy_tree
oder hier: http://pastebin.com/sFrLTt3b
habe es auch getestet, bei mir lief es so ganz gut.
-
in: PHP Unterverzeichnisse eines Verzeichnisses ausgeben
geschrieben von tags
@hackyourlife .... da hast du natürlich recht
ich habe es selber ausprobiert mit
also war der absolute Pfad bei mir "egal"$verz = './';
weil das script ja sowieso im "gleichen" Ordner war
als ich es mit
ausprobiert habe, keine Ausgabe== true
aber mit
oder der Kurzform (ohne) , dann ging es=== true
(bei meinem Test im gleichen Verzeichnis)
wenn der Ordner, in dem "gesucht" wird nicht der gleiche ist, in dem das Script dazu läuft,
dann ist das hinzufügen des vollständige Pfad ( $verz ) natürlich wichtig (notwendig) für is_dir()
.. aber Quatsch ist das mit
anstatt=== true
ja auch nicht== true
wenn man explizit auf boolean Wert (true oder false) prüfen will, aber ohne gehts ja auch,
die Kurzform / ein einfachesif ( is_dir($verz . $verzeichnis) )
ist ja quasi das gleiche wie:if ( is_dir($verz . $verzeichnis) === true )
... Bedingung ist erfüllt, wenn is_dir() den Wert (bool)TRUE zurück gibt.
wobei auch ich die "Kurzform" eher bevorzuge :)
-
in: PHP Unterverzeichnisse eines Verzeichnisses ausgeben
geschrieben von tags
hallo
der Fehler bei:
zu finden... && is_dir ( $verzeichnis ) == true
Vergleiche bei Typ boolean mit === nicht nur ==
also entweder du lässt den Teil
ganz weg== true
if ($verzeichnis != "." && $verzeichnis != ".." && is_dir ($verzeichnis) ) { echo '<option value="' . $verzeichnis . '">' . $verzeichnis . '</option>'. "\n"; // Ausgabe Einzeldatei }
oder du machst daraus=== true
if ($verzeichnis != "." && $verzeichnis != ".." && is_dir ($verzeichnis) === true) { echo '<option value="' . $verzeichnis . '">' . $verzeichnis . '</option>' . "\n"; // Ausgabe Einzeldatei }
dann klappt es auch, weil die if-Bedingung bei Vergleich Typ boolean [true / false] stimmt :)
Edit:
und als Tip ... mach am Ende von
noch eine Zeilenumbruch im Quellcode'</option>';
also so:
dann wird der erzeugte Quellcode besser lesbar :)'</option>' . "\n";
-
in: Preis-Bereich Slider (Formular) ohne jQuery ?
geschrieben von tags
Hallo
gibt es einen Preis-Bereich Slider (Formular) ohne jQuery ?
also so etwas hier: http://jqueryui.com/demos/slider/range.html aber ohne jQuery ui
(und auch ohne ein anderes JS-Framework, einfache nur JS)
wenn ich in google suche, finde ich nur Beispiele mit dem jQuery ui
aber kann man sowas nicht auch ohne jQuery machen, als "reines" JavaScript ?
die zwei Werte aus Slider (von/bis) sollen natürlich für Formular Übergabe funktionieren,
also nach Auswahl und klick auf Formular-Submit Button sollen die Werte
in _POST['preis_von'] und in _POST['preis_bis'] ankommen
kennt jemand ein Beispiel-Code für so einen Range-Slider (Preisbereich von / bis)
... zum Einbau in ein Formular .... aber ohne ein JS-Framework ?
-
in: Senden_von_input
geschrieben von tags
Hallo
würde auf der Seite, die empfangen soll noch prüfen, ob überhaupt Eingabe erfolgt ist
bzw. ob das Formular (bzw einzelne Felder) leer (ohne Eingabe) abgesendet wurde
einfaches Beispiel
<?php if ( !empty($_POST['p']) && !empty($_POST['u']) ) { // ---- je nach Bedarf die Eingabe-Strings escapen / filtern / säubern ---- $data_p = trim(chop($_POST['p'])); $data_p = strip_tags($data_p); $data_p = stripslashes($data_p); $data_p = htmlspecialchars($data_p); $data_u = trim(chop($_POST['u'])); $data_u = strip_tags($data_u); $data_u = stripslashes($data_u); $data_u = htmlspecialchars($data_u); $ausgabe = "<br /> Feld p hat den Inhalt: ".$data_p." und Feld u hat den Inhalt: ".$data_u."\n"; } else { // ---- wenn min. eines der beiden Eingabe-Felder leer war ---- $ausgabe = "<br /> Bitte alle Felder im Formular ausfüllen ... <a href=\"javascript:history.back()\">zurück</a> \n"; } echo $ausgabe; ?>
das geht auch noch differenzierter, also einzeln prüfen, welches Feld jetzt "leer" war
oder auch ob der Eingabe-String bestimmte Bedingungen erfüllt (z.B. nur Zahlen erlauben, etc)
aber als einfaches Beispiel sollte es so genügen. Es soll ja nur zeigen,
dass man die POST oder GET Variablen möglichst vor der weiter-Verarbeitung
prüfen und filtern (escapen / säubern) soll, damit man nur mit "sinnvollen" EIngaben weiter macht
besonders wenn man die Daten dann auch speichern will, ist escapen (säubern) wichtig,
und wie fabi755 schon gesagt hat
vor Speichern in MySQL sollte man User-Eingaben immer mit mysql_real_escape_string() filtern
dazu sollte aber die DB-Vernindung schon bestehen, damit mysql_real_escape_string richtig funktioniert
also damit gleich im richtigen Zeichensatz escaped wird.
aber auch beim Speichern in Datei kann es sein, dass bestimmte Zeichen Probleme machen,
wenn es z.B. im CSV Format gespeichert werden soll, dann vorher Zeilenumbrüche raus-filtern
und ggf auch das Spalten-Trenner-Zeichen, wenn Spalten ohne Enclosure gespeichert werden
oder enclosure-Zeichen aus String filtern, wenn mit Enclosure gespeichert werden soll.
-
in: RSS-Feed auslesen: channel und content:encoded ?
geschrieben von tags
.... Namespace !!!!
$ns = $objres->getNamespaces(true); foreach($objres->channel->item as $items) { echo "<u>".$items->title."</u>\n"; echo "<br />\n"; echo "<br />".$items->children($ns['content'])->encoded."\n"; echo "<br />\n"; }
oder, wenn die Namespace-Definition nicht in der RSS steht, dann direkt
foreach($xmldata->channel->item as $items) { echo "<u>".$items->title."</u>\n"; echo "<br />\n"; $content = $items->children('http://purl.org/rss/1.0/modules/content/'); echo "<br /> ".$content->encoded."\n"; echo "<br />\n"; }
so kommt man an <content:encoded> Inhalt :)
-
in: htaccess hilfe
geschrieben von tags
so
RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?alte_domain\.tld$ RewriteRule (.*) http://www.neue_domain.tld/$1 [R=301,L]
oder einfach so
RedirectPermanent / http://www.neue_domain.tld
-
in: von JSON date zu PHP Datum?
geschrieben von tags
naja,
das dieses JSON Datum auf 000 endet ist hier auch nur Zufall,
daher denke ich ist ceil() schon sinnvoll, sont bekommt man ja als Ergebnis ein float und kein int
eine Alternative wäre da wohl auch noch mit round() zu arbeiten,
damit je nach Milisekunden auf- oder ab-gerundet wird (mit 0 Stellen nach dem Komma)
aber so genau brauche ich das Datum (bzw. die Zeit) garnicht
aber es wundert mich, dass man dafür ein substr() braucht
ich habe gehofft, es gibt da eine "direkte" (PHP interne) Funktion zur Umwandlung
die von so einem JSON Timestamp ein PHP-Timestamp macht, oder gleich ein formatiertes Dateum
aber wenn nicht, auch kein Problem, so geht's ja auch
-
in: von JSON date zu PHP Datum?
geschrieben von tags
Hallo
ich bekomme per JSON ein Datum, das anscheinend ein Milisekunden-Timestamp ist
nach json_decode() bekomme ich sowas:
=> stdClass Object ( [Id] => 162 [Name] => Blöablabla [LastUpdate] => /Date(1341541380000+0200)/ )
wie komme ich jetzt von/Date(1341601020000+0200)/
auf ein "normales" Datum in der Form YYYY-mm-dd (HH:ii:ss)
muss ich dazu Umweg machen über
$jdx = substr($shopitem->LastUpdate,6,-7); $jdy = ceil($ldx/1000); $datum = date('Y-m-d (H:i:s)',$jdy);
oder kann man das "einfacher" (mit PHP-interner Funktion) umwandeln ?
-
in: Springende Navigation
geschrieben von tags
Hallo
hast du vielleicht verschiedene CSS Dateien ?
einmal im Ordner /members/media/style.css
und die andere in /media/style.css
wenn ja, dann solltest Du nur eine CSS nehmen und den Pfad so anpassen,
dass immer die gleiche .css Datei verwendet wird
-
in: leere XML nodes als Leerstring und nicht leeres Object
geschrieben von tags
Hallo
ich habe eine Datei mit XML-Daten
in der u.a. auch "leere" Elemente enthalten sind, hier BSP <info></info> im zweiten item
<?xml version="1.0" encoding="iso-8859-1"?> <results> <item> <name>Donald</name> <info>Blabla Bla blablabla</info> <status>1</status> </item> <item> <name>Mickey</name> <info></info> <status>1</status> </item> </results>
Wen ich die Daten auslese, bekomme ich bei "leeren" Elementen aber keinen "Leertring"
sondern ein leeres Object, auch LIBXML_NOBLANKS bringt nichts, es bleibt als Object ?!
$xml_file = 'meinedaten.xml'; $res_data = simplexml_load_file($xml_file, null, LIBXML_NOBLANKS); print "<pre>\n"; print_r($res_data); print "</pre>\n";
Als Ergebnis / Ausgabe bekomme ich:
SimpleXMLElement Object ( [item] => Array ( [0] => SimpleXMLElement Object ( [name] => Donald [info] => Blabla Bla blablabla [status] => 1 ) [1] => SimpleXMLElement Object ( [name] => Mickey [info] => SimpleXMLElement Object ( ) [status] => 1 ) ) )
Wie bekomme ich es hin, dass bei leeren Elementen wie <info></info> aus XML
im Ergebnis dann auch ein "Leerstring" ankommt, und nicht ein leeres Object ?
ok, ich könnte das Ergebnis mit foreach durchgehen,
und dabei leere Objekte in Leerstrings umwandeln,
$i=0; $ok_data = array(); $i=0; foreach($res_data->item as $items) { foreach($items as $key => $val) { $ok_data[$i][$key] = (string)$val; } $i++; }
damit bekomme ich dann ein neues "sauberes" Array $ok_data ohne Leer-Objekte
aber geht es nicht direkt beim Auslesen, denn wenn die XML bischen umfangreicher ist,
dann verbraucht das "nochmal mit foreach durchgehen" schon fast zuviele Ressourcen
und noch eine zweite Frage:
warum bekomme ich bei Ausgabe
print "<pre>\n"; print_r($res_data->item); print "</pre>\n";
nur das erste Array-Element aus item ??
da [item] ja ein Array ist, dann sollte doch hier das Array auch ausgegeben werden?
aber es kommt nur das erste Array-Element, und dann auch noch als Objekt ???
SimpleXMLElement Object ( [name] => Donald [info] => Blabla Bla blablabla [status] => 1 )
häää? $res_data->item ist doch ein Array ?? warum wird es nicht auch so ausgegeben
aber wenn ich foreach($res_data->item as $items) { ... } mache,
dann werden alle vorhandenen Array-Elemente durchlaufen ?!
wo ist da die Logik ? ... warum mit print_r() kein Zugriff auf das Array aber mit foreach() klappts ?
??? .... kann mir das bitte mal jemand erklären ? ... ist für mich grad total unlogisch ...
Danke