Avatar billede shjorth Nybegynder
30. december 2007 - 20:28 Der er 20 kommentarer og
1 løsning

Kode virker ikke korrekt

Hejsa.

Nu er jeg ved at blive sindsyg. Hvad er der galt her?
Problemet er at scriptet ikke øger SID

    $a_check = mysql_query("SELECT * FROM kalender WHERE user = '".$login."' AND Start = '".$BookingStart."'")or die(mysql_error());

    if(!mysql_num_rows($a_check)) {
        $b_check = mysql_query("SELECT * FROM kalender WHERE user = '".$login."' ORDER BY sid DESC LIMIT 1")or die(mysql_error());
        $b_c = mysql_fetch_array($b_check);
        $new_sid = $b_c['sid']+1;
    }else{
        $a_c = mysql_fetch_array($a_check);
        $new_sid = $a_c['sid'];
    }
Avatar billede riversen Nybegynder
30. december 2007 - 20:40 #1
hvor øger den det ikke... i $new_sid variablen eller i databasen. I førstnævnte tilfælde tyder det vel på at else bliver udført. I sidstnævnte tilfælde øger du den ikke i databasen.
Avatar billede shjorth Nybegynder
30. december 2007 - 20:43 #2
Jo database insert er korrekt.. Men af en eller anden MEGET underlig grund så mener den hele tiden af der er noget i database i forvejen.. Det er der ikke.

Det må være den del der den er gal med, men jeg kan simpelthen ikke se fejlen :S
Avatar billede nielle Nybegynder
30. december 2007 - 20:45 #3
Sådan?

$a_check = mysql_query("SELECT * FROM kalender WHERE user = '$login' AND Start = '$BookingStart'") or die(mysql_error());

if (mysql_num_rows($a_check) == 0) {
    $b_check = mysql_query("SELECT * FROM kalender WHERE user = '$login' ORDER BY sid DESC LIMIT 1") or die(mysql_error());
    $b_c = mysql_fetch_assoc($b_check);
    $new_sid = $b_c['sid'] + 1;
} else {
    $a_c = mysql_fetch_array($a_check);
    $new_sid = $a_c['sid'];
}
Avatar billede riversen Nybegynder
30. december 2007 - 20:46 #4
er ikke med på hvad du svarer på der. Skal jeg forstå det som om at du faktisk vil øge værdien i databasen... i så fald har du i hvert fald ingen insert i ovenstående kode-eksempel.
Avatar billede shjorth Nybegynder
30. december 2007 - 20:48 #5
Den sætter SID til 10 konstant ligegyldig hvad. Her er insert delen:

mysql_query("INSERT INTO `workplace_kalender` (`user`,`Start`,`Slut`,`over`,`kom`,`imp`,`tid`,`sid`,`send`,`sendt`) VALUES('".$login."','".$BookingStart."','".$BookingStart."','".$over."','".$kom."','".$_POST['imp']."','".$time."','".$new_sid."','".$send_a."','".$sendt_a."')")or die(mysqL_error());
Avatar billede nielle Nybegynder
30. december 2007 - 20:50 #6
Hvorfor sætter du ikke bare sid til at være et auto_increment felt?
Avatar billede riversen Nybegynder
30. december 2007 - 20:50 #7
har du tjekket om ikke else delen bliver udført hver gang...

vil tro ligesom nielle at du skal have fjernet ! i din if sætning
Avatar billede shjorth Nybegynder
30. december 2007 - 20:51 #8
Er prøvet. Den sætter stadig sid til 10
Avatar billede shjorth Nybegynder
30. december 2007 - 20:56 #9
SID er sat som tinytext i databasen.. kan det være fejlen?
Avatar billede shjorth Nybegynder
30. december 2007 - 20:58 #10
Det var det..
Fuck, den var pres den her :S
Panikker lidt når lortet går amok lige pludselig..
Er der nogen der ved hvorfor "tinytext" ikke kan gå til mere end 10?
Nu har jeg sat den til int istedet, er det så korrekt?
Avatar billede nielle Nybegynder
30. december 2007 - 20:58 #11
Ikke umiddelbart.

Men hvorfor sætte den som et tekstfelt når den i virkeligheden er en integer?
Avatar billede shjorth Nybegynder
30. december 2007 - 21:00 #12
I bund og grund handler det om at jeg ikke aner hvad forskellen er på int-tinytext osv.
Så jeg har for vane bare at sætte det hele som tinytext ;)
Avatar billede nielle Nybegynder
30. december 2007 - 21:07 #13
tinytext burde kunne indeholde mere end "10".

Man børe vælge felttypen efter hvilken type data der skal i. Tal bør derfor ikke gemmes i tekst-felter, men derimod i int-typerne hvis det er heltal, eller i float eller double hvis det er et kommatal.

Hvis du vælger at benytte et int-felt, kan du sætte auto_increment på det, hvilket betyder at den selv automatisk tæller 1 op hver gang at man indsætter noget i feltet.
Avatar billede shjorth Nybegynder
30. december 2007 - 21:10 #14
Ja, den funktion kender jeg, bruger det på id.

Men i dette tilfælde skulle den ikke tælle 1 op HVER gang. Kun hvis det var en "ny" dato.. Hvis du forstår :)
Ihvertfald ser det ud til at virke.. Besynderligt nok ;)
Er der nogen der vil ligge et par svar :)?
Avatar billede nielle Nybegynder
30. december 2007 - 21:13 #15
Så'gerne :^)

PS: Funktioen mysql_num_rows() returnere et tal, og derfor bør man kode som om at det er et tal:

if (mysql_num_rows($a_check) == 0) {

- i stedet for denne notation, som er lige lovligt underforstået (efter min smag):

if (!mysql_num_rows($a_check)) {
Avatar billede nielle Nybegynder
30. december 2007 - 21:13 #16
... a'hem
Avatar billede shjorth Nybegynder
30. december 2007 - 21:33 #17
Merci
Avatar billede nielle Nybegynder
30. december 2007 - 21:36 #18
Skulle vi ikke vente på riversen?
Avatar billede shjorth Nybegynder
30. december 2007 - 21:37 #19
huh jo :S tænkte jeg jo ikke lige over...
Avatar billede nielle Nybegynder
30. december 2007 - 21:37 #20
Avatar billede riversen Nybegynder
31. december 2007 - 07:30 #21
nej tak...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester