Toon posts:

[PHP] auto-increment

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heb een probleempje met auto-increment. Heb een post systeem gemaakt waardoor je artikelen kan toevoegen in je db. En ik laat ze op headlines.php3 zien. Maar de ID van elk artikel blijft 0. Het moet steeds 1 hoger worden dan het hoogste cijfer dat er is. Dit is de script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
if ($send) {
$server = mysql_connect();
mysql_select_db("News", $server);

$Headline = addslashes($Headline);
$Poster = addslashes($Poster);
$Source = addslashes($Source);
$Url = addslashes($Url);
$Summary = addslashes($Summary);

$Date = date("Y-m-d H:i:s");

$sql = "INSERT INTO headlines (ID, Headline, Poster, Date, Source, Url, Summary) VALUES ('NULL', '$Headline', '$Poster', '$Date', '$Source', '$Url', '$Summary')";

mysql_query($sql) or die("Error...");
echo "Your article is added";
}
?>

Het HTML form zit hierbij ook ingevoegd maar die heb ik maar niet in deze topic gezet anders wordt het zo'n zooi.

Ik krijg dus op headlines.php3 steeds de ID van elk artikel te zien met de waarde 0.

Ik gebruik php3 dus misschien moet je een andere opdracht voor de auto-increment geven.

Wie kan me helpen??

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

- edit -
PHP:
1
2
3
<?
$sql = "INSERT INTO headlines (ID, Headline, Poster, Date, Source, Url, Summary) VALUES ('NULL', '$Headline', '$Poster', '$Date', '$Source', '$Url', '$Summary')";
?>

maak daar eens
PHP:
1
2
3
<?
$sql = "INSERT INTO headlines (Headline, Poster, Date, Source, Url, Summary) VALUES ('$Headline', '$Poster', '$Date', '$Source', '$Url', '$Summary')";
?>

van, werkt het?

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

[ot maar mischien interessant] wat ik altijd doe is het id de waarde van date ("U") geven, zo hoef ik niet een aparte datumveld aan te maken en heb toch altijd een unieke sleutel.

Daarna kan je verolgens met de date() functie vrij makkelijk er een output-string mee genereren.

Verwijderd

Topicstarter
Op zaterdag 29 september 2001 18:53 schreef stylee het volgende:
- edit -
PHP:
1
2
3
<?
$sql = "INSERT INTO headlines (ID, Headline, Poster, Date, Source, Url, Summary) VALUES ('NULL', '$Headline', '$Poster', '$Date', '$Source', '$Url', '$Summary')";
?>

maak daar eens
PHP:
1
2
3
<?
$sql = "INSERT INTO headlines (Headline, Poster, Date, Source, Url, Summary) VALUES ('$Headline', '$Poster', '$Date', '$Source', '$Url', '$Summary')";
?>

van, werkt het?
Werkt ook niet. Krijg nou helemaal niks te zien voor de ID.

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
en als je handmatig een nieuwe record toevoegd, werkt dat wel? Zo niet, dan zit het probleem in je SQL tabel .. wat Stylee zei moet in principe werken hoor...

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:20
Het kan wel, gewoon NULL _NIET_ tussen ' ' zetten

Verwijderd

Topicstarter
Op zaterdag 29 september 2001 18:57 schreef stylee het volgende:
[ot maar mischien interessant] wat ik altijd doe is het id de waarde van date ("U") geven, zo hoef ik niet een aparte datumveld aan te maken en heb toch altijd een unieke sleutel.

Daarna kan je verolgens met de date() functie vrij makkelijk er een output-string mee genereren.
Is ook wel handig ja...

Dan krijg je toch zoiets:
PHP:
1
2
3
4
<?
$date = date("Y-m-d H:i:s");
$sql = "INSERT INTO headlines (ID, Headline, Poster, Date, Source, Url, Summary) VALUES ('$date', '$Headline', '$Poster', '$date', '$Source', '$Url', '$Summary')";
?>

Verwijderd

