Gå til innhold

[LØST] Trenger litt hjelp (mysql)


Anbefalte innlegg

Skrevet (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 av stelar7
Videoannonse
Annonse
Skrevet (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 av StudioARE
Skrevet

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 :)

Skrevet

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,

Skrevet (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 av stelar7
Skrevet (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 av StudioARE
Skrevet (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 av stelar7
Skrevet

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;

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...