Thomas. Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 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
Mats Danielsen Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 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. Lenke til kommentar
Thomas. Skrevet 29. mars 2008 Forfatter Del Skrevet 29. mars 2008 (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 29. mars 2008 av php_user Lenke til kommentar
Jonas Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 Det skal ikke være nødvendig med to unike nøkler i samme tabell. Du har garantert gjort en grov database-feil. Lenke til kommentar
Thomas. Skrevet 29. mars 2008 Forfatter Del Skrevet 29. mars 2008 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
Dryper Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 (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 29. mars 2008 av Dryper Lenke til kommentar
Thomas. Skrevet 29. mars 2008 Forfatter Del Skrevet 29. mars 2008 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
JohndoeMAKT Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 Jeg og lurer på hvilken funksjon den tilveldige ID-en har. Hva med å liste hvordan tabellene ser ut? SHOW CREATE TABLE users; SHOW CREATE TABLE crew; Lenke til kommentar
JohndoeMAKT Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 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
Thomas. Skrevet 29. mars 2008 Forfatter Del Skrevet 29. mars 2008 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
Dryper Skrevet 30. mars 2008 Del Skrevet 30. mars 2008 (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 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 Endret 30. mars 2008 av Dryper Lenke til kommentar
Thomas. Skrevet 30. mars 2008 Forfatter Del Skrevet 30. mars 2008 $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 ? Lenke til kommentar
Dryper Skrevet 30. mars 2008 Del Skrevet 30. mars 2008 $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
JohndoeMAKT Skrevet 30. mars 2008 Del Skrevet 30. mars 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå