Avatar billede Thomasrn Seniormester
23. juli 2017 - 21:30 Der er 10 kommentarer

url localhost/opretspiller..php?sid=$sid

hej er i gang med lave en hjemme side hvor man kan oprette nogle spiller.
Mine spiller bliver oprettet og får en ID inde i Database vil bare spørge hvordan får jeg ID'en op i Url'en så den eksempel bliver:
localhost/opretspiller2.php?sid=4
grunden til den bliver opretspiller2.php er for form action sender den til den side så man kan se spillerens stats navn osv.
Avatar billede olsensweb.dk Ekspert
23. juli 2017 - 21:58 #1
det simple svar må være du laver en link
hvis du anvender en form, så send formdata over med GET

men forstå ikke du har lagt spm i mysql det er simpelt serverside (her php)
https://www.computerworld.dk/eksperten/spm/programmering/php


ellers må vi se det code der driller dig, samt kende database tabellerne, og navne på database felterne, samt den sql forspørgelse du laver, hvis der sql der driller
Avatar billede Thomasrn Seniormester
23. juli 2017 - 22:07 #2
Dette er koden: til opretspiller et
og alt bliver placeret rigtigt skal bare trække $sid ud og op i url'en
skal jeg så fjerne form action?


?php
session_start();
include_once "connection.php";
include "dbh.php";
?>
<html>
<head>
    <title>Opret spiller</title>
</head>
<body>
<style type="text/css">
.fornavn, .efternavn, .alder, .land, .position{
margin-left: 10px;
}

</style>
<form action = "opretspiller2.php" method="POST">
<div class="fornavn">
    <label>Fornavn:</label>
    <input type='text' name='spillerfornavn' placeholder='Fornavn'>
</div>

<div class="efternavn">
    <label>Efternavn:</label>
    <input type='text' name='spillerefternavn' placeholder='Efternavn'>
</div>

<div class="alder">
    <label>Alder:</label>
    <select name="alder">
        <?php
            $query = "SELECT * FROM alder";
            $results = mysqli_query($con, $query);

            foreach ($results as $alder) {
                    ?>
        <option value="<?php echo $alder["alder"];?>"><?php echo $alder["alder"]; ?></option>
        <?php
            }
        ?>
    </select>
</div>

<div class="land">
    <label>Land:</label>
    <select name="land">
        <?php
            $query = "SELECT * FROM land";
            $results = mysqli_query($con, $query);

            foreach ($results as $land) {
                    ?>
        <option value="<?php echo $land["land"];?>"><?php echo $land["land"]; ?></option>
        <?php
            }
        ?>


?>

    </select>
</div>

<div class="position">
    <label>Position:</label>
    <select name="position">
        <?php
            $query = "SELECT * FROM position";
            $results = mysqli_query($con, $query);

            foreach ($results as $position) {
                    ?>
        <option value="<?php echo $position["position"];?>"><?php echo $position["position"]; ?></option>
        <?php
            }
           
        ?>
        <input type="hidden" name="aflervering" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="afslutning" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="dribling" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="tackling" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="doedboldsituationer" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="hurtighed" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="acceleration" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="udholdenhed" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="lederskab" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="kampaand" value="<?php echo rand(1,10); ?>" />
        <input type="hidden" name="hoejde" value="<?php echo rand(165,207); ?>" />
        <input type="hidden" name="vaegt" value="<?php echo rand(55,105); ?>" />





    </select>

</select>

<br>
    <button type="submit">Opret spiller</button>
</div>

</body>
</html>
Avatar billede olsensweb.dk Ekspert
24. juli 2017 - 10:08 #3
kan du ikke lave denne linje
<form action = "opretspiller2.php" method="POST">
om til
<form action = "opretspiller2.php?sid=<?php echo $sid; ?>" method="POST">


normalt gør man som dette 
<form action = "opretspiller.php" method="get">
<input type="hidden" name="sid" value="5">           
<button type="submit">Opret spiller</button>
</form>


start med at få din html på plads, valider din html
Avatar billede Thomasrn Seniormester
24. juli 2017 - 14:59 #4
har prøvet:
<form action = "opretspiller2.php?sid=<?php echo $sid; ?>" method="POST">

men virker ikke får den side frem
http://localhost/phplessons/opretspiller2.php?sid=%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20sid%20in%20%3Cb%3EC:\xampp\htdocs\phplessons\opretspiller.php%3C/b%3E%20on%20line%20%3Cb%3E17%3C/b%3E%3Cbr%20/%3E

har det et svar på hvorfor ikke giver sid
Avatar billede Thomasrn Seniormester
24. juli 2017 - 15:10 #5
kan godt se den siger den ikke kan finde sid men ligger i samme database som alle de andre informationer der bliver gemt ligger
Avatar billede olsensweb.dk Ekspert
24. juli 2017 - 16:49 #6
#5
hvor henter du $sid henne ??
ligger den i session eller ???
https://www.computerworld.dk/eksperten/spm/1017481?k=8260313

et eller andet sted må du jo hente info fra

når du insetter en record, får du dens id, hvis du lige efter kalder mysqli_insert_id
http://php.net/manual/en/mysqli.insert-id.php

ellers skal du hente den via et sql kald

før din form skal $sid være tilgængelig som variabel
Avatar billede Thomasrn Seniormester
26. juli 2017 - 01:34 #7
nu har jeg lavet denne kode hvilket viser den som echo:

$sid = $con->insert_id;
echo $sid;

hvordan får den i url'en via form action?
på forhånd tak :)
Avatar billede olsensweb.dk Ekspert
26. juli 2017 - 10:36 #8
#7
hvor kalder du $sid = $con->insert_id; ??
jeg kan regne ud den code ikke er på sammen side / før din form, som der du bruger den, da den så elers ville have stået i url'en.

du kunne jo gemme den i session som jakobdo skrev i https://www.computerworld.dk/eksperten/spm/1017481?k=8260322
det hvor du indsætter spilleren ligger du den i session, og på denne side henter du den fra session

hvis du ikke har gemt den i session, kan du muligvis hente den igen på denne side via sql MAX, men tager ikke højde for at sidste id kan være slettet
https://dev.mysql.com/doc/refman/5.7/en/example-maximum-column.html
https://www.w3schools.com/sql/func_mysql_max.asp

-------------

hvor bliver sid oprettet ??
du skriver i #5
"men ligger i samme database som alle de andre informationer der bliver gemt ligger"

dette må jo være udført før du udfører coden i dette spm
Avatar billede Thomasrn Seniormester
26. juli 2017 - 10:46 #9
kalder den i opretspiller2.php da jeg første kan finde id'et da jeg har implementeret alle  stats højde vægt osv. kode kommer her

    <?php

include 'connection.php';


$spillerfornavn = $_POST['spillerfornavn'];
$spillerefternavn = $_POST['spillerefternavn'];
$alder = $_POST['alder'];
$land = $_POST['land'];
$position = $_POST['position'];
$aflervering = $_POST['aflervering'];
$afslutning = $_POST['afslutning'];
$dribling = $_POST['dribling'];
$tackling = $_POST['tackling'];
$doedboldsituationer = $_POST['doedboldsituationer'];
$hurtighed = $_POST['hurtighed'];
$acceleration = $_POST['acceleration'];
$udholdenhed = $_POST['udholdenhed'];
$lederskab = $_POST['lederskab'];
$kampaand = $_POST['kampaand'];
$hoejde = $_POST['hoejde'];
$vaegt = $_POST['vaegt'];

$sql = "INSERT INTO fodboldspillere (fornavn, efternavn, alder, land, position, aflervering,
    afslutning, dribling, tackling, doedboldsituationer, hurtighed, acceleration,
    udholdenhed, lederskab, kampaand, hoejde, vaegt)

VALUES ('$spillerfornavn', '$spillerefternavn', '$alder', '$land', '$position', '$aflervering',
    '$afslutning', '$dribling', '$tackling', '$doedboldsituationer', '$hurtighed', '$acceleration',
    '$udholdenhed', '$lederskab', '$kampaand', '$hoejde', '$vaegt')";
$result = $con->query($sql);

$sid = $con->insert_id;
echo "mit id er: ";
echo $sid;
?>
Avatar billede olsensweb.dk Ekspert
26. juli 2017 - 11:40 #10
#9 så skal du da heller ikke have sid med over i url'en til opretspiller2.php, da det er der du opretter sid

så skal denne
<form action = "opretspiller2.php?sid=<?php echo $sid; ?>" method="POST">

laves om til det gamle
<form action = "opretspiller2.php" method="POST">



i opretspiller2.php laver du så bare en header location, som jakobdo skrev i https://www.computerworld.dk/eksperten/spm/1017481?k=8259908


$result = $con->query($sql);
$sid = $con->insert_id;
echo "mit id er: ";
echo $sid;


laves om til
$result = $con->query($sql);
$sid = $con->insert_id;
header("Location: spiller.php?sid=" . $sid);
exit();



nb:
ref http://php.net/manual/en/function.header.php
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
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