Avatar billede Milla-Tigerdyr Praktikant
19. september 2011 - 19:31 Der er 43 kommentarer og
1 løsning

Kan jeg bruge 'GET' til at hente, når det IKKE er en formular?

I får lige et output af min kode;
.........................................
while ($row = mysql_fetch_assoc($result)){
echo '
<br>
<br>
<img src='.$row['billede'].'><br>
<b>ID:</B> '.$row['id'].'</h2><br>
<b>Navn:</b> '.$row['navn'].'<br>
<b>Ejer:</b> '.$row['ejer'].'<br>
<b>Pris:</b> '.$row['pris'].'<br>
(osv.osv.osv.osv.)
<a href="koeb_hest.php?id= '.$row['id'].'&stutteri='.$stutteri.'">Køb</a>
............................................

- Denne side virker helt perfekt. Men når jeg så sender folk videre til "køb", og skal finde ud af om man har nok penge, har jeg benyttet denne kode;
.....................................
if($pris > $konto){
echo 'Du har ikke råd til at købe denne hest gå tilbage og vælg en der er billigere';
} else {
bla bla bla
}
..................................

Mit spørgsmål er bare, om jeg kan bruge GET til at hente f.eks prisen, og hvordan jeg så skal hente konto'en?

"Konto", er i min tabel members (sammen med myusername og alt det der andet noget)
"Pris"(på hesten) er i min tabel heste hvor navn, ejer osv. også står.
Jeg vil nemlig gerne have udskrevet f.eks "Bekræft køb for _navn her_, prisen er _pris her_."

Men mit problem er, at jeg ikke ved hvordan jeg henter BÅDE pris OG konto, så jeg kan tjekke om de har penge nok.


Håber på at få et svar :)
Avatar billede majbom Novice
19. september 2011 - 19:37 #1
hvis
$row['id']
er id'et på hesten, kan du vel ud fra dette hente prisen på hesten fra databasen og du har nok brugerens id i din session, som du så kan hente konto ud fra?
Avatar billede Milla-Tigerdyr Praktikant
19. september 2011 - 19:45 #2
Jamen hvordan skal jeg gøre det? Jeg har mange gange førhen haft problemer med at have to SELECT (af to forskellige databaser), i ét script.
Men kunne det være noget lignende;
SELECT pris FROM heste WHERE id = $id
og
SELECT konto FROM members WHERE myusername = $myusername

og
$id = $row['id'];
$myusername = $_SESSION['myusername'];

(dette er lige hurtigt håndskrevet, men er det rigtigt?)
Avatar billede majbom Novice
19. september 2011 - 19:54 #3
næsten som jeg selv ville have skrevet det ;)
Avatar billede Milla-Tigerdyr Praktikant
19. september 2011 - 20:19 #4
Okay super :D
Avatar billede Milla-Tigerdyr Praktikant
19. september 2011 - 20:22 #5
Men kan jeg godt skrive "$id = $row['id'];", når det var på den forrige side, hvor der stod hvor id kom fra?
Avatar billede majbom Novice
19. september 2011 - 20:23 #6
nej, men du har det jo i
$_GET['id']
Avatar billede webweaver Praktikant
19. september 2011 - 20:41 #7
Splazz har egentlig svaret på dit spørgsmål i titlen.
Ja, du kan godt bruge $_GET, når du ikke arbejder med formularer.

F. eks. ved variabler i en URL.
Der bør du benytte $_GET.

hjemmeside.dk/side.php?id=34

$_GET["id"] vil indeholdes "34" ...
Avatar billede majbom Novice
19. september 2011 - 20:54 #8
bare husk at tjek om variabler hentet fra $_GET og $_POST indeholder hvad du forventer - f.eks. kan du tjekke om din id er numerisk med:

<?php
  is_numeric($_GET['id'])
?>
Avatar billede Milla-Tigerdyr Praktikant
19. september 2011 - 21:04 #9
Kan i se om der er noget galt her? (har mysql connection, i min functions.php)


<?
session_start();
include("functions.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<link href="style.css" rel="stylesheet" type="text/css">
<?
$userid = $_SESSION['userid'];
if(!is_numeric($userid)) { die('Af sikkerhedsmæssige årsager er siden stoppet i at loade. Kontakt webmaster hvis fejlen fortsætte'); exit(); }
$id = $_GET['id']
$myusername = $_SESSION['myusername'];

mysql_query("SELECT konto FROM members WHERE myusername = $myusername")
mysql_query("SELECT pris FROM heste WHERE id = $id")

if($pris > $konto){
echo 'Du har ikke råd til at købe denne hest gå tilbage og vælg en der er billigere';
} else {
echo 'lalala';
?>
<form action="bekraeft_hestekoeb.php" enctype='multipart/form-data' method=POST name="hestekoeb">
<center>NAVN, købes af  <input type="hidden" name="navnejer" value=""> </center>
<input type="hidden" name="pris" value="pris"> Hesten koster
<br>
<input type=submit value="Bekræft køb" name="submit">
<?
}
?>
Avatar billede majbom Novice
19. september 2011 - 21:09 #10
du smider ikke retur-svaret fra dine 2 mysql-queries i variabler, og du mangler semikolon efter disse to også - prøv med:

$konto_res = mysql_query("SELECT konto FROM members WHERE myusername = $myusername") or die(mysql_error());
$pris_res = mysql_query("SELECT pris FROM heste WHERE id = $id") or die(mysql_error());

$konto = mysql_fetch_row($konto_res);
$pris = mysql_fetch_row($pris_res);


så har du konto i
$konto[0]
og pris i
$pris[0]
Avatar billede Milla-Tigerdyr Praktikant
19. september 2011 - 21:20 #11
splazz, den viser bare blank side :/
Avatar billede majbom Novice
19. september 2011 - 21:29 #12
hmm, kunne tyde på at du får en php-fejl der ikke bliver vist - prøv lige at smid:

error_reporting(E_ALL);


øverst i filen.

det undrer mig også at du bruger hidden fields i din form, når du skriver noget tekst på skærmen lige før felterne. du bruger også "enctype='multipart/form-data'" - det bruger man normalt kun når man skal sende filer med formen...
Avatar billede olebole Juniormester
20. september 2011 - 00:28 #13
<ole>

prøv med et par gåseøjne omkring værdien i din WHERE clause:


$konto_res = mysql_query("SELECT konto FROM members WHERE myusername = '$myusername'") or die(mysql_error());


/mvh
</bole>
Avatar billede majbom Novice
20. september 2011 - 07:20 #14
-> #13 - ja! den havde jeg overset, men den skulle jo gerne komme ud som fejl, når error_reporting er slået til..
Avatar billede Stickano Nybegynder
20. september 2011 - 13:48 #15
Mangler du ikke også at give dine querys et DB connection?

$conn = mysqli_connect("","","","");

$sql = "SELECT * FROM members.heste WHERE members.konto='$myusername' AND heste.id=".$_GET['id'];

$query = mysqli_fetch_array($conn,$sql)or die(mysqli_error($conn));

$result = mysqli_fetch_array($query);

Sådan ville jeg gøre det. Så kan du også kalde informationer ud som du snakker om. Så bruger du bare $result['']; til at trække dine informationer ud. F.eks. brugernavn = $result['myusername'];
Avatar billede majbom Novice
20. september 2011 - 15:20 #16
-> #15 - hvorfor roder du lige pludselig mysqli ind i det?
det er ikke nødvendigt at angive en connection...
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 15:54 #17
Stickano, som sagt tideligere så har jeg connection til databasen i "functions.php"

- Splazz og olebole, jeg kigger lige på det om lidt :)
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 16:46 #18
splazz, til det med formen.. jeg skal jo også sende form data videre til bekraeft_koeb, som så skal flytte hesten..???
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 16:50 #19
Hej alle, den viser stadig blank side. Nu lavede jeg en mysql connection for en sikkerhedskyld, i kan lige få koden:


<?
session_start();
include("functions.php");
error_reporting(E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<link href="style.css" rel="stylesheet" type="text/css">
<?
$userid = $_SESSION['userid'];
if(!is_numeric($userid)) { die('Af sikkerhedsmæssige årsager er siden stoppet i at loade. Kontakt webmaster hvis fejlen fortsætte'); exit(); }

$host="localhost"; // Host name
$username="users_camilla"; // Mysql username
$password="9wdDEedFZ8WYDF7n"; // Mysql password
$db_name="users_camilla"; // Database name
// Connect to server and select database.

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$id = $_GET['id']
$myusername = $_SESSION['myusername'];

$konto_res = mysql_query("SELECT konto FROM members WHERE myusername = '$myusername'") or die(mysql_error());
$pris_res = mysql_query("SELECT pris FROM heste WHERE id = '$id'") or die(mysql_error());

$konto = mysql_fetch_row($konto_res);
$pris = mysql_fetch_row($pris_res);

if($pris > $konto){
echo 'Du har ikke råd til at købe denne hest gå tilbage og vælg en der er billigere';
} else {
echo 'lalala';
?>
<form action="bekraeft_hestekoeb.php" enctype='multipart/form-data' method=POST name="hestekoeb">
<center>NAVN, købes af  <input type="hidden" name="navnejer" value=""> </center>
<input type="hidden" name="pris" value="pris"> Hesten koster
<br>
<input type=submit value="Bekræft køb" name="submit">
<?
}
?>
Avatar billede olebole Juniormester
20. september 2011 - 18:02 #20
<ole>

Det giver ikke mening at bruge $_GET, når du bruger method="post" i din form.

Du skal enten bruge $_POST - eller også skal du ændre til method="get" og fortsætte med at bruge $_GET.

Du mangler i øvrigt også et semikolon

$id = $_GET['id']  // <-- her

- og det undrer mig, hvis du ikke har fået fejl desangående
/mvh
</bole>
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 18:10 #21
Det skal lige siges at hele den der form altså ikke er rettet til endnu.Der skal så stå
$id = $_GET['id'];

ikke?
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 18:11 #22
Så nu virker det sørme! Tak tak!;)
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 18:14 #23
Hvis jeg nu skal udskrive noget som f.eks prisen, hvordan skal jeg så skrive det?
Avatar billede majbom Novice
20. september 2011 - 18:51 #24
echo $pris?
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 18:59 #25
Har prøvet, det vil den ikke D:
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 18:59 #26
Hvis jeg gør det, skriver den nemlig bare "Array"
Avatar billede majbom Novice
20. september 2011 - 19:40 #27
har du læst #10?

der står også
$pris[0]
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 19:46 #28
Hovsa, men tak :D
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 19:51 #29
Hvis nu jeg skal sende videre til en side der hedder koeb_hest_nu.php eller sådan noget, hvor i der i den kode sker det, at den flytter hesten (ved at ændre ejer navnet), hvordan ville i så føre handlingen videre?

Altså SKAL det gøres via. en form? Eller hvordan skal jeg gøre det?
Avatar billede majbom Novice
20. september 2011 - 19:54 #30
du kan sende brugeren videre med header()-funktionen:

header('location: koeb_hest_nu.php?hest_id=' . $id . '&ny_ejer=' . $myusername);


denne funktion virker kun når du ikke har udskrevet noget til browseren.
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 19:58 #31
Men hvordan laver jeg en knap de kan trykke på?

- Udover det, så laver jeg vel en GET funktion, der henter "ny ejer", og hest_id, ikke?
Også skifter jeg ejernavnet på en eller anden måde?:)
Og trækker beløbet fra kontoen..puha..:S
Avatar billede majbom Novice
20. september 2011 - 20:09 #32
<button onclick="window.location.href='koeb_hest_nu.php?id=<?php echo $id; ?>&bruger=<?php echo $myusername; ?>'">Køb hest</button>
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 20:18 #33
Tusind tak :D

Lige et spørgsmål mere, hvis jeg skal ind og flytte hesten, ved at ændre "ejer" navnet, så skal jeg vel benytte en mysql UPDATE ikke?

Også, hvordan trækker jeg prisen, fra ens konto?
Avatar billede majbom Novice
20. september 2011 - 20:49 #34
selv tak


Lige et spørgsmål mere, hvis jeg skal ind og flytte hesten, ved at ændre "ejer" navnet, så skal jeg vel benytte en mysql UPDATE ikke?


korrekt


Også, hvordan trækker jeg prisen, fra ens konto?


"UPDATE brugere SET konto = konto - " . $pris


burde kunne gøre det, der skal så lige en WHERE-clause på, så det kun er den enkelte bruger der kommer af med penge :)
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 20:52 #35
Hvis jeg lige prøver at bikse noget kode sammen, vil du så lige tjekke det efter?:)
Avatar billede majbom Novice
20. september 2011 - 20:55 #36
yes yes...
Avatar billede Milla-Tigerdyr Praktikant
20. september 2011 - 21:06 #37
Gør jeg noget meget forkert her? Fordi den viser blank side :I

<?
session_start();
include("functions.php");
error_reporting(E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<link href="style.css" rel="stylesheet" type="text/css">
<?
$userid = $_SESSION['userid'];
if(!is_numeric($userid)) { die('Af sikkerhedsmæssige årsager er siden stoppet i at loade. Kontakt webmaster hvis fejlen fortsætte'); exit(); }

$host="localhost"; // Host name
$username="users_camilla"; // Mysql username
$password=""; // Mysql password er udfyldt
$db_name="users_camilla"; // Database name
// Connect to server and select database.

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$id = $_GET['id'];
$bruger = $_GET['bruger'];
$pris = $_GET['pris'];

$sql="UPDATE heste SET ejer='$bruger' WHERE id='$id'";
$result=mysql_query($sql);

$sql2="UPDATE members SET konto = konto - " . $pris WHERE bruger='$bruger'";
$result2=mysql_query($sql2);

if($result&$result2){
echo "Hesten er nu købt, og overført til dit stutteri!";
echo "<BR>";
}

else {
echo mysql_error();
}

?>
Avatar billede majbom Novice
20. september 2011 - 21:35 #38
prøv lige at ret:

if($result&$result2){


til:

if($result && $result2){
Avatar billede Milla-Tigerdyr Praktikant
21. september 2011 - 14:55 #39
Den viser stadig blank side.
Men er min kode da rigtig?
Avatar billede majbom Novice
21. september 2011 - 15:01 #40
prøv lige at ret:

$sql2="UPDATE members SET konto = konto - " . $pris WHERE bruger='$bruger'";


til:

$sql2="UPDATE members SET konto = konto - " . $pris . " WHERE bruger='" . $bruger . "'";
Avatar billede Milla-Tigerdyr Praktikant
21. september 2011 - 15:05 #41
Ligemeget :D!
Så fik jeg det sq til at virke! :D
JEG er så glad! :D
Avatar billede Milla-Tigerdyr Praktikant
21. september 2011 - 15:05 #42
Splazz, jeg havde ellers godt lige selv fundet ud af det (så er man lidt stolt, af man kan finde ud af det), men tak :D!
Avatar billede majbom Novice
21. september 2011 - 18:35 #43
selv tak :)
Avatar billede majbom Novice
22. september 2011 - 15:08 #44
tfp :)
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