Topicstarter
Op zaterdag 29 september 2001 19:04 schreef dennisdotcom het volgende:
Het kan wel, gewoon NULL _NIET_ tussen ' ' zetten
Krijg ik voor ID ook weer niks te zien

Verwijderd

Of die hele ID kolom weglaten (zowel links als rechts van VALUES)

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Xtermin8tor: Dan krijg je toch zoiets:..

Nope, die date ("U") functie geeft je het aantal seconden sinds de Epoch (1 Januarie 1970). Bijv de unix-tijd waarop ik dit post is: 1001783729.

Nu kan je hierop bewerkingen loslaten d.m.v de date functie bijv
PHP:
1
2
3
<?
$datum = date("Y-m-d H:i:s", $row[id]);
?>

die insert statement wordt trouwens:
PHP:
1
2
3
4
<?
$datum = date("U");
INSERT INTO blaat (id) VALUES ('$datum')
?>

hth

Verwijderd

Topicstarter
Op zaterdag 29 september 2001 19:02 schreef _Mo_ het volgende:
en als je handmatig een nieuwe record toevoegd, werkt dat wel? Zo niet, dan zit het probleem in je SQL tabel .. wat Stylee zei moet in principe werken hoor...
Ja ik heb het zo in mysql manager gedaan:
PHP:
1
2
3
<?
INSERT INTO headlines (ID, Headline, Poster, Date, Source, Url, Summary) VALUES ('1','a', 'b', 'c', 'd', 'e', 'f');
?>

En nu krijg ik wel ID 1 .

Verwijderd

Topicstarter
Op zaterdag 29 september 2001 19:09 schreef Zef het volgende:
Of die hele ID kolom weglaten (zowel links als rechts van VALUES)
Werkt ook niet. Krijg voor ID niks

Verwijderd

Topicstarter
Heeft iemand anders misschien nog een andere oplossing??

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

ik heb zo het gevoel dat je ID veld niet is ingesteld als autonummer :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13:51

Janoz

Moderator Devschuur®

!litemod

Op zaterdag 29 september 2001 18:57 schreef stylee het volgende:
[ot maar mischien interessant] wat ik altijd doe is het id de waarde van date ("U") geven, zo hoef ik niet een aparte datumveld aan te maken en heb toch altijd een unieke sleutel.

Daarna kan je verolgens met de date() functie vrij makkelijk er een output-string mee genereren.
En wat nu als er in een seconde 2 berichten geplaatst worden? Het id werk waarschijnlijk wel, maar het is niet schaalbaar. Neem een forum als dit. Ik weet zeker dat er meerdere keren op een dag meerdere berichten in 1 seconde gepost worden. IMHO kun je toch beter je autoincrement ID's werkend krijgen :)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

mja we hebben altijd nog microtime :)

Verwijderd

Topicstarter
Op zaterdag 29 september 2001 21:51 schreef stylee het volgende:
ik heb zo het gevoel dat je ID veld niet is ingesteld als autonummer :)
Ja het ID veld is int(11) of moet dat iets anders zijn :?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:20
Op zaterdag 29 september 2001 22:24 schreef Xtermin8tor het volgende:

[..]

Ja het ID veld is int(11) of moet dat iets anders zijn :?
Maak hem primary en auto_increment.

Verwijderd

Topicstarter
Op zaterdag 29 september 2001 22:26 schreef dennisdotcom het volgende:

[..]

Maak hem primary en auto_increment.
En hoe doe je dat. Ik ben pas net begonnen met php dus zou blij zijn als jullie me een beetje zouden kunnen helpen.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:20
Op zaterdag 29 september 2001 22:36 schreef Xtermin8tor het volgende:
En hoe doe je dat. Ik ben pas net begonnen met php dus zou blij zijn als jullie me een beetje zouden kunnen helpen.
Heb geen idee, doe het altijd met phpmyadmin :)

Verwijderd

CREATE TABLE blaat (
userid int(5) NOT NULL auto_increment,
PRIMARY KEY (userid)
)

of hoe je tabel er ook uitziet....

Verwijderd

Topicstarter
Bedankt allemaal!
Pagina: 1