Avatar billede frulilla Nybegynder
08. juni 2011 - 20:58 Der er 21 kommentarer og
1 løsning

Tal skrives i databasen med punktum foran

Jeg har en form, hvor der indsættes, et eller flere tal i et felt i databasen. Men hvis jeg gerne vil have den skal lave et . foran hvor tal, hvordan skriver jeg så det i koden?

Jeg vil have det skal stå som f.eks. .1.2.3.4 i databasen.

Siden er i php og koden der sender til databasen ser sådan ud:

echo "<img src='images/illustrationer/trommerReg.jpg' width='50'><input type='radio' name='user_instruments' value='3'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "3" ? " checked='checked'" : "")." /> Trommer og Slagt&oslash;j. <br /><br />";



PS. kun et udsnit.
Avatar billede majbom Novice
08. juni 2011 - 21:17 #1
så hvis man skriver 1234, skal det laves om til .1.2.3.4?
Avatar billede majbom Novice
08. juni 2011 - 21:28 #2
<?php
$arrString = str_split("1234");
foreach($arrString as $char)
{
  $str .= "." . $char;
}
echo $str;
?>
08. juni 2011 - 21:45 #3
Du vil have indsat "et eller flere tal i et felt i databasen."  Det lyder kompliceret. 

Jeg håber at du skal have indsat et enkelt tal i feltet.  For eksempel hvis trommer er instrument nummer 3 og brugeren vælger trommer skal der stå 3, eller '.3' i feltet i tabellen.  Hvis brugeren også vælger trompet som er instrument nummer 4 kommer der til at stå 4 i feltet i den næste række i tabellen.  Hvis det er sådan det skal forstås, så vil det nemmeste måde at få '.3' i stedet for '3' nok at give radioknappen value = '.3' i stedet for value = '3'. (Forudsat at datatypen for feltet er VARCHAR.)

Hvis du skal have flere tal i et felt, for eksempel hvis brugeren vælger trommer og trompet så skal der i feltet stå '.3.4', så synes strukturen i din database at være uhensigtsmæssig.  I så fald foreslår jeg, at du beskriver tabellen, hvilke felter der er med hvilke datatyper, og om tabellen hænger sammen med andre tabeller.
08. juni 2011 - 21:48 #4
Jeg så ikke splazz's indlæg, før jeg sendte mit.  Du forstår problemstillingen på en anden måde.  Vi må afvente hvad spørgeren siger.
Avatar billede frulilla Nybegynder
08. juni 2011 - 22:04 #5
Ej undskyld, Det er vist igen et af mine dårlig forklarede spørgsmål. Som koden ser ud, kommer der selvfølgelig kun et enkelt tal ind i databasen. Men det skal også have et punktum foran.

Så det er til det jeg mangler hjælp. Hvordan får jeg fortalt den, at den skal skrive .3 ind i databasen?

Som den er nu, skriver den kun 3




Forklaring på at der skal flere ind, har egentlig ikke noget med det her at gøre, for det er senere man indsætter flere tal, og altså i en anden kode.
Avatar billede frulilla Nybegynder
08. juni 2011 - 22:07 #6
Og I kan lige få hele kode"delen" med input til databasen:

if ($profile_method == "input") {

    echo "<tr>\n";
    echo "<td class='tbl'>Vælg Dit Instrument:<span style='color:red;'>*</span><span style='color:red;'>*</span></td>\n";
    echo "<td class='tbl'>";

    echo "<img src='images/illustrationer/trommerReg.jpg' width='50'><input type='radio' name='user_instruments' value='3'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "3" ? " checked='checked'" : "")." /> Trommer og Slagt&oslash;j. <br /><br />";

    echo "<img src='images/illustrationer/basReg.jpg' width='50'><input type='radio' name='user_instruments' value='5'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "5" ? " checked='checked'" : "")." /> Bas <br /><br />";

    echo "<img src='images/illustrationer/klaverReg.jpg' width='50'><input type='radio' name='user_instruments' value='4'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "4" ? " checked='checked'" : "")." /> Klaver og Keyboard <br /><br /> ";

    echo "<img src='images/illustrationer/guitarReg.jpg' width='50'><input type='radio' name='user_instruments' value='2'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "2" ? " checked='checked'" : "")." /> Guitar</td>\n";

    echo "</tr>\n";
}
08. juni 2011 - 22:23 #7
Du spørger "Hvordan får jeg fortalt den, at den skal skrive .3 ind i databasen?  Som den er nu, skriver den kun 3"

Hvordan fortæller du den nu at den skal skrive 3 ind i databasen?  Det må komme fra radioknappens value, altså

<input type='radio' name='user_instruments' value='3'" ....

Jeg foreslår, at du i ændrer din kode til

<input type='radio' name='user_instruments' value='.3'" ....
Avatar billede frulilla Nybegynder
08. juni 2011 - 22:25 #8
Åh ja det har jeg da prøvet mig med, men det virker ikke!
Avatar billede repox Seniormester
08. juni 2011 - 22:35 #9
Hvad er felttypen på det felt du smider tallet ind i i din tabel?
09. juni 2011 - 08:28 #10
#8 - Hvis du nu får 3 i feltet med value = '3', så burde det virke så du får .3 med value = '.3' . Der må så være problemer på andre steder end i den kode du viser.  Så du skal give yderligere oplysninger.  Det du viser i #6 er ikke "hele kode delen med input til databasen" - der må være noget kode i retning af

mysql_query("INSERT INTO mytable VALUES()...") eller
mysql_query("UPDATE mytable SET .....")

Lad os se den kode, og lad os (som allerede antydet i #9) se den tabel (jeg kaldte den mytable) der har feltet med '3' og især datatypen for det felt.
Avatar billede frulilla Nybegynder
09. juni 2011 - 19:38 #11
Felttypen er text, feltet hedder user_instruments og ligger i tabellen users.

Hele koden er her:

<?php


if (!defined("IN_FUSION")) { die("Access Denied"); }



if (isset($_POST['register'])) {

  if (empty($_POST['user_instruments']))

      $error .= (isset($locale['uf_groups_error']) ? $locale['uf_groups_error'] : "ERROR_IN_USER_FIELD_LOCALE#01.<br />");

}
if ($profile_method == "input") {

    echo "<tr>\n";
    echo "<td class='tbl'>Vælg dit Instrument:<span style='color:red;'>*</span><br /><br /><span>Ønsker du at tilmelde dig<br />flere instrumenter, skal du <br /><a href='contact.php'>kontakte os.</a></span></td>\n";
    echo "<td class='tbl'>";

    echo "<img src='images/illustrationer/trommerReg.jpg' width='50'><input type='radio' name='user_instruments' value='3'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "3" ? " checked='checked'" : "")." /> Trommer og Slagt&oslash;j. <br /><br />";

    echo "<img src='images/illustrationer/basReg.jpg' width='50'><input type='radio' name='user_instruments' value='5'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "5" ? " checked='checked'" : "")." /> Bas <br /><br />";

    echo "<img src='images/illustrationer/klaverReg.jpg' width='50'><input type='radio' name='user_instruments' value='4'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "4" ? " checked='checked'" : "")." /> Klaver og Keyboard <br /><br /> ";

    echo "<img src='images/illustrationer/guitarReg.jpg' width='50'><input type='radio' name='user_instruments' value='2'".(IsSeT($user_data['user_instruments']) && $user_data['user_instruments'] == "2" ? " checked='checked'" : "")." /> Guitar</td>\n";

    echo "</tr>\n";
} elseif ($profile_method == "display") {

    if ($user_data['user_instruments'] && ($user_data['user_instruments'] == 1 || $user_data['user_instruments'] == 2)) {
        echo "<tr>\n";
        echo "<td width='1%' class='tbl1' style='white-space:nowrap'>".$locale['uf_groups_001']."</td>\n";
        echo "<td align='right' class='tbl1'>".($user_data['user_instruments'] == 1 ? $locale['uf_groups_002'] : ($user_data['user_instruments'] == 2 ? $locale['uf_groups_003'] : $locale['uf_groups_004']));
        echo "</td>\n</tr>\n";
    }

} elseif ($profile_method == "validate_insert") {

    $db_fields .= ", user_instruments";

    $db_values .= ", '".(isset($_POST['user_instruments']) && isnum($_POST['user_instruments']) ? $_POST['user_instruments'] : "0")."'";

} elseif ($profile_method == "validate_update") {

    $db_values .= ", user_instruments='".(isset($_POST['user_instruments']) && isnum($_POST['user_instruments']) ? $_POST['user_instruments'] : "0")."'";

}




?>
Avatar billede frulilla Nybegynder
09. juni 2011 - 19:43 #12
Og det er filen. Det er i php fusion. Filen hænger sammen med flere. Bla. http://mubase.dk/profile.php
Avatar billede frulilla Nybegynder
09. juni 2011 - 19:44 #13
Og filen skulle så ha været http://mubase.dk/profile.zip
Avatar billede majbom Novice
09. juni 2011 - 20:47 #14
du har stadig ikke sagt om det skal være som jeg foreslår (.1.2.3.4), eller som christian foreslår (.1)
Avatar billede frulilla Nybegynder
09. juni 2011 - 21:29 #15
Jo i #5 skriver jeg, at der kun skal sættes ét tal ind. Nemlig i det vist eksempel, skal der KUN .3 ind.

Den er lavet med radio, så det er enten eller.
Avatar billede majbom Novice
09. juni 2011 - 21:56 #16
sorry, det overså jeg..

men du tjekker jo på om inputtet er et tal:

isnum($_POST['user_instruments'])

så er det klart at den brokker sig, når der er et punktum med...
Avatar billede frulilla Nybegynder
09. juni 2011 - 22:12 #17
Ups ja det kan jeg da godt se, men tjekker jeg ikke begge dele - eller har jeg misforstået det?


'".(isset($_POST['user_instruments']) && isnum($_POST['user_instruments']) ? $_POST['user_instruments'] : "0")."'
09. juni 2011 - 22:23 #18
Jeg kikker i morgen tidligt (hvis du ikke har en løsning for inden), for sent nu (for mange øller.)  Ha' en god aften.
Avatar billede frulilla Nybegynder
09. juni 2011 - 22:23 #19
Ahhh hun er da dum ;)

'".(isset($_POST['user_instruments']) && $_POST['user_instruments'] ? $_POST['user_instruments'] : "0")."'

OG så virker det!

Mange tak igen igen, splazz......smider du et svar til mig? :)
Avatar billede majbom Novice
10. juni 2011 - 08:36 #20
hvad med:

'".(isset($_POST['user_instruments']) && $_POST['user_instruments'] != "" ? $_POST['user_instruments'] : "0")."'
Avatar billede frulilla Nybegynder
10. juni 2011 - 15:26 #21
Ja det kan jeg da godt prøve, men det andet virker også fint :)
10. juni 2011 - 16:36 #22
Jeg så her til morgen, at der allerede var en anden der havde gået koden igennem og fundet problemet, så der var ingen grund for mig til at gå videre.  Du fik det til at virke.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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