12. januar 2003 - 09:18Der er
14 kommentarer og 1 løsning
Database opfører sig underligt
Jeg har lavet et PHP scipt med tilhørende My-SQL database, over mine videofilm. Men efter at have tilføjet over 100 film, virker det ikke nogle gange. Det virker periodisk! Hvis jeg sletter nogle film så der måske kun er 50, kører det fint nok!
Min SQL database ser således ud:
titel VARCHAR(100), org VARCHAR(100), genre VARCHAR(50), type VARCHAR(10), nr VARCHAR(20), link VARCHAR(100),
og ved 109 film fylder den 7,480 Bytes!
Det er sådan at når der er over 100 film, så nogle gange vil den ikke loade siden, enten sker der ikke noget (den bliver bare på den side man er på) eller også kommer den op med fejlen "Siden kan ikke vises", men som sagt hvis der ikke er så mange film er der ingen problemer!
Hvordan kan det være?? Man burde da kunne have lidt mere i en database??
Det skal lige siges at det hele kører på min egen maskine!
kan den loade noget hvis du opstiller nogle krav til resultatet.. Fx at nr skla være mellem 0 og 50 ?? og lige et lille spørgsmål mere.. Hvorfor har du ikke en id?? Altså en at indexsere på??
ja så virker det fint, den fejler kun hvis man vil se mange film på en gang listet. Scriptet er et jeg har fundet på nettet, så jeg ved ikke hvorfor der ikke er en id!
en fast regel i sql-databaser er at alle lagrede rækker SKAL være forskellige. Det er en af grundene til at man ofte sætter et id-felt ind der er autonummereret.
dit felt 'nr' ser ud som det skal indeholde en talværdi. så bør det have typen INT og ikke VARCHAR. (gælder det også for feltet 'type' ?)
hvis der ikke er endnu et felt efter feltet 'link' skal der heller ikke stå komma efter.
id int auto_increment primary key, titel VARCHAR(100), org VARCHAR(100), genre VARCHAR(50), type VARCHAR(10), nr INT, link VARCHAR(100)
Nu har jeg tilføjet en id med auto_increment og sat nr til INT, type skal være tekst. Men stadigvæk samme fejl. Kan det tænkes at det er PHP scriptet som ikke virker med mange film??
de ændringer vi har skubbet dig til at lave: tilføje id felt ændre felttypen til INT for feltet 'nr' vil jeg anbefale du laver tilbage igen. fordi scriptet er baseret på at alting er strings.
men det giver så også dig et problem når du bruger eller indsætter data i den database.
hvis du fx skal beregne hvilket nr der er størst kan du ikke sige if ( $data_1[4] > $data_2[4] ) { // strengen '1000' er mindre end strengen '2' // ('1' står før '2' i alfabetet) men bør istedet sige: if ( 1*$data_1[4] > 1*$data_2[4] ) { // '1*' tvinger $date_?[4] til at blive opfattet som talværdi // tallet 1000 er større end tallet 2
så jeg tror egentlig ikke det er set script du har hentet der er noget galt med, det er nok snarere den måde du angiver og bruger data fra scriptet den er gal med.
jeg er gået igang med at designe mit eget php script og det har ingen problemer med at hente alle film fra databasen! Men hvis du (jakoba) gider poste et svar, så kan du få nogle point som tak for hjælpen!
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.