kostenloser Webspace werbefrei: lima-city


Werte bei DB Abfrage ausblenden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,

    ich habe da mal wieder ein Problem und bräuchte Hilfe beim Lösungsansatz.
    Ich rufe Daten aus meiner DB ab, diese Enthalten unter anderem einen Namen sowie verschiedene Werte.

    Peter 1234
    Uschi 5672
    Bernd 5456

    Nun möchte ich das bestimmte Daten ausgeblendet werden wenn der user dies wünscht.
    In der DB habe ich dafür eine Spalte die einen Wert enthält zb. 1=werte, anzeigen 0=werte ausblenden. In der Ausgabe soll bei „1“ dann der Wert mit *** angezeigt werden.

    Peter 1234
    Uschi ****
    Bernd 5456

    Meine Abfrage aus der DB sieht derzeit so aus:

    //-------------------------------------------------------------------
    // Prüfen ob IP hinterlegt ist und GangID stimmt ///////////////////
    //-------------------------------------------------------------------
    $gangid = "12345";
    $check = mysql_query("SELECT * FROM $table WHERE ip='$ip' AND kw_gangid='$gangid'") or die (mysql_error());
    if(mysql_num_rows($check ) >= 1){
    
    //-------------------------------------------------------------------
    // Ausgabe der Werte abrufen  ////////
    //-------------------------------------------------------------------
    $abfrage = 'SELECT * FROM berlin WHERE kw_gangid = 12345ORDER by kw_wert DESC';
    $loesung = mysql_query($abfrage) or die(mysql_error());
    while ($row = mysql_fetch_array($loesung, MYSQL_ASSOC)) {
    
    //-------------------------------------------------------------------
    // Start eigentliche Ausgabe  ////////////////////////////
    //-------------------------------------------------------------------
    $ausgabe .= "$row[date] $row[boost]  $row[wut]  $row[kw_sendeart]   $row[kw_att]  $row[kw_def]  $row[kw_wert]   $row[kw_name]\n";
    
    }


    Nun fehlt mir die Idee wie und wo ich das ansetze. Ich bin über jeden Tip dankbar.

    Gruß und schönes WE euch
    Marco


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

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

  3. senioren-kuenstler

    senioren-kuenstler hat kostenlosen Webspace.

    Hi Marco,

    das Feld wo deine Entscheidung abgelegt wird ist aus deinem snipped leider nicht ersichtlich.
    Aber man koennte es in der folgenden Art loesen:

    print $foo = ($entscheidung_wert > 0) ? $daten_wert : "***";


    Gruss, Lutz
  4. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi Lutz,

    schon mal Danke für den Lösungsansatz. Das Feld wird auch noch nicht geprüft, es soll später auch nicht selber ausgegeben werden sondern enthält nur die Info ob der Wert angezeigt wird oder nicht.

    Hier mal mein Kompletter Code. Ich sollte wohl dazu sagen dass es um eine Image Create Ausgabe geht.

    <?php
    // start image create
    function sendimagetext($text) {
      // Set font size
      $font_size = 4;
    
      $ts=explode("\n",$text);
      $width=0;
      foreach ($ts as $k=>$string) { //compute width
        $width=max($width,strlen($string));
      }
    
      // Create image width dependant on width of the string
      $width  = imagefontwidth($font_size)*$width;
      // Set height to that of the font
      $height = imagefontheight($font_size)*count($ts);
      $el=imagefontheight($font_size);
      $em=imagefontwidth($font_size);
      // Create the image pallette
      $img = imagecreatetruecolor($width,$height);
      // Dark red background
      $bg = imagecolorallocate($img, 31,31,31);
      imagefilledrectangle($img, 0, 0,$width ,$height , $bg);
      // White font color
      $color = imagecolorallocate($img, 255, 255, 255);
    
      foreach ($ts as $k=>$string) {
        // Length of the string
        $len = strlen($string);
        // Y-coordinate of character, X changes, Y is static
        $ypos = 0;
        // Loop through the string
        for($i=0;$i<$len;$i++){
          // Position of the character horizontally
          $xpos = $i * $em;
          $ypos = $k * $el;
          // Draw character
          imagechar($img, $font_size, $xpos, $ypos, $string, $color);
          // Remove character from string
          $string = substr($string, 1);     
        }
      }
      // Return the image
      header("Content-Type: image/png");
      imagepng($img);
      // Remove image
      imagedestroy($img);
    }
    // ENDE AUFBAU PHP IMAGE
    
    //-------------------------------------------------------------------
    // Start eigentlich Ausgabe /////////////////////////////////////////
    //-------------------------------------------------------------------
    
    //-------------------------------------------------------------------
    // Ermitteln der IP /////////////////////////////////////////
    //-------------------------------------------------------------------
    $ip = getenv('REMOTE_ADDR');
    
    //-------------------------------------------------------------------
    // Variablen für imgae ausgabe //////////////////////////////////////
    //-------------------------------------------------------------------
    $border = imagecolorallocate($image, 64, 64, 64);
    $weiß = ImageColorAllocate($img, 255, 255, 255);
    
    
    //-------------------------------------------------------------------
    // Start verbindung ////////////////////////////////////////
    //-------------------------------------------------------------------
    include("connect.inc.php"); 
    $dbverbindung = mysql_connect ($host, $user, $password);
    
    //-------------------------------------------------------------------
    // Datenbank wählen ////////////////////////////////////////////////
    //-------------------------------------------------------------------
    $db_sel = mysql_select_db( pennereck_de );
     
    
    //-------------------------------------------------------------------
    // Prüfen ob IP hinterlegt ist und GangID stimmt ///////////////////
    //-------------------------------------------------------------------
    $gangid = "172252";
    $check = mysql_query("SELECT * FROM berlin WHERE ip='$ip' AND kw_gangid='$gangid'") or die (mysql_error());
    if(mysql_num_rows($check ) >= 1){
    
    //-------------------------------------------------------------------
    // Ausgabe der Werte abrufen und array erzeugen ////////
    //-------------------------------------------------------------------
    $abfrage = 'SELECT * FROM berlin WHERE kw_gangid = 172252 ORDER by kw_wert DESC';
    $loesung = mysql_query($abfrage) or die(mysql_error());
    while ($row = mysql_fetch_array($loesung, MYSQL_ASSOC)) {
    
    //-------------------------------------------------------------------
    // Start eigentliche Ausgabe in der MotD ////////////////////////////
    //-------------------------------------------------------------------
    $ausgabe .= "$row[date] $row[boost]  $row[wut]  $row[kw_sendeart]   $row[kw_att]  $row[kw_def]  $row[kw_wert]   $row[kw_name]\n";
    }
    sendimagetext ("$ueberschrift----------------------------------------------------------\n$ausgabe\n----------------------------------------------------------\n$sendeart\n$wut\n
    $info");
    }
    //-------------------------------------------------------------------
    // Wenn keine Werte gefunden werden ////////////////
    //-------------------------------------------------------------------
    
    else
    {
    	include("../../include_var.php"); 
    
    sendimagetext ("$fehlerinfo");
    }
    /* entleeren + schliessen */
    mysql_free_result($result);
    mysql_close($dbverbindung);
    
    //-------------------------------------------------------------------
    // Das bittere Ende /////////////////////////////////////////
    //-------------------------------------------------------------------
    ?>


    Ich hab nun keinen Plan an welcher Stelle ich da ansetzen soll das zu prüfen.
  5. senioren-kuenstler

    senioren-kuenstler hat kostenlosen Webspace.

    Hi Marco,

    also sinniger weise kann man das zwischen den DB lesen und dem function Aufruf einbringen und im guenstigsten Fall direkt in die Zeile einbinden in der du die Variable $ausgabe fuellst.

    Gruss, Lutz
  6. Also du hast in der DB eine Spalte wo drinnen steht "Peter 1234".

    Du prüfst ob 0 oder 1 in der einen Spalte steht.
    if ($row['0 oder 1'] == '0') {
        $datenarray = explode(" ", $row['info']);
        $info = $datenarray[0]." ****";
    }
    Falls 0 dann teilst du den String in ein Array ein und verbindest den ersten Arrayteil mit " ****".
    else {
        $info = $row['info'];
    }
    Andernfalls nimmst du einfach den normalen Wert.

    Du kannst das ganze noch in eine Funktion packen und in den Parametern die beiden Variablen definieren. Später kann die Funktion dann ganz einfach aufgerufen werden.

    MfG
    Dominic
  7. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi Dominic,

    ein Traum, das war der fehlende Ansatz. Allerdings habe ich das etwas abgeändert da mit deinem Bsp.
    der Wert und die Sternchen angezeigt wurden.

    //-------------------------------------------------------------------
    // Ausgabe der Werte abrufen und array erzeugen ////////
    //-------------------------------------------------------------------
    $abfrage = 'SELECT * FROM berlin WHERE kw_gangid = 172252 ORDER by kw_wert DESC';
    $loesung = mysql_query($abfrage) or die(mysql_error());
    while ($row = mysql_fetch_array($loesung, MYSQL_ASSOC)) {
    	
    if ($row['vali'] == '1') {
        $datenarray = explode(" ");
        $row[kw_wert] = $datenarray[0]."*******";
        $row[kw_att] = $datenarray[1]."***";
        $row[kw_def] = $datenarray[2]."***";
    
    }
    else {
        $kw_wert = $row['kw_wert'];
    }



    So geht alles wie gewünscht. Ich habe beim

    $datenarray = explode(" ", $row['info']);
    das
    $row['info']
    entfernt.

    Nu frage ich mal noch ganz doof, kann man das so lassen? Oder hab ich mir dadurch nen Ei ins Nest gelegt?

    Mal gleich noch eine Frage dazu,

    kann ich an der Stelle gleich noch Prüfen welche länge der jeweilige Wert hat und Ihn in der Ausgabe verlängern?
    Ich würde damit gern die Verschiebung in der Ausgabe verhindern.

    zb.


    Peter 123
    Jürgen 123
    Vallentin der Große 123
    Uschi 123

    Ich möchte also die Zeichen Zählen und am Ende immer die gleiche Länge haben das die Werte in einer Reihe stehen.


    Peter ------------------123
    Jürgen ----------------123
    Vallentin der Große 123
    Uschi ------------------123


    Wie immer DANKE!! für die Hilfe. Ich steh da leider schon eiwg auf dem Schlauch.
  8. Hast Du denn eine Monospace-Schriftart?
    Ansonsten bringt nämlich auch die Anzahl der Zeichen nichts...
    Und aus Deinem Code kann ich das leider nicht erkennen.
  9. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,

    ja es ist eine Monospace-Schriftart.
    Versuche es gerade mit
    str_pad
    . Bin aber der Verzweiflung um einiges näher als der Lösung :)

    LG Marco
  10. Also das $row['info'] hab ich nur genommen weil ich nicht wusste, wo du die info mit Peter 1234 usw. gespeichert hast. Also ersetze das mit der Spalte wo das drinnen steht und es sollte funktionieren. Bei explode wird der String "Peter 1234" in Peter (array[0]) und 1234 (array[1]) geteilt.

    Aus dem neuen Code kann ich lesen, dass du $row['info'] einfach mit $row['kw_wert'] ersetzen kannst.

    //-------------------------------------------------------------------
    // Ausgabe der Werte abrufen und array erzeugen ////////
    //-------------------------------------------------------------------
    $abfrage = 'SELECT * FROM berlin WHERE kw_gangid = 172252 ORDER by kw_wert DESC';
    $loesung = mysql_query($abfrage) or die(mysql_error());
    while ($row = mysql_fetch_array($loesung, MYSQL_ASSOC)) {
    	
    if ($row['vali'] == '1') {
        $datenarray = explode(" ", $row['kw_wert']);
        $kw_wert = $datenarray[0]."-****";
        // ich weiß nicht wofür du das brauchst
           $kw_att = $datenarray[1]."***";
        // und das weiß ich auch nicht
           $kw_def = $datenarray[2]."***";
        // du kannst auch einfach so eine variable definieren und musst nicht $row['irgendwas'] schreiben
    
    }
    else {
        $kw_wert = $row['kw_wert'];
    }


    Schau dir dazu das Manual von php.net an.

    MfG
    Dominic

    PS: Ich würde das zweite eher mit CSS probieren (vllt. gibts da sowas) falls du aber mit PHP arbeiten willst versuchs mit strlen(). Prüfe wie lange der kw_wert + die "****" sind und mach dann einen loop der auf den kw_wert die "-" anhängt und dann nach dem loop noch die "****".

    Beitrag zuletzt geändert: 17.8.2012 21:10:19 von naturfit
  11. Ich hätte für das Zensieren der Daten noch einen anderen Ansatz, der dir vlt. besser gefällt, da man sich ein wenig Code einsparen kann.
    Du musst deine MySQL Abfrage nur wie folgt aufbauen:
    SELECT `Name`, IF(`DatenAnzeigen` = 1,`Daten`, '****') AS Daten FROM `Benutzer`

    in diesem Fall wird geschaut ob die Zelle 'DatenAnzeigen' den Wert 1 hat, wenn ja wird Spalte 'Daten' wieder gegeben, wenn nicht wird '****' zurückgegeben.
  12. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Also erst mal rießen Dank für die Hilfe.

    Mitt CSS kann man leider bei nem PHP Image nicht viel machen.
    Darum hänge ich an der Stelle fest.
    Mit strlen habe ich auch schon getestet, allerdings ohne Erfolg. Bitte entschuldigt wenn die
    Frage jetzt etwas "Dumm" ist.


    Mit dem Code werden die Zeichen von KW_wert gezählt ? RIchtig?
    $str = $row[kw_wert];
    strlen($str);


    Und mit diesem wird das Ganze auf 7 Zeichen verlängert ? Richtig?

    $str1 = $row[kw_wert];
    str_pad($str1, 7);


    Im Manuell werden die gezählten Zeichen
    am Ende per echo angezeigt, das möchte ich ja nicht. Ich brauche die "Zeichenlänge" ja in einer Variable
    um Sie weiter zu verarbeiten.


    LG und schönen Samstag

    So habe ich das zumindest jetzt verstanden.

    Hier mal ein img von dem was ich hier mache. Vieleicht erleichtert das ja das Verständniss.
    Bei den unteren beiden Namen sieht man mein Problem.

    http://img705.imageshack.us/img705/4198/67298cb3b1b8469083e5205.png

    Beitrag zuletzt geändert: 18.8.2012 10:38:43 von aff3m1tw4ff3
  13. Ja alles richtig verstanden.

    Nur eigentlich brauchst du ja nur str_pad.

    Bei deinem Code von hier ersetzt du einfach
    $ausgabe .= "$row[date] $row[boost]  $row[wut]  $row[kw_sendeart]   $row[kw_att]  $row[kw_def]  $row[kw_wert]   $row[kw_name]\n";

    mit
    $ausgabe .= "$row[date] $row[boost]  $row[wut]  $row[kw_sendeart]   $row[kw_att]  $row[kw_def]  " . str_pad($row[kw_wert], 7) . "   $row[kw_name]\n";


    Mit Monospace sollte es dann passen.
  14. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Oh man, wenn man dann sieht was man falsch gemacht hat könnte man sich echt ärgern.
    Da habe ich die Prüfeung der Länge einfach an der falschen Stelle angesetzt.

    So geht es alles wie gewünscht.

    Ich DANKE Dir vielmals für die Hilfe. Die Nummer hat mich schon viel Zeit gekostet.

    DANKE DANKE DANKE!!!
  15. Kein Problem.

    Für Zahlen wäre es auch noch schöner wenn sie rechtsbündig sind.
    Dazu nimmst du einfach
    str_pad($row[kw_wert], 7, ' ', STR_PAD_LEFT)


    Edit: Fehler ausgebessert...

    Beitrag zuletzt geändert: 18.8.2012 13:44:19 von philippkern
  16. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Was soll ich dazu nun sagen?

    Ich wollte gerade fragen ob man das auch rechtsbündig machen kann.

    Da ist die Antwort schon vor der Frage da. Ein Traum!

    Nochmals Danke!!

    Edit:

    DOch noch eine Frage. Bei STR_PAD_LEFT füllt er die Zeile mit 0 auf. Kann ich angeben das es ein leerzeichen sein soll?

    http://prntscr.com/dzt1p

    Beitrag zuletzt geändert: 18.8.2012 13:33:56 von aff3m1tw4ff3
  17. =)
    aff3m1tw4ff3 schrieb:
    DOch noch eine Frage. Bei STR_PAD_LEFT füllt er die Zeile mit 0 auf. Kann ich angeben das es ein leerzeichen sein soll?

    http://prntscr.com/dzt1p

    Ups, da hab ich wohl zu schnell in die Dokumentation geschaut. Sry.

    str_pad($row['kw_wert'], 7, ' ', STR_PAD_LEFT)


    Edit: Außerdem solltest du die Arrayelemente immer mit Anführungszeichen ansprechen.
    Also zB anstatt
    $row[kw_wert]
    ,
    $row['kw_wert']
    . Das gilt natürlich nur dann wenn die Array Keys den Typ String haben.

    In der Dokumentation ist das auch erklärt unter "Array do's and don'ts": http://php.net/manual/de/language.types.array.php (ist in Englisch)

    Beitrag zuletzt geändert: 18.8.2012 13:56:37 von philippkern
  18. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Da braucht es doch kein Sorry. Ich hab zu danken.
    Es läuft jetzt genau so wie ich es wollte.

    Ich werde mir die Dokumentation mal zu gemühte führen.
    Generell muss ich wohl bei dem Thema noch ordentlich lesen und lernen.
  19. 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!