Avatar billede djsteiner Nybegynder
16. oktober 2012 - 12:30 Der er 13 kommentarer og
1 løsning

Valg af sprog

Hej jeg har brug for lidt hjælp.

Jeg skal have lavet noget kode (if or else sætning) som vælger hvilket database ens tekst skal indsættes i ved hjælp af denne form:



<form action="sprog.php" method="post" id="form1" enctype="multipart/form-data">
       
           
            <strong>Vælg Sprog:</strong><br />
            <select name="lang">
               
                <option value="Dansk">Dansk</option>
                <option value="Engelsk">Engelsk</option>
                <option value="Tysk">Tysk</option>
            </select>
     
            <input type="submit" name="submit" value="Send" />








Noget med hvis der bliver valgt engelsk så skal teksten indsættes i den engelske database.


noget i stil med dette:

if ($_POST['value'] != 'Dansk') {
     
    INSERT INTO table_name
VALUES (value1, value2, value3,...)
   
  }elseif $_POST['value'] != 'Engelsk') {
 
  INSERT INTO table_name
VALUES (value1, value2, value3,...)


  }
Avatar billede Panen Nybegynder
16. oktober 2012 - 14:17 #1
Du skriver bare du skal have lavet noget kode?
Jeg synes du skal prøve at give dig i kast med opgaven selv, og hvis du så løber ind i et konkret problem kan vi prøve at hjælpe dig :)
Avatar billede olebole Juniormester
16. oktober 2012 - 15:05 #2
<ole>

Dine IF'er bør nok skrives på formen:

if ($_POST['lang'] === 'Dansk') {

- men derudover giver jeg Panen helt ret: Prøv, og kom igen, når du løber ind i specifikke problemer  =)

/mvh
</bole>
Avatar billede djsteiner Nybegynder
16. oktober 2012 - 15:26 #3
Ja det er helt rigtigt!

Jeg er ved at prøve mig frem.

Jeg vender lige tilbage når jeg har noget kode så må vi se på det.
Avatar billede djsteiner Nybegynder
16. oktober 2012 - 15:37 #4
Jeg har nu prøve mig lidt frem

Jeg får denne fejl koden:

Notice: Undefined index: submit in C:\wamp\www\Flere sprog\sprog.php on line 38 Call Stack: 0.0010 143496 1. {main}() C:\wamp\www\Flere sprog\sprog.php:0 Notice: Undefined index: submit in C:\wamp\www\Flere sprog\sprog.php on line 45 Call Stack: 0.0010 143496 1. {main}() C:\wamp\www\Flere sprog\sprog.php:0 Notice: Undefined index: submit in C:\wamp\www\Flere sprog\sprog.php on line 52 Call Stack: 0.0010 143496 1. {main}() C:\wamp\www\Flere sprog\sprog.php:0


<form action="sprog.php" method="post" id="form1" enctype="multipart/form-data">
       
           
            <strong>Vælg Sprog:</strong><br />
            <select name="lang">
               
                <option value="Dansk">Dansk</option>
                <option value="Engelsk">Engelsk</option>
                <option value="Tysk">Tysk</option>
            </select>
     
      <strong>Short description:</strong> <br />
        <textarea name="short_desc" id="desc_short" cols="90" rows="3" class="required" maxlength='300'>
           
</textarea>
     
     
            <input type="submit" name="submit" value="Send" />
       
</form>

<?php




 
if($_POST["submit"] == "Dansk") {
   
$conn = mysqli_connect("localhost","root","","feriehuse");   

$query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc)
VALUES ('short_desc')");

}elseif($_POST["submit"] == "Engelsk") {
   
$conn = mysqli_connect("localhost","root","","feriehus_engelsk");   
 
$query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc)
VALUES ('short_desc')");

}elseif($_POST["submit"] == "Engelsk") {
   
$conn = mysqli_connect("localhost","root","","feriehus_tysk");   

$query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc)
VALUES ('short_desc')");
   
}
?>
Avatar billede tobrukDk Novice
16. oktober 2012 - 15:38 #5

<strong>Vælg Sprog:</strong><br />
            <select name="lang">
               
                <option value="1">Dansk</option>
                <option value="2">Engelsk</option>
                <option value="2">Tysk</option>
            </select>
     
            <input type="submit" name="submit" value="Send" />




if ($_POST['value'] != '1') {
     
    INSERT INTO table_name
VALUES (value1, value2, value3,...)
   
  }elseif $_POST['value'] != '2') {
 
  INSERT INTO table_name
VALUES (value1, value2, value3,...)


  }
Avatar billede olebole Juniormester
16. oktober 2012 - 15:54 #6
Nej, det er ikke en fejl i #4. Det er en meddelelse om skidt kodestil. Man bør aldrig bruge variabler, der ikke er sat - og der er jo ikke posted noget, første gang du går ind på formularsiden. Derfor får du fejl, når du spørger på $_POST. Spørg først, om arrayet overhovedet indeholder noget:

<form action="sprog.php" method="post" id="form1" enctype="multipart/form-data">
    <strong>Vælg Sprog:</strong><br>
    <select name="lang">
        <option value="Dansk">Dansk</option>
        <option value="Engelsk">Engelsk</option>
        <option value="Tysk">Tysk</option>
    </select>
   
    <strong>Short description:</strong> <br>
    <textarea name="short_desc" id="desc_short" cols="90" rows="3" class="required" maxlength='300'></textarea>
   
    <input type="submit" value="Send">
</form>

<?php
if(!empty($_POST) && $_POST["lang"] === "Dansk") {
    $conn = mysqli_connect("localhost","root","","feriehuse");   
   
    $query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc)
    VALUES ('short_desc')");
   
}
elseif($_POST["lang"] === "Engelsk") {
       
    $conn = mysqli_connect("localhost","root","","feriehus_engelsk");   
     
    $query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc)
    VALUES ('short_desc')");
   
}
elseif($_POST["lang"] === "Engelsk") {
       
    $conn = mysqli_connect("localhost","root","","feriehus_tysk");   
   
    $query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc)
    VALUES ('short_desc')");
}
?>

Og så hedder din SELECT lang - og så er det den, du skal teste på - ikke submit. I øvrigt har jeg slettet det navn, da et name eller id ikke bør bestå af ord, der bruges til andet. Det vil 'forvirre' JavaScript, hvis du f.eks. vil validere formen på submit.

Så har jeg sluttelig stillet din kode op, så den er læselig. Det gør det væsentligt letter for os begge  *o)
Avatar billede olebole Juniormester
16. oktober 2012 - 15:57 #7
"Ole, du har jo lige skrevet, det ikke var en fejl ..!!?!??"

"Derfor får du meddelelsen, når du spørger på $_POST"  *o)
Avatar billede olebole Juniormester
16. oktober 2012 - 16:00 #8
Og så har jeg vist nævnt det før, men du bør helt klart kikke på prepared statements under MySQLI eller PDO. Det MySQL-API, du bruger er forlængst forældet og mere end temmelig usikkert
Avatar billede olsensweb.dk Ekspert
16. oktober 2012 - 17:46 #9
jeg syntes alle dise if'er skriger på en switch, ole'e php omskrevet, så bliver deet mere overskueligt IMHO
(utested)
<?php
if(!empty($_POST){
    $lang=$_POST["lang"];
    switch($lang){
        case "Dansk":
            $conn = mysqli_connect("localhost","root","","feriehuse");     
            $query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc) VALUES ('short_desc')");
        break;
        case "Engelsk":
            $conn = mysqli_connect("localhost","root","","feriehus_engelsk");       
            $query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc)  VALUES ('short_desc')");   
        break;
        case "Tysk":
            $conn = mysqli_connect("localhost","root","","feriehus_tysk");   
            $query = mysqli_query($conn,"INSERT INTO bsi_apartment_master (short_desc) VALUES ('short_desc')");
        break;       
        // evt en default: break;
    } 
}
?>

nu har olebole været så venlig at holde sig til "Procedural style" så du kan se hvor lidt forskæl der er fra det gamle mysql API til det fooobedret mysqli API
men du har også mulighed for at kører "Object oriented style" evt med "Prepared Statements"
Avatar billede olebole Juniormester
16. oktober 2012 - 19:48 #10
@ronols: Hvis du vil skændes, må du være lidt mere kreativ! (Læs: Jeg kunne ikke være mere enig)  *o)

En switch er helt oplagt i denne situation, men jeg udelod den i første omgang. Et valg, men absolut ikke nødvendigvis det rigtige  =)

Det var også ret overlagt at fortsætte spørgers egen procedurale stil. Jeg selv skriver OO og plejer altid at vise OO-eksempler, så jeg fandt det ganske passende at vise 'den anden side' også.
Avatar billede djsteiner Nybegynder
17. oktober 2012 - 15:06 #11
Hej med jer alle mange tak for jeres hjælp!

Det virker:)


Olebole jeg har kigget MYSQL prepared statements  og ja det giver mening at lave det sådan!

ronols: 

Jeg prøvede at bruge en switch men kunne ikke få det til at virke.

Det skal også lige siges at det jeg forsøger mig med her skal overføres til et bookingssytem, som gerne skulle komme til at køre i flere sprog.

Så jeg kommer nok med et sprøgsmål omkring hvordan jeg kan overføre denne kode til systemet.

Og hvem skal nu have point?
Avatar billede olebole Juniormester
17. oktober 2012 - 15:41 #12
Jeg samler ikke point, ellers tak. De må vist være ronols'  =)
Avatar billede djsteiner Nybegynder
17. oktober 2012 - 20:01 #13
Okay ronols smid et svar så får du point
Avatar billede olsensweb.dk Ekspert
19. oktober 2012 - 14:21 #14
får du her
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