stelar7 Skrevet 28. april 2012 Del Skrevet 28. april 2012 (endret) prøver å lege noen variabler inn i en database via et php-script(kan sikkert optimaliseres), men det vill ikke fungere. vedlagt ligger hele scriptet. her er selve problemet: function addToDB() { if (isset($_GET['old'])) { if (isset($_GET['new'])) { $query = "INSERT INTO 'short'('old', 'new') VALUES ('".$_GET['old']."','".$_GET['new']."')"; mysql_query($query); } else { $query = "INSERT INTO 'short'('old', 'new') VALUES ('".$_GET['old']."','".str_rand()."')"; mysql_query($query); } mysql_close(); return; } } Hele scriptet: index.php Endret 2. mai 2012 av stelar7 Lenke til kommentar
StudioARE Skrevet 29. april 2012 Del Skrevet 29. april 2012 (endret) Vil først si at globale variabler burde sjekkes mot SQL injections og at det kanskje blir mer oversiktlig om du gjør noe slik fremfor get variablene midt inni funksjonen. Hva om du skriver noe slik for å sjekke om koden feiler på SQL, siden du ikke har oppgitt noen feilmeldinger. // Perform Query $result = mysql_query($query); // Check result // This shows the actual query sent to MySQL, and the error. Useful for debugging. if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $query; die($message); } (Kode rett fra php.net sin manual Edit: Søvnmangel får meg til å overse det aller viktigste. Du kan ikke kalle en PHP funksjon fra nettleseren. Det du heller må gjøre er å sjekke i PHP er om noe blir sendt til serveren din http://stackoverflow...answer-10116792 Du må dermed legge en if($_SERVER['REQUEST_METHOD'] == 'POST') { rundt koden du vil at skal kjøre når en bruker sender formet ditt og endre HTMLen til formet til å returnere til PHP skriptet som skal prossesere formet <form action="index.php" method="post"> Endret 29. april 2012 av StudioARE Lenke til kommentar
stelar7 Skrevet 29. april 2012 Forfatter Del Skrevet 29. april 2012 Ser enda ikke ut til å funke :/ Aner ikke hva som er galt. Lenke til kommentar
Nickless Skrevet 29. april 2012 Del Skrevet 29. april 2012 Selvmord å ikke debugge. Uten det aner du ikke hvor det eventuelt failer. Prøv med: mysql_query($query) or die(mysql_error()); Så skal du få opp hvor det går galt Lenke til kommentar
Crowly Skrevet 29. april 2012 Del Skrevet 29. april 2012 (endret) Husk å bruke riktig "fnutt" i mysql, det er forskjell på ' og `, så endre INSERT INTO 'short' til INSERT INTO `short` eller dropp `, er kun nødvendig rundt reserverte ord o.l. Det er viktig å validere input, se på mysql_real_escape_string(), filter_input() eller filter_var(). Endret 29. april 2012 av Crowly Lenke til kommentar
TobiasG Skrevet 29. april 2012 Del Skrevet 29. april 2012 Hei. Det som gjør at det feiler er denne delen. VALUES ('".$_GET['old']."','".$_GET['new']."')"; vil anbefale og sette $_Get['new'] og old i values før du tar det inn i query, Lenke til kommentar
stelar7 Skrevet 29. april 2012 Forfatter Del Skrevet 29. april 2012 (endret) hmm, vil enda ikke funke :/ får heller ingen feilmeldinger ved debug... legger ved filen i håp om at en av dere kan fikse den index.php Endret 29. april 2012 av stelar7 Lenke til kommentar
StudioARE Skrevet 29. april 2012 Del Skrevet 29. april 2012 (endret) Poenget var at du ikke kunne ha server-side funksjoner kjørt på en client siden. onsubmit vil ikke gjøre noe som helst. (og shorttag php er heller ikke å anbefale) <input type="submit" value="Submit" onsubmit=<?addToDB();?>/> Når det gjelder å faktisk kjøre koden så har du ikke satt funksjonen til å kjøre dersom du får en POST mot PHP skriptet ditt. Du har jo gjort det riktig med if (isset($_GET['x'])) { så hvorfor gjør du ikke det samme med request method? Du vet at funksjoner ikke kjører med mindre du kaller på dem... ikke sant? Har ikke lyst å gi deg en rettet kopi av skriptet da du burde ut i fra postene i tråden nå kunne se hva som er feil. Endret 29. april 2012 av StudioARE Lenke til kommentar
stelar7 Skrevet 29. april 2012 Forfatter Del Skrevet 29. april 2012 (endret) ah, fikk fikset det (glemte å calle addToDB) har nå et nytt problem else { $new = str_rand(); $query = "INSERT INTO short(old, new) VALUES ('$old','$new')"; mysql_query($query) or die(mysql_error()); } } function str_rand() { $seed = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,q,y,z,0,1,2,3,4,5,6,7,8,9'; $arrays = explode(',', $seed); $str = ''; for ($i = 0; $i&--#60;6; $i++) { $rnd = rand(0,35); $str .= $arrays[$rnd]; } $query = "SELECT * FROM short WHERE new = '$str';"; if ($result = mysql_query($query)) { if (mysql_num_rows($result) &--#62; 0) { return str_rand(); } return $str; } } der $new ikke får en verdi... har testet at str_rand() gir en verdi. Endret 29. april 2012 av stelar7 Lenke til kommentar
Howard_ Skrevet 30. april 2012 Del Skrevet 30. april 2012 Prøvde din str_rand() funksjon,men fikk den ikke til å virke. Prøv denne: function random_gen($length) { $random= ""; srand((double)microtime()*1000000); $char_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $char_list .= "abcdefghijklmnopqrstuvwxyz"; $char_list .= "1234567890"; for($i = 0; $i < $length; $i++) { $random .= substr($char_list,(rand()%(strlen($char_list))), 1); } return $random; } $random_string = random_gen(10); echo $random_string; Lenke til kommentar
stelar7 Skrevet 30. april 2012 Forfatter Del Skrevet 30. april 2012 Takker for all hjelp, fikk det til å fungere nå! 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å