Weedfald Juniormester
09. februar 2019 - 15:55 Der er 12 kommentarer og
1 løsning

UPDATE MySQL

Hej Eksperter,

Jeg har denne dropdown, hvori mine brugere skal kunne vælge et stykke tøj som de "ejer".

Når de har valgt det ønskede sæt tøj, skal de trykke på en "submit"/link
Og tøjet skal da skiftes ud til det de har valgt, altså update MySQL.

Min kode ser pt. sådan her ud, men der er ingen effekt når man benytter "gem stil" linket. På forhånd tak.

<select name="shoes">
        <?php
        $getShoes = mysql_query("SELECT * FROM `chat_clothes` WHERE `type` = 'sko' AND `ejer` = '".$_SESSION['brugernavn']."'");
       
        while ($showShoes = mysql_fetch_array($getShoes)) {
            echo '<option id="shoes" style="width: 300px;">'.$showShoes['navn'].'</option>';
        }
        ?>

    </select><br /><br>
    <a href="java script:alert(document.getElementById('shoes').value);">Gem stil</a><br>
Slater Ekspert
09. februar 2019 - 16:39 #1
Jeg forstår ikke helt spørgsmålet. Du spørger om en MySQL update, men viser en select. Og hvad er det for en effekt du efterspørger, når man trykker på gem stil? Der er to fejl i den, men det er tydeligt den bare skal vise værdien af vælgeren, hvilket ikke har meget med MySQL at gøre.

De to fejl er: "javascript" er i to ord, og du bruger getElementById, men har ikke et element med det id - et name er ikke det samme.

Men du må nok lige forklare spørgsmålet lidt bedre.
Computernørderne Juniormester
09. februar 2019 - 17:41 #2
I hvert fald skal du ændre name="shoes" til id="shoes", for at kunne bruge getElementById.
Desuden har du ikke en onchange-event på din select, det er derfor der ikke sker noget, når værdien af din select ændres.
Slater Ekspert
09. februar 2019 - 18:00 #3
#2: Der står dog at de først ønsker det gemt ved klik på en submit-knap, så der skal ikke ske noget på onchange.
Computernørderne Juniormester
09. februar 2019 - 18:20 #4
@slater Nå ja, det står der også. Jeg så igen verden som jeg er, ikke som den er; jeg ville ikke bruge submit-knappen, men gøre det som en onchange event ;)
Tak for "irettesætte" mig ;)
Weedfald Juniormester
10. februar 2019 - 12:26 #5
Forklare lige så godt som jeg kan.

I MySQL har jeg "stored" nogle outfits som brugerne kan have på, eller via denne "garderobe" skifte til nogle andre outfits.

Mit problem er, uanset hvad jeg har gjort så registreres "tøjskiftet" ikke når brugeren klikker på linket (Gem stil).

Meningen var som følger:

Tøj - Det den enkelte bruger ejer vises fra dropdown-menu hvorfra brugeren kan vælge det ønskede hår.

Når brugeren har valgt det ønskede sæt tøj, skal brugeren klikke på en "Gem stil" knap.

Herefter opdateres brugerens tøj og vises nu i chatten.
Det burde vel være ret enkelt, men jeg koger over det lige nu..

Se ovenstående kode.
Det behøves ikke nødvendigvis at ske i Javascript, hvis det er muligt via et php kald eller something, så er jeg glad hvis bare vi får løst problemet!

På forhånd tak.
Slater Ekspert
10. februar 2019 - 12:34 #6
Problemet vi har her er, at det kode du viser os overhovedet ikke forsøger på at gøre det du siger. Du siger du har forsøgt nogle ting og ikke fået det til at virke, hvilket er fint - men for at vi kan hjælpe med at løse problemet, giver det mening at vise hvad du har forsøgt. Men det kode du har her forsøger bare at vise en besked med de valgte sko og intet andet. Der er ingen sql update og der er ikke gjort noget for at gemme dataene.

For at kunne gemme data i MySQL, er du naturligvis nødt til at starte med at sende de valgte data tilbage til backenden. Den simpleste måde er at pakke det ind i en <form> og bruge en submit-knap til at sende alt det valgte på én gang, men det kan også gøres med AJAX og evt. enkeltvis, men du viser og fortæller os så lidt, at vi ikke har en mulighed for at gætte hvad du har tænkt.

Forresten lægger jeg lige mærke til at du stadig bruger mysql_query(). Hele den API er forældet og findes ikke i PHP 7+, så det er en rigtig god idé at skrive det om til PDO eller mysqli.
Computernørderne Juniormester
10. februar 2019 - 12:46 #7
Jeg tror at du gør klog i at skelne Javascript og HTML fra PHP til at starte med,

Det sidste P i PHP står for PREprocessor, og er ment til at processe data på en server (backend) og sende det tilbage til selve hjemmesiden (frontend).

For at gøre det nemmere for dig, vil jeg anbefale at bruge jQuery i stedet for native Javascript, da det minimerer cross-browser-problemer.

Altså:
Step 1: Tilføj brugen af jQuery til din HTML-fil (eller hvilken extension du ellers bruger):
<script src="https://code.jquery.com/jquery-latest.js?"></script>

Step 2: Lav en PHP-fil, der henter data fra serveren, og forbered den til at kunne sende data tilbage til din frontend. Se på dette eksempel (bemærk, jeg har ikke testet):
<?php
$shoes=array();
mysql_query("SELECT * FROM `chat_clothes` WHERE `type` = 'sko' AND `ejer` = '".$_SESSION['brugernavn']."'");
while ($showShoes = mysql_fetch_array($shoes))
{
  $shoes[]=$showShoes['navn'];
}
$result=array();
$result[]['shoes']=$shoes;
$response["result"]=$result;
echo json_encode($response);
?>
Denne fil kan du kalde shoes.php

Step 3:
Forbind din frontend til din backend, ved at læse data ind fra din database:

<select id="shoes">
</select>
<script language="Javascript">
function getshoes()
{
  url='./shoes.php';
  $.getJSON(url, function (json)
  {
    for (i=0;i<json.result[0].shoes.length;i++)
    {
      $('#shoes').append('<option value="'+json.result[0].shoes[i]+'">'+json.result[0].shoes[i]+'</option>');
    }
  });

Og så kan du arbejde ud fra det.

Det er bare et forslag, jeg har ikke det ultimative korrekte svar :)
Computernørderne Juniormester
10. februar 2019 - 12:49 #8
Enig med Slater. I mit forslag har jeg dog valgt at fortsætte med mysql_query, da det er det du bruger. Men jeg vil absolut anbefale at bruge mysqli eller PDO. Jeg bruger allerhelst mysqli - men det er nok en smagssag.
Computernørderne Juniormester
10. februar 2019 - 12:55 #9
Hov, der smuttede et spørgsmålstegn for meget ind:
Step 1:
<script src="https://code.jquery.com/jquery-latest.js"></script>
Computernørderne Juniormester
10. februar 2019 - 16:52 #10
Er dette hvad du prøver at opnå? Eller har jeg misforstået noget?

https://workshop.computernoerderne.dk/weedfall/

Albert
Weedfald Juniormester
10. februar 2019 - 16:58 #11
Albert,
Det er præcist hvad jeg forsøger at opnå!
Den enkelte bruger skal kunne gå i sin "garderobe", vælge sit tøj, trykke gem stil og så kunne se sit nye "outfit"

koden:
En <select> som viser tøjet fra MySQL (chat_clothes) som brugeren ejer.
En submit knap som ændre værdien i MySQL (chat_brugere) i kolonnen (Hair).

Hvad jeg har ind til nu:

<?php
       
        if(isset($_SESSION['logget_ind']) && $_SESSION['logget_ind'] == true) {
     
          if (isset($_POST['gemstil'])) {
         
          $value = mysql_real_escape_string($_POST['hair']);
         
     
          mysql_query("UPDATE `chat_brugere` SET `hair`=$value WHERE `brugernavn` = '" . $_SESSION['brugernavn'] . "'");
         
echo 'Din stil er gemt!';
              }
     
echo '
  <form action="" method="POST">
            <select name="hair" style="width: 150px;">
            <option value="cap2.png">Kasket</option>
            <option value="tekniker.png">Tekniker</option>
            <option value="pal.png">PalSuit</option>
            </select>

            <input type="submit" name="gemstil" value="Gem stil!" />
      </form> '
          }
?>
Computernørderne Juniormester
10. februar 2019 - 22:40 #12
Har tilføjet det med outfit - men jeg er ikke sikker på om det er det du mener.

I øvrigt ligger der endnu ikke en database bag, det er ren statiske arrays som API'en producerer
Computernørderne Juniormester
10. juni 2019 - 23:05 #13
Hej Weedfald

Kan se at du har markeret min kommentar som løsning. Jeg mindes at jeg på et tidspunkt havde genskrevet din kode - fik du fat i den? Tror jeg sendte den til dig pr. mail, hvis jeg husker rigtigt.

Hører gerne lidt mere om hvordan det går med dit projekt.

Albert
Computernoerden.dk
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

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



Seneste spørgsmål Seneste aktivitet
26 min siden Sum af tal der står som tekst Af Butterfly i Excel
I dag 04:53 Nye EDGE og Programvare. Af Arne Mathiesen i PC
I går 23:23 danishbits Af rschansen i Oracle
I går 22:58 danishbish Af rschansen i Browsere
I går 20:35 Sql database i Visual Studio Af Muprhy i C#


Premium
Opdater nu: Hackere udnytter kendt alvorlig sårbarhed i routere fra Cisco
Cisco anbefaler virksomheder, der bruger selskabets routere, til straks at opdatere styresystemet. Hackere fra især Kina udnytter en alvorlig såbarhed.
Computerworld
Det nye MitID er et tigerspring for bedre cybersikkerhed
Klumme: Det nye MitID er en enestående mulighed for et markant løft af it-sikkerheden i danske kommuner. Med baggrund i udfasningen af det nuværende NemID kan de samtidig forbedre og styrke deres it-systemers værn overfor cyberangreb.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Regner din ferie væk? Brug tiden på at søge en af disse otte stillinger, der er ledige netop nu
Det sjasker ned over hele Danmark. Du kan bruge de våde sommerdage på at søge et af disse otte job, der er ledige lige nu.
White paper
Få overblikket: Her er Gartners vurdering af 16 førende CRM-leverandører
Den teknologiske udvikling skaber pt. en massiv omstilling inden for kundeservice. Samtidig muliggør teknologien også en konsolidering, som igen stiller nye krav til moderne CRM-systemer. Især kunstig intelligens og muligheden for digitale kanaler står højt på kundernes liste. I dette whitepaper kan du derfor læse om analysevirksomheden Gartners research af 16 leverandører inden for CRM og dermed få et overblik over det stadigt mere komplekse landskab.