Avatar billede madseksperten Nybegynder
07. januar 2016 - 19:08 Der er 7 kommentarer og
2 løsninger

padding på et return value

Hejsa

Jeg er virkelig på bar bund på nogle ting ift. mit lille hygge programmeringsprojekt.
Jeg har et formfield som tager INT mellem 1 og 12. Når der indtastes et tal bliver det gemt i min MySQL database under columnname : "numbers".

Når det tal returneres i mit div tag vil jeg så gerne have at nogle specifikke tal får en padding-left på 20px; og andre tal en padding-left på 40px;

Fx hvis der indtastes:

1 -> padding-left 20px;
4 -> padding-left 40px;
6 -> padding-left 40px;
9 -> padding-left 20px;

Det vil sige det er nogle helt specifikke tal der skal have de forskellige paddings.

Er der nogle som har en ide til hvordan jeg kan gøre det?

mvh Mads

HTML:

<div id="show" class="number">
            <div class="numberheader">
                <p>Tal</p>
            </div>
            <ul class="latestnumbers" style="list-style:none;padding-top: 60px;">
                <?php include('response.php');?>
            </ul>           
        </div>       

Php:

// Selecting Database
include 'dbconfic.inc.php';

    // '?' er placeholders for variabler
    $stmt = $mysqli->prepare("SELECT * FROM numbertable ORDER BY num_id DESC LIMIT 9;");
   
    // execute prepared statement
    $stmt->execute();
   
    // gør variabler klar:   
    $number = null;   
    $n_id = null;
   
    /* bind result variabler */
    $stmt->bind_result($n_id, $number);
   
    /* fetch values for hver row, her kun 1 row dog: */
    while ($stmt->fetch()) {
        echo "<li>".$number."</li>";
    }   
   
    // luk statement                       
    $stmt->close();

    // luk connection
    $mysqli->close();
08. januar 2016 - 07:22 #1
Det falder mig lidt svært at følge dig; for eksempel har jeg ikke forstået hvor i din kode hvor du bruger den valgte padding-left.  Men hvis der til hvert numre mellem 1 og 12 svarer en værdi for padding-left synes det mig oplagt at gemme disse værdier i en table i din database, således at de numre du henter i databasen kommer sammen med deres padding-left værdi. Tabellen, kaldt for eksempel padding_left, vil så have to kolonner, tal og værdi, så som 1 20, 2 50, 3 10, 4 40,o.s.v.  Din search skal så udvides til noget i retning af 'SELECT * FROM numbertable JOIN padding_left ON numbertable.number = padding_left.tal ......".  Så får du værdi'erne med over i din applikation og indsætter på rette sted for at danne padding-left.
Avatar billede Rune1983 Ekspert
08. januar 2016 - 08:00 #2
Kan dette muligvis være en løsning?

<?php
$number = 4; // Gem dit nummer i den variabel

$PaddingDIV = ""; // Padding variabel
switch ($number) {
    case "1":
        $PaddingDIV = "padding-left: 20px;";
        break;
    case "4":
        $PaddingDIV = "padding-left: 40px;";
        break;
    case "6":
        $PaddingDIV = "padding-left: 40px;";
        break;
    case "9":
        $PaddingDIV = "padding-left: 20px;";
        break;
}
?>

<div id="show" class="number" style="<?php print "$PaddingDIV"; ?>">
    <div class="numberheader">
        <p>Tal</p>
    </div>
    <ul class="latestnumbers" style="list-style:none;padding-top: 60px;">
        <?php include('response.php');?>
    </ul>           
</div>
Avatar billede acore Ekspert
08. januar 2016 - 08:09 #3
Jeg er ikke helt klar på HVOR du vil have den padding-left ind, men hvis det er i en div omkring værdierne, så nogen i stil med (ikke testet):

// Selecting Database
include 'dbconfic.inc.php';
$pad_left_values = array(0 => 20, 1 => 20, 2 => 20, 3 => 20, 4 => 40, 5 => 20, 6 => 40, 7 => 20, 8 => 20, 9 => 40, 10 => 20, 11 => 20, 12 => 20);

    // '?' er placeholders for variabler
    $stmt = $mysqli->prepare("SELECT * FROM numbertable ORDER BY num_id DESC LIMIT 9;");
   
    // execute prepared statement
    $stmt->execute();
   
    // gør variabler klar:   
    $number = null;   
    $n_id = null;
   
    /* bind result variabler */
    $stmt->bind_result($n_id, $number);
   
    /* fetch values for hver row, her kun 1 row dog: */
    while ($stmt->fetch()) {
        $pad = ($number >= 1 && $number <= 12? $pad_left_values[$number]: $pad_left_values[0]);
       
        echo "<li><div style='padding-left: ".$pad."px;'".$number."</div></li>";
    }   
   
    // luk statement                       
    $stmt->close();

    // luk connection
    $mysqli->close();               
?>
Avatar billede madseksperten Nybegynder
09. januar 2016 - 11:28 #4
Hejsa.

Nu har jeg lige siddet og testet tingene lidt af.

Acore, når jeg kører scriptet her, så forsvinder alle tallene, det vil sige jeg får ikke noget return fra databasen. Jeg har siddet og brugt en times tid på at se hvorfor, men kan ikke helt se det. Kunne du have en fornemmelse af det?
Avatar billede madseksperten Nybegynder
09. januar 2016 - 11:30 #5
ah jeg skal vel kalde variablel $pad_left_values inde fra den div hvor tallene skal return i?
Avatar billede madseksperten Nybegynder
09. januar 2016 - 11:31 #6
Nej min side bliver jo kaldt her:

<ul class="latestnumbers" style="list-style:none;padding-top: 60px;">
                <?php include('response.php');?>
            </ul>
Avatar billede madseksperten Nybegynder
09. januar 2016 - 11:46 #7
Jeg er faktisk lidt i tvivl om jeg mangler et div tag. Tallene går ind i:



<div id="show" >  <!-- Det er denne div som tallene går ind i -->
            <div class="numberheader">
                <p>Tal</p>
            </div>
                        <!-- Måske der skulle være en div her? -->
            <ul class="latestnumbers" style="list-style:none;padding-top: 60px;">
                <?php include('response.php');?>
            </ul>           
</div>   

http://postimg.org/image/t624kd8ld/
Avatar billede madseksperten Nybegynder
09. januar 2016 - 11:58 #8
Det virker sku nu:-)

Det var dette:

echo "<li><div style='padding-left: ".$pad."px;'>$number</div></li>";

istedet for:

  echo "<li><div style='padding-left: ".$pad."px;'".$number."</div></li>";


Mange tak for hjælpen alle sammen. Vil i dele pointene, eller skal acore have dem?

mvh Mads
Avatar billede acore Ekspert
09. januar 2016 - 18:00 #9
Godt du fik det løst. Du fordeler bare point som du selv synes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester