Gå til innhold

Sette inn "rand" inni databasen ?


Anbefalte innlegg

Hei :)

 

Jeg lager en funksjon slik at hver gjeng på spillet mitt, får en id utdelt når den blir laget.

 

 

Det gjør jeg ved denne funksjonen:

$id = rand(0, 100000);

 

 

 

Og her er hele koden, jeg bruker:

$id = rand(0, 100000);
$opdracht = "insert INTO crews (id,name,boss,bank,recruiter,cleaner,rang) values('$id','$ikke','$cookieusername','500000','0','0','0')";
$opdracht2 = "insert INTO users (crew) values('$id') where username = '$cookieusername";

$resultaat = mysql_query($opdracht);
$resultaat2 = mysql_query($opdracht2);

if($resultaat || $resultaat2) {
echo "Velykket! Du lage gjengen: <b>$ikke</b><br>";
}

 

 

 

Men jeg får ikke satt inn det tilfeldige tallet "rand" lager, inn i databasen. Hvorfor det ?

 

Finnes det andre måter å gjøre det på ?

Lenke til kommentar
Videoannonse
Annonse

Veldig stor sansynlighet med denne koden ?

 

$id = rand(0, 100000);

 

Når det er plass til 10 gjenger. Men kan du hjelpe meg med å fikse dette?

 

 

 

PS:

Jeg kan ikke skifte feltet "crew" til primary key, fordi det er allerede en der, altså id'en til brukeren!

Endret av php_user
Lenke til kommentar
PS:

Jeg kan ikke skifte feltet "crew" til primary key, fordi det er allerede en der, altså id'en til brukeren!

 

 

 

Lest ?

 

Men hvordan skal jeg gjøre dette da?

 

Det er inn til users jeg ikke får satt inn.

Men i tabbelen crews går det, for der er id'feltet auto_increment..

Lenke til kommentar
PS:

Jeg kan ikke skifte feltet "crew" til primary key, fordi det er allerede en der, altså id'en til brukeren!

 

 

 

Lest ?

 

Men hvordan skal jeg gjøre dette da?

 

Det er inn til users jeg ikke får satt inn.

Men i tabbelen crews går det, for der er id'feltet auto_increment..

 

 

Nå må du også huske å gi credits til nedlenderen som faktisk lagde koden også da :). btw hvorfor skal de få en random id?

 

er det ikke mulig å bruke den iden som de alerede får?

Endret av Dryper
Lenke til kommentar
PS:

Jeg kan ikke skifte feltet "crew" til primary key, fordi det er allerede en der, altså id'en til brukeren!

 

 

 

Lest ?

 

Men hvordan skal jeg gjøre dette da?

 

Det er inn til users jeg ikke får satt inn.

Men i tabbelen crews går det, for der er id'feltet auto_increment..

 

 

Nå må du også huske å gi credits til nedlenderen som faktisk lagde koden også da :). btw hvorfor skal de få en random id?

 

er det ikke mulig å bruke den iden som de alerede får?

 

 

 

Hvordan skal jeg gjøre det da? Den blir bare sendt i første spørring!

Lenke til kommentar
Hvordan skal jeg gjøre det da? Den blir bare sendt i første spørring!

http://no2.php.net/mysql_insert_id

 

Et lite tips dersom du er nybegynner til programmering. Alt du ønsker å gjøre er enten mulig uten å finne på noe "lurt" av deg selv eller er noe du egentlig ikke ønsker å gjøre. Søk hjelp enten ved å google, lese docs eller spørre noe med med erfaring, selv om du da også må være klar over at "lure" ting du finner kan også være noe du ikke ønsker å gjøre.

Lenke til kommentar

Da er hele greia løst, koden til nå:

 

 

<?php

error_reporting(E_ALL|E_STRICT);

 

if(isset($_POST['ja'])) {

$ikke = $_POST['ikke'];

 

 

$skjekk = mysql_query("SELECT * FROM crews WHERE `name`='$ikke'");

$count = mysql_num_rows($skjekk);

 

if($count > 0) {

echo ("<b>Mislykket!</b> Fordi: Gjengnavnet er <u>opptatt</u>!<br><br>");

}

else {

 

 

 

$id = rand(0, 100000);

$opdracht = "INSERT INTO crews (id,name,boss,bank,recruiter,cleaner,rang) values('$id','$ikke','$cookieusername','500000','0','0','0')";

$opdracht2 = "UPDATE users set crew = '$id' where username = '$cookieusername'";

 

$resultaat = mysql_query($opdracht) or die(mysql_error());

$resultaat2 = mysql_query($opdracht2) or die(mysql_error());

 

if($resultaat || $resultaat2) {

echo "Velykket! Du lage gjengen: <b>$ikke</b><br><br>";

}

 

else {

 

echo 'Det har oppstått en feil ved spørring' . mysql_error();

 

}

}

 

 

}

?>

 

 

 

 

 

Men nå har jeg enda et problem:

 

Jeg skal sette en maks sperre på å lage gjenger på 5 stk.

 

 

Hvordan kan jeg gjøre dette ?

Lenke til kommentar
Da er hele greia løst, koden til nå:

 

 

<?php

error_reporting(E_ALL|E_STRICT);

 

if(isset($_POST['ja'])) {

$ikke = $_POST['ikke'];

 

 

$skjekk = mysql_query("SELECT * FROM crews WHERE `name`='$ikke'");

$count = mysql_num_rows($skjekk);

 

if($count > 0) {

echo ("<b>Mislykket!</b> Fordi: Gjengnavnet er <u>opptatt</u>!<br><br>");

}

else {

 

 

 

$id = rand(0, 100000);

$opdracht = "INSERT INTO crews (id,name,boss,bank,recruiter,cleaner,rang) values('$id','$ikke','$cookieusername','500000','0','0','0')";

$opdracht2 = "UPDATE users set crew = '$id' where username = '$cookieusername'";

 

$resultaat = mysql_query($opdracht) or die(mysql_error());

$resultaat2 = mysql_query($opdracht2) or die(mysql_error());

 

if($resultaat || $resultaat2) {

echo "Velykket! Du lage gjengen: <b>$ikke</b><br><br>";

}

 

else {

 

echo 'Det har oppstått en feil ved spørring' . mysql_error();

 

}

}

 

 

}

?>

 

 

 

 

 

Men nå har jeg enda et problem:

 

Jeg skal sette en maks sperre på å lage gjenger på 5 stk.

 

 

Hvordan kan jeg gjøre dette ?

 

 

 

 

 

 

du må lage noe som gjør at samme id på users kan bare bli brukt 5 ganger :D feks

 

 

$query = "SELECT counter, COUNT(counter) FROM auksjon GROUP BY counter"; 

if ($row['COUNT($crewid)'] > 5) { Det kan ikke være mer enn 5 medlemmer i klanen};
else { echo "Velkommen til $crewname"};

 

Tviler på at dette funker da :) var bare noe jeg fjerta opp :) men om du fikser litt på den så funker den vell :D

Endret av Dryper
Lenke til kommentar
$query = "SELECT counter, COUNT(counter) FROM auksjon GROUP BY counter";

 

 

Hva gjør den linja ? Hva skal jeg skrive der det står counter og counter til slutt ?

 

Den linja teller opp hvor mange Auksjonen som ligger i databasen (i dette tilfelle) men bare fyll inn ditt ..

Lenke til kommentar
Da er hele greia løst, koden til nå:

 

<?php
error_reporting(E_ALL|E_STRICT);

if ( !isset( $_POST['ja'] ) || !isset( $_POST['ikke'] ) ) {
	die( 'ja or ikke is not set, whatever they are' );
}

$crewName = $_POST['ikke'];

// Ved å bare selecte name blir query lettere å optimalisere med index, ved å sette LIMIT 1 vil også optimalisereren få en lettere jobb. Aller helst bør datafeltet name i tabellen være UNIQUE.
if ( mysql_num_rows( mysql_query( "SELECT name FROM crews WHERE name = '$crewName' LIMIT 1;" ) ) > 1 ) {
	die( 'opptatt' );
}

// Her bør også username i tabellen være UNIQUE.
$userId = mysql_query( "SELECT id FROM users WHERE username = '$cookieUserName' LIMIT 1;" );

// Sjekk om userId finnes ^.

// Bankbalanse bør være et nummer som gjør at du ikke trenger '' og de andre verdiene bør ha defaultverdi av 0. Måten jeg bruker $userId er sikkert ikke korrekt, jeg bruker et rammeverk som gjør alt dette for meg og jeg gidder ikke slå opp i manualen. I UPDATE queryet trengs ikke LIMIT 1 fordi primærnøkkelen er i kravene.
mysql_query( "INSERT INTO crews ( name, boss, bank ) VALUES ( '$crewName', $userId, 500000 );" );
mysql_query( "UPDATE users SET crew = " . mysql_insert_id() . " WHERE id = $userId;" );

// Sjekk om dette gikk bra ^
?>

 

Men nå har jeg enda et problem:

Jeg skal sette en maks sperre på å lage gjenger på 5 stk.

Hvordan kan jeg gjøre dette ?

 

"SELECT COUNT(*) FROM users WHERE crew = $crewId";
if ( ^ >= 5 ) {
echo 'NEIN';
} else {
echo 'Welcome to the family';
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...