kikkazz Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 PHP $q1 = sprintf("CREATE TABLE IF NOT EXISTS `%s` ( `%s` int(5) NOT NULL auto_increment, `%s` text NOT NULL, `%s` text NOT NULL, `%s` int(5) NOT NULL, `%s` int(5) NOT NULL, PRIMARY KEY (`%s`), ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000", TABLE_PAGE, FIELD_PAGE_ID, FIELD_PAGE_NAME, FIELD_PAGE_DESCRIPTION, FIELD_CAT_ID, FIELD_SUB_CAT_ID, FIELD_PAGE_ID) Hvorfor fungerer ikke dette? Feilmelding: Parse error: syntax error, unexpected '(', expecting ',' or ';' in table.php on line 1 Lenke til kommentar
Crowly Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 Klikk for å se/fjerne innholdet nedenfor PHP $q1 = sprintf("CREATE TABLE IF NOT EXISTS `%s` ( `%s` int(5) NOT NULL auto_increment, `%s` text NOT NULL, `%s` text NOT NULL, `%s` int(5) NOT NULL, `%s` int(5) NOT NULL, PRIMARY KEY (`%s`), ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000", TABLE_PAGE, FIELD_PAGE_ID, FIELD_PAGE_NAME, FIELD_PAGE_DESCRIPTION, FIELD_CAT_ID, FIELD_SUB_CAT_ID, FIELD_PAGE_ID) Hvorfor fungerer ikke dette? Feilmelding: Parse error: syntax error, unexpected '(', expecting ',' or ';' in table.php on line 1 9141714[/snapback] Tror du har missforstått hvordan sprintf fungerer, du skal sette inn variablene som skal ha verdien sin satt inn i %s. Sjekk sprintf() (w3schools) og sprintf() (php.net). eksempel skript PHP <?php$var1='hei' $var2='på' $var3='deg'; $tekst=sprintf("En liten test av sprintf.<br />%s %s %s.<br />Test slutt.", $var1,$var2,$var3); echo $tekst; ?> Skriver ut: En liten test av sprintf. Hei på deg. Test slutt. Tror jeg heller bare ville har brukt (tilpass til eget behov, bruker phpmyadmin til å lage tabeller) PHP <?php$q1 = "CREATE TABLE `test` ( `test1` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT , `test2` VARCHAR( 10 ) NOT NULL , `test3` VARCHAR( 10 ) NOT NULL , `test4` VARCHAR( 10 ) NOT NULL , `test5` VARCHAR( 10 ) NOT NULL , PRIMARY KEY ( `test1` ) )"; mysql_query($q1); ?> Lenke til kommentar
Crowly Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 (endret) Lager en ekstra post, fordi et er noe hærk å redigere en post med flere php felter Edit: Fjernet dårlig fremgangsmetode. Endret 26. juli 2007 av crowly Lenke til kommentar
kikkazz Skrevet 25. juli 2007 Forfatter Del Skrevet 25. juli 2007 (endret) Nei har ikke misforstått sprintf() <?php define("STRING_1", "Ola"); define("STRING_2", "og"); define("STRING_3", "Kari"); echo sprintf("hei %s %s %s", STRING_1, STRING_2, STRING_3); ?> Vil gi "Hei Ola og Kari" Poenget med konstantene var å ikke bruke tabell navn i selve koden. Men ha alt definert i en fil. Det gjør det mye enklere å endre navn på felt ved en senere anledning. Endret 25. juli 2007 av kikkazz Lenke til kommentar
Crowly Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 (endret) Det er alltid kjekt å legg inn litt debug funksjoner i koden når man jobber med den, for å sjekke at ting blir som forventet. Gjør f.eks slik PHP <?php$q1 = sprintf("CREATE TABLE IF NOT EXISTS `%s` ( `%s` int(5) NOT NULL auto_increment, `%s` text NOT NULL, `%s` text NOT NULL, `%s` int(5) NOT NULL, `%s` int(5) NOT NULL, PRIMARY KEY (`%s`), ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000", TABLE_PAGE, FIELD_PAGE_ID, FIELD_PAGE_NAME, FIELD_PAGE_DESCRIPTION, FIELD_CAT_ID, FIELD_SUB_CAT_ID, FIELD_PAGE_ID); echo "<div>".$q1."</div>"; ?> Da vil du se hva slags resultat sprintf lager, og det vil være enklere å debugge Mulig du må fjerne komma'et på primary key linja PRIMARY KEY (`%s`), -> PRIMARY KEY (`%s`) Endret 25. juli 2007 av crowly Lenke til kommentar
ZoRaC Skrevet 26. juli 2007 Del Skrevet 26. juli 2007 Har nok ikke noe med feilen å gjøre, men du prøver å opprette to felt av "FIELD_PAGE_ID"... Lenke til kommentar
Crowly Skrevet 26. juli 2007 Del Skrevet 26. juli 2007 (endret) Har nok ikke noe med feilen å gjøre, men du prøver å opprette to felt av "FIELD_PAGE_ID"... 9144911[/snapback] Nei, han gjør ikke det. Han oppretter FIELD_PAGE_ID en gang, og så definerer han det feltet som primary key. Men å legge inn en mysql_query($q1)||die('Create table feil: '.mysql_error()); kan også være nyttig, slik at man får se mysql feilmeldingen hvis noe går galt. Endret 26. juli 2007 av crowly Lenke til kommentar
ZoRaC Skrevet 26. juli 2007 Del Skrevet 26. juli 2007 Har nok ikke noe med feilen å gjøre, men du prøver å opprette to felt av "FIELD_PAGE_ID"... 9144911[/snapback] Nei, han gjør ikke det. Han oppretter FIELD_PAGE_ID en gang, og så definerer han det feltet som primary key. Du har rett Lenke til kommentar
kikkazz Skrevet 26. juli 2007 Forfatter Del Skrevet 26. juli 2007 Lager en ekstra post, fordi et er noe hærk å redigere en post med flere php felter Hvis du ønsker å sjekke om en tabell eksisterer, og opprette den hvis den ikke gjør det, så ville jeg ha gjordt noe slikt PHP <?phpif (!mysql_fetch_row(mysql_query("SELECT count(*) FROM test_tab"))) { $sql="CREATE TABLE ... "; mysql_query($sql)||die("Lag tabell ":$sql."<br />".mysql_error()); } ?> 9141946[/snapback] Hvorfor skulle du gjøre det på den måten? Da må du ha 2 db spørringer hvis dem må lages. Det kan da ikke være fornuftig? Det må jo sjekkes om den finnes uansett, så da kan det vell gå fint å kjøre det i en spørring? Lenke til kommentar
Crowly Skrevet 26. juli 2007 Del Skrevet 26. juli 2007 Hvis det er mulig å gjøre det i en spørring så er vel det den beste løsningen, men jeg er langt i fra utlært i mysql og de funksjonene/mulighetene som er der. Så det var den løsningen jeg kom frem til med mitt kunnskapsnivå. Lenke til kommentar
Peter Skrevet 26. juli 2007 Del Skrevet 26. juli 2007 IF NOT EXISTS er ikke en del av sql-standarden, men så lenge du vet du skal holde deg til en database som støtter kommandoen, ser jeg ikke hvorfor du ikke skal bruke den Lenke til kommentar
BigJackW Skrevet 28. juli 2007 Del Skrevet 28. juli 2007 I sprintf er '%s' tekst, og '%d' brukes på tall 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å