Gå til innhold

[LØST] Trenger litt hjelp (mysql)


Anbefalte innlegg

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 av stelar7
Lenke til kommentar
Videoannonse
Annonse

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 av StudioARE
Lenke til kommentar

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 av StudioARE
Lenke til kommentar

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 av stelar7
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...