kostenloser Webspace werbefrei: lima-city


substr rechtsbündig ausgeben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wie wärs mit ...
    $wert = substr($row['date'], 0, 11) . $wert . "\n";

    ... ?
    Einfacher wird's nicht mehr...

    Lg cookies
  4. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,

    danke Dir mal als erstes, leider bleibt die Ausgabe auch so Linksbündig.
    Also er setzt die Leerzeichen weiter hinter die Ausgabe.
  5. $wert = substr($row['date'], 0, 11) . $wert . "\n";

    ist richtig...

    Beitrag zuletzt geändert: 16.5.2013 17:11:25 von v4in
  6. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
  7. Stichwort strrev().
    $wert .= strrev(substr($row['date'], 0, 11));
    wenn das nicht klappt, liegts an deiner Datenbank.

    PS: mit
    SELECT REVERSE(SUBSTR('date',0,11)) FROM ...
    sparst du ein bisschen Zeit beim Laden deiner Seite. Denk dran: Wenn möglich immer über SQL arbeiten, ist viel schneller als PHP.

    Beitrag zuletzt geändert: 17.5.2013 12:36:38 von limabone
  8. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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 :-(
  9. limabone schrieb:
    Stichwort strrev().
    $wert .= strrev(substr($row['date'], 0, 11));
    wenn das nicht klappt, liegts an deiner Datenbank.

    PS: mit
    SELECT REVERSE(SUBSTR('date',0,11)) FROM ...
    sparst du ein bisschen Zeit beim Laden deiner Seite. Denk dran: Wenn möglich immer über SQL arbeiten, ist viel schneller als PHP.


    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.
  10. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
  11. Okay, bei manchen steht Dex 0, bei manchen gar nichts und bei anderen steht ein Wert. Was soll nun tatsächlich dort stehen?
  12. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.


    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.
  13. 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
  14. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!