substr rechtsbündig ausgeben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
arbeiten
ausgabe
beispiel
code
dank
date
datenbank
datum
ende
http
laden
sache
sinn
stelle
stichwort
strich
tabelle
tip
url
wut
-
Hi,
mal wieder eine kurze Frage von mir.
Ich gebe mit folgendem Code „etwas“ aus.
$wert .= "" . substr($row['date'], 0, 11) . "\n";
Dabei wird ja immer mindestens von Stelle 0 bis 11 belegt, egal ob Werte vorhanden sind oder nicht. Soweit sollte das auch so sein, ich möchte nun aber, dass die Ausgabe rechtsbündig erscheint.
Derzeit ist es so:
Wert678901
Ich hätte es gern so:
678901Wert
Die Zahlen sollen in dem Fall einfach nur die Leestellen darstellen. Gibt es einen einfachen Weg das umzusetzen?
Gruß Marco
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie wärs mit ...
$wert = substr($row['date'], 0, 11) . $wert . "\n";
... ?
Einfacher wird's nicht mehr...
Lg cookies -
Hi,
danke Dir mal als erstes, leider bleibt die Ausgabe auch so Linksbündig.
Also er setzt die Leerzeichen weiter hinter die Ausgabe. -
$wert = substr($row['date'], 0, 11) . $wert . "\n";
ist richtig...
Beitrag zuletzt geändert: 16.5.2013 17:11:25 von v4in -
Hi,
wenn das richtig ist, dann stelle ich mich tatsächlich zu doof an.
Ich hab es jetzt noch mal versucht und bekomme es nicht gebacken.
Kann es vieleicht damit zusammen hängen das ich das Ganze als PHP Grafik ausgebe?
// daten aus der DB einsammeln $dex_kw .= "" . substr($row['dex'], 0, 3) . " \n";
// Daten Ausgeben ImageTTFText ($status8, $font_size, 0, $x_dex, 40, $f_c_name, $font, "$dex_kw");
Wenn ich jetzt den vorgeschlagenen Code nehme, werden keine Daten mehr ausgegeben.
// So werden keine Werte ausgegeben $dex_kw= substr($row['dex'], 0, 11) . $dex_kw. "\n"; // So werden die Werte dann falsch angezeigt ( falsch zugeordnet ) $dex_kw.= substr($row['dex'], 0, 11) . $dex_kw. "\n";
Vieleicht hat ja noch jemand eine Idee was ich da falsch mache, für mein Verständniss sollte das
so gehen.
Gruß und schönes WE euch
Marco
-
Stichwort strrev().
wenn das nicht klappt, liegts an deiner Datenbank.$wert .= strrev(substr($row['date'], 0, 11));
PS: mit
sparst du ein bisschen Zeit beim Laden deiner Seite. Denk dran: Wenn möglich immer über SQL arbeiten, ist viel schneller als PHP.SELECT REVERSE(SUBSTR('date',0,11)) FROM ...
Beitrag zuletzt geändert: 17.5.2013 12:36:38 von limabone -
Danke für den Tip, leider auch ohne Erfolg.
Wie meinst Du das denn genau mit der DB?
Hab da eben mal bissl rumgespielt. Es war erst auf varchar gestellt da ich auch „Striche“ an einigen Stellen wiedergebe.
Das habe ich mal Testweise auf int umgestellt, bringt aber das gleiche Ergebnis.
Das mit dem Auslesen aus der DB muss ich mir mal anschauen, hab es derzeit so gemacht,
weil ich das übersichtlich fand und natürlich mangels Wissen
-
limabone schrieb:
Stichwort strrev().
wenn das nicht klappt, liegts an deiner Datenbank.$wert .= strrev(substr($row['date'], 0, 11));
PS: mit
sparst du ein bisschen Zeit beim Laden deiner Seite. Denk dran: Wenn möglich immer über SQL arbeiten, ist viel schneller als PHP.SELECT REVERSE(SUBSTR('date',0,11)) FROM ...
strrev kannst du dafür so nicht verwenden, da aus Wert678901 dann 109876treW würde.
@TE
Kannst du noch einmal bitte ein anderes Beispiel posten? Einfach als Referenz, denn 100%ig habe ich den Sinn nicht verstanden und kann deshalb auch noch nicht mit einer Lösung dienen. -
Hi,
hier mal ein paar Zeilen Code mehr, der SInn der Sache ist am Ende die Ausgabe einer Tabelle.
Erklärt sich immer doof darum hier mal ein Screen der Tabelle die ausgegeben wird. Es geht aktuell um die gelben Werte unter Dex.
http://prntscr.com/15b4de
// Hier die Abfragen $date .= "" . substr($row['date'], 0, 11) . "\n"; $boost .= "" . substr($row['boost'], 0, 2) . " \n"; $wut .= "" . substr($row['wut'], 0, 1) . " \n"; $att .= "" . substr($row['kw_att'], 0, 4) . " \n"; $def .= "" . substr($row['kw_def'], 0, 4) . " \n"; $kw .= "" . substr($row['kw_wert'], 0, 7) . " \n"; $dex_kw .= "" . substr($row['dex'], 0, 3) . " \n"; $name_kw_marken .= "" . substr($row['kw_name'], 0, 20) . " (" . substr($row['marken'], 0, 7) . ")" . " \n"; $name_kw .= "" . substr($row['kw_name'], 0, 20) . " \n"; //$dex_kw .= strrev(substr($row['dex'], 0, 3)) . " \n"; // Hier die Ausgaben ImageTTFText ($status1, $font_size, 0, $x_datum, 40, $f_c_date, $font, "$date"); ImageTTFText ($status2, $font_size, 0, $x_boost, 40, $f_c_boost, $font, "$boost"); ImageTTFText ($status3, $font_size, 0, $x_att, 40, $f_c_att, $font, "$att"); ImageTTFText ($status4, $font_size, 0, $x_def, 40, $f_c_def, $font, "$def"); ImageTTFText ($status5, $font_size, 0, $x_wut, 40, $f_c_wut, $font, "$wut"); ImageTTFText ($status6, $font_size, 0, $x_kw, 40, $f_c_kw, $font, "$kw"); ImageTTFText ($status7, $font_size, 0, $x_name, 40, $f_c_name, $font, "$name_kw"); ImageTTFText ($status8, $font_size, 0, $x_dex, 40, $f_c_name, $font, "$dex_kw");
Ich hoffe das reicht um einen kleinen Überblick zu bekommen, dazwischen ist natürlich noch jede Menge anderer Code, der aber, so hoffe ich, damit nichts zu tun hat.
Gruß Marco -
Okay, bei manchen steht Dex 0, bei manchen gar nichts und bei anderen steht ein Wert. Was soll nun tatsächlich dort stehen?
-
Das ist gerade falsch mit der 0 da ich vorhin von varchar auf int in der DB umgestellt hatte zum testen.
Der Screen ist von meiner Testtabelle, darum sind nicht überall Werte vorhanden.
Da wo jetzt kein Wert vorhanden ist, sollen am Ende ebenfalls 3 Striche sein.
Enthalten sind also Werte von 1-999 oder 3 Striche wenn kein Wert vorhanden ist. -
Und die Anzeige soll nun so aussehen?
123 12 1 --- 321 21 1
Schau dir mal die PHP-Funktion str_pad an. Die sollte in etwa das gewünschte Ergebnis liefern.
EDIT:
<?php $dex = array( 123, 456, '', 789, 999, 0, 12, 34, '', 5, 678, 90 ); echo '<pre>'; foreach($dex as $num) { if(intval($num) > 1) { echo str_pad($num, 3, ' ', STR_PAD_LEFT) . '<br />'; } else { echo '---<br />'; } } echo '</pre>'; ?>
Nur mal so als Beispiel.
Beitrag zuletzt geändert: 17.5.2013 16:26:47 von fabo -
str_pad war die Lösung, ich danke Dir. Da wäre ich ja ewig nicht drauf gekommen.
Hab es etwas angepasst und nun läuft es wie gewünscht.
$dex_kw .= str_pad($row['dex'], 3, ' ', STR_PAD_LEFT) . " \n";
Und siehe da: http://prntscr.com/15bg01
alles da wo es sein soll..
Ich danke für Eure Hilfe!!
Achso, danke für den Tipp mit der Schleife. Das macht die Sache natürlich am Ende noch etwas einfacher, da habe ich irgendwie auf dem Schlauch gestanden und habe es über die DB als Varchar geregelt. Manchmal ist komisch.
Das meine ich:
foreach($dex as $num) { if(intval($num) > 1) { echo str_pad($num, 3, ' ', STR_PAD_LEFT) . '<br />'; } else { echo '---<br />'; } }
Gruß Marco
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage