Toon posts:

[php] probleempje met stuff toevoegen aan database

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo,

ik heb een scriptje gemaakt die stuff toevoegt aan de database van mijn forum maar er is een probleempje...hier volgt eerst de code:
PHP:
1
<?$tabel = "<table>hier staat een table waar men de gegevens invult</table>";include("bladibla.php"); //bestand waar de db connection instaatlogin();if($submit) { $sql = "SELECT * FROM forum_users WHERE username='" . $username . "'";$result = mysql_query($sql);$numrows = mysql_num_rows($result);                      if($numrows == "1"){ echo "helaas, jouw opgegeven username bestaat al!<BR><BR>$tabel"; exit(); }$user_regdate = time();$user_password = md5($paswoord);if ($avatar = "http://" || empty($avatar)) {$user_avatar_type = "0";}else {$user_avatar_type = "2";}if (empty($onderschrift)) {$gebruik_onderschrift = "0";}else {$gebruik_onderschrift = "1";}$insert = "INSERT INTO forum_users (stuff, stuff1, stuff2) VALUES ('$stuff','$stuff1','$stuff2')"; $query = mysql_query($insert)or die(mysql_error()); echo "<center>Je bent succesvol geregistreerd.<br>Klik <a href='index.php'>hier</a> om naar de homepage te gaan, waar je in kunt loggen!</center>"; } else { echo "$tabel"; } ?>

nou dat werkt heel erg aardig...maar je kunt maar een keer registeren...hij neemt dan als user_id (da's de primary key) '8388607' als je dan een keer erop registreert dan wil hij weer '8388607' pakken maar dan geeftie dus een error dat die al bestaat. Wat kan ik hieraan doen?

  • TweakBoy
  • Registratie: Augustus 2001
  • Laatst online: 06-09 17:45

TweakBoy

---

is je user_id veld wel auto_increment ??

doe dat anders wel..

---


  • Grum
  • Registratie: Juni 2001
  • Niet online
user_id komt nergens voor in de bovenstaande code

Verwijderd

Topicstarter
jah hij is auto_increment...maar telkens wanneer ik registreer paktie als user_id dat achterlijke lange getal en dan zegtie dat die user_id al bestaat... :?

Verwijderd

Topicstarter
Op zondag 12 mei 2002 17:45 schreef Grum het volgende:
user_id komt nergens voor in de bovenstaande code
duh...tuurlijk niet dat is de primary key

  • Grum
  • Registratie: Juni 2001
  • Niet online
Ah ok dus als iets een primary key is komt het nooit voor in de query :?

Verwijderd

Topicstarter
jah wil 'm wel in die query duwen, maar wat moet er dan ingedaan worden? kan natuurlijk moeilijk '1' laten inserten in 'user_id' dan lukt het dus ook maar één keer

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Dat 'achterlijk lange getal' is de maximum waarde voor een signed mediumint. Dus waarschijnlijk ligt het aan je veldtype. Doe ons eens een dumpje van je tabelstructuur...

On track


  • jvreuls
  • Registratie: Januari 2002
  • Laatst online: 31-07 13:13
Je hebt niet toevallig rare waardes voor user_id in die tabel staan zoals negatieve waardes ofzo?

Circuits Online


Verwijderd

Topicstarter
deze topic loopt op niets uit (ik dat niemand hier meer in zou posten) dus ik had een nieuwe geopend. Daarin ben ik al een stuk verder maar ik blijf gewoon hangen ik krijg steeds van die rare errors ensow (en ff voor de duidelijkheid: het is bedoeld om een nieuwe registratie-pagina voor phpbb.com te maken zodat deze registratiepagina in de website geïntegreerd kan worden)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 12 mei 2002 20:48 schreef MrBartje het volgende:
deze topic loopt op niets uit
Dat vind ik een heel rare conclusie.

Verwar niet jouw incompetentie om een probleem uit te leggen met het feit dat anderen je gewoon niet kunnen helpen.

Verwijderd

Topicstarter
Op zondag 12 mei 2002 20:53 schreef ACM het volgende:

[..]

Dat vind ik een heel rare conclusie.

Verwar niet jouw incompetentie om een probleem uit te leggen met het feit dat anderen je gewoon niet kunnen helpen.
ACM: twee topics van mij zijn al gesloten omdat ik maar "auto_increment" moet gebruiken. Maar auto_increment werkt niet! dank u

  • jvreuls
  • Registratie: Januari 2002
  • Laatst online: 31-07 13:13
Probeer gewoon eens die tabel opnieuw te maken.

Circuits Online


Verwijderd

Topicstarter
ik weet 100% zeker dat het niks met de tabel heeft te maken maar het is eigenlijk een mod op een al bestaand forum (http://www.phpbb.com) en hij geeft aan het id (user_id) steeds zo'n belachelijke waarde (iets van 94040404) en daarna kon je niet meer registreren omdattie weer diezelfde waarde wilde pakken. Anywayz ik heb nu dit:

$query1 = "SELECT * FROM forum_users";
$query_result_handle1 = mysql_query ($query1)
or die ('mysql_select_db');

$num_of_rows1 = mysql_num_rows ($query_result_handle1)
or die ("The query: '$query1' did not return any data");

en dat klopt gewoon als ik $num_of_rows1 print op het scherm dan zegtie hoeveel rows erin zitten. Het is dus de bedoeling dattie het aantal rows + 1 als id geeft voor de nieuwe user...maar hoe tel ik bij $num_of_rows1 1 op en kan dit als waarde gebruiken voor de user? dat lukt nl. niet...dáár zit het probleem

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

auto_increment werkt niet met de count() + 1 he?

Maar met de max() + 1.

Dat er al 2 topics gesloten zijn, verteld dat wat over jou/jouw probleem of over ons?

Magoed, hou het allemaal gewoon in 1 topic.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 12 mei 2002 21:13 schreef MrBartje het volgende:
maar hoe tel ik bij $num_of_rows1 1 op
Komop zeg!!!

Als je dat niet weet ga je direct terug naar de basisschool om het standaard teken voor optelling te leren!!
en kan dit als waarde gebruiken voor de user? dat lukt nl. niet...dáár zit het probleem
En dat is ook triviaal!

Als _dat_ je probleem is zou je je moeten schamen dat je dat hier vraagt.

Verwijderd

sjeeemz he... kun je nie naar die andere site gaan waar die figuren net zo weinig van weten? mijn scrippies doen prima...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

MrBartje >

't probleem is dat een auto_increment bij een nieuwe insert de hoogste waarde (MAX()) uit de tabel pakt, daar 1 bij optelt, om vervolgens te inserten met de nieuw verkregen waarde.

De oorzaak dat je dan zo'n foutmelding krijgt is dat je ID al bestaat. Waarom? Omdat MAX() van het Id-veld op dat moment overeenkomt met de maximumwaarde die het veld mag hebben (namelijk de maximum waarde van een unsigned medium-int = 224-1, 24 bits ;))

Dus:
• je moet (wanneer er idd 224-1 velden in gebruik zijn(!)) je veld in een BIGINT veranderen, maar dat geloof ik niet (dat je zoveel users hebt, nofi ;))
• of, en dat is denk ik de goede oplossing, een dump maken van de tabel, de tabel opnieuw aanmaken en de dump inserten zonder dat de waarden van de primary keys ook geinsert worden. Nadeel is dat je dan al je tabellen die ook relatie met de usertabel hebben moet legen, want de relaties kloppen natuurlijk niet meer :)

hth :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

INSERT INTO forum_users (uid, stuff, stuff1, stuff2) VALUES ('','$stuff','$stuff1','$stuff2')

auto_increment, primary key op uid..

zou moeten werken :?

Ik bespeur hier een zekere mate van onethische logica.


  • Grum
  • Registratie: Juni 2001
  • Niet online
Ik zou de table def van de topic starter welles willen zien (dus je create table line)
Pagina: 1