Avatar billede 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>
Avatar billede 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.
Avatar billede 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.
Avatar billede 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.
Avatar billede 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 ;)
Avatar billede 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.
Avatar billede 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.
Avatar billede 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 :)
Avatar billede 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.
Avatar billede 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>
Avatar billede 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
Avatar billede 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> '
          }
?>
Avatar billede 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
Avatar billede 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
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