Gå til innhold

Sette inn "rand" inni databasen ?


Anbefalte innlegg

Skrevet

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å ?

Videoannonse
Annonse
Skrevet

Altså, du vil ikke få en unik ID med dette. Det er VELDIG stor sansynelighet at noen vil få samme ID nummer. Jeg foreslår du lærer litt mer PHP før du forsøker deg på et mafia spill som er VELDIG krevende arbeid.

Skrevet (endret)

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
Skrevet
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..

Skrevet (endret)
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
Skrevet
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!

Skrevet
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.

Skrevet

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 ?

Skrevet (endret)
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
Skrevet

$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 ?

Skrevet
$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 ..

Skrevet
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';
}

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...