Avatar billede blackscorpion Nybegynder
18. oktober 2004 - 20:16 Der er 16 kommentarer og
1 løsning

Hjælp til kode.

Hej Eksperter.

Har lavet denne kode, og skal nu konvetere den til at den opdatere tingene i databasen.

er det bare at smide update ind istedet for inset into ??

Scriptet ser sådan her ud:

Det hele haster lidt, derfor det høje point tal.

<?php

// Vigtige infos for at det hele virker. :)

$email_field_names = array(1 => "Cpr Nr", "Fornavn", "Efternavn", "Adresse", "Postnr & By", "Telefon", "Mobil", "Email", "Kørekort", "Disp. Bil", "Ønsket Arbejdstid", "Job Situation", "Job Ønske", "Forventet Løn i Fast Job", "Forventet Løn i Vikariat", "Til Rådighed Fra", "Medlem af A-Kasse", "Hvis Ja, Hvilken", "Evt. Opsigelsesvarsel", "Ryger", "Ren Straffeattest", "Registreret I Andre Bureauer", "Hvis Ja, Hvilke", "Evt. Bemærkninger");
$mysql_field_names = array(1 => "cprnr", "fornavn", "efternavn", "adresse", "postnr_by", "telefon", "mobil", "email", "kørekort", "bil", "arbejdstid", "job_situation", "job_ønske", "løn_fast", "løn_vikariat", "rådighed", "akasse", "ja_akasse", "opsigelse", "ryger", "straffeattest", "bureauer", "ja_bureauer", "bemærkninger");
$required_fields =  array(1 => "cprnr", "fornavn", "efternavn", "adresse", "portnr_by", "telefon",'', "email",'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'');

$filename = $_SERVER['REMOTE_ADDR']."_".time();

// LAD VÆRE MED AT PILLE VED NOGET SOM HELST UNDER HER!!

function check_required_fields() {
global $mysql_field_names, $required_fields, $email_field_names;
$n = 1;
$field_name = "";

foreach($_REQUEST as $key=>$val) {
  $req_key = $required_fields[$n];
 
  if($req_key) {
  if(!$val) {
    $field_name .= "Feltet " . $email_field_names[$n] . " er ikke udfyldt.<br \>\n";
  }
  } 
  $n++;
}
return $field_name;
}

function email_msg() {
global $email_field_names;
$email_msg = "<!doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
$email_msg .= "<html>\n";
$email_msg .= "<head>\n";
$email_msg .= "<meta http-equiv=\"Content-Language\" content=\"da\">\n";
$email_msg .= "<title>Tilmeldning Til mitdomaine.dk</title>\n";
$email_msg .= "</head>\n";
$email_msg .= "<center><img src='http://www.mitdomaine.dk/gfx/email_logo.jpg' alt='' border='0'></center>";
$email_msg .= "<table cellpadding='0' cellspacing='0' width='600' align='center' bgcolor='#EAEEF0' style='border: 1px solid black'>\n";
$n = 1;
$field_bgcolor = "C7D1DB";
  foreach($_REQUEST as $key=>$val) {
 
  if($email_field_names[$n] == "Evt. Bemærkninger") {
    $val = ereg_replace("\n","<br>\n", $val);
  }
   
    $email_msg .= "<tr bgcolor='".$field_bgcolor."'><td valign='top'>&nbsp;".$email_field_names[$n] . ":</td><td width='380' valign='top'>".$val."</td></tr>\n";
    $n++;
   
    if($field_bgcolor == "C7D1DB") {
    $field_bgcolor = "";
    }
    else {
    $field_bgcolor = "C7D1DB";
    }
  }
  $email_msg .= "</table>\n</body>\n</html>";
  return $email_msg;
}

function file_msg() {
global $mysql_field_names;
$file_msg = "";
$n = 1;
  foreach($_REQUEST as $key=>$val) {
  $file_msg .= $val . ";";
  $n++;
  }
  $file_msg = substr_replace($file_msg, '', -1);
  $file_msg .= "\n";
 
  return $file_msg;
}

function mysql_sql() {
global $mysql_field_names;
$n = 1;
$mysql_db_table = "sv_users";

$sql = "insert into $mysql_db_table SET ";

foreach($_REQUEST as $key=>$val) {
   
  $sql .= "`$mysql_field_names[$n]` = '" . $val . "', ";
    $n++;
}

$sql .= "`created` = '" . time() . "'";
return $sql;
}

function save_and_mail($file_msg, $email_msg, $mysql_sql) {
global $filename;

$handle = fopen("tmp/".$filename.".txt", "w"); // Opretter tmp filen.
fwrite($handle, $file_msg); // Skriver til temp filen.
fclose($handle);

$mail_file_stuff = "tmp/".$filename.".txt"; 
$full_name = $_REQUEST['Fornavn'] . " " . $_REQUEST['Efternavn'];

require("class.phpmailer.php");

$mail = new phpmailer();

$mail->From    = "mailbot@mitdomain.dk";
$mail->FromName = "mitdomain MailBot";
$mail->Host    = "mitdomain.dk";
$mail->Mailer  = "smtp";
$mail->ContentType  = "text/html";
$mail->Subject = "Tilmelding til mitdomain.dk.";
$mail->Body    = $email_msg;

$modtager = "mail@mitdomain.dk";

for($i = 1; $i <= 2; $i++) {
 
if($modtager == "mail@mitdomain.dk")  {
  $mail->AddAddress("mail@mitdomain.dk", "Mig Selv (mail@mitdomain.dk)");
  $mail->AddAttachment($mail_file_stuff, "tilmeldning.txt", "base64", "application/octet-stream"); 
  $modtager = "1";
}
else {
  $mail->AddAddress($_REQUEST['E-mail'], "$full_name (".$_REQUEST['E-mail'].")");
}

  if(!$mail->Send())
    echo "There has been a mail error sending to " . $_REQUEST['E-mail'] . "<br>";
 
  // Clear all addresses and attachments for next loop
  $mail->ClearAddresses();
  $mail->ClearAttachments();
}

$mail->AddAddress($_REQUEST['email'], $full_name);
 
unlink("tmp/".$filename.".txt"); // Sletter temp filen.

$handle2 = fopen("admin/tmp_dl/brugere.txt", "a"); // Opretter tmp filen.
fwrite($handle2, $file_msg); // Skriver til temp filen.
fclose($handle2);

  if(!mysql_connect("host","user","pass")) {
  echo mysql_error();
  exit;
  }
 
  if(!mysql_select_db("userdb")) {
  echo mysql_error();
  exit;
}

if(!mysql_query($mysql_sql)) {
  echo mysql_error();
  exit;
}
else {
  $email = $_REQUEST['E-mail'];
  header("Location: completed.php?navn=$full_name&email=$email");
}
}

if(check_required_fields()) {
printf(check_required_fields());
exit;
}

printf(save_and_mail(file_msg(), email_msg(), mysql_sql()));

?>
Avatar billede hmortensen Nybegynder
18. oktober 2004 - 20:18 #1
For at opdatere:
UPDATE tabel SET felt1 = 'værdi1', felt2 = 'værdi2' WHERE id = 1
Avatar billede blackscorpion Nybegynder
18. oktober 2004 - 20:23 #2
function mysql_sql() {
global $mysql_field_names;
$n = 1;
$mysql_db_table = "sv_users";

$sql = "insert into $mysql_db_table SET ";

foreach($_REQUEST as $key=>$val) {
   
  $sql .= "`$mysql_field_names[$n]` = '" . $val . "', ";
    $n++;
}

$sql .= "`created` = '" . time() . "'";
return $sql;
}

skal altså bare laves om til

function mysql_sql() {
global $mysql_field_names;
$n = 1;
$mysql_db_table = "sv_users";

$sql = "update $mysql_db_table SET ";

foreach($_REQUEST as $key=>$val) {
   
  $sql .= "`$mysql_field_names[$n]` = '" . $val . "', ";
    $n++;
}

$sql .= "`created` = '" . time() . "'";
return $sql;
}

??
Avatar billede jakobdo Ekspert
18. oktober 2004 - 20:24 #3
Når du bruger UPDATE, skal du have et unikt id, som du så bruger når du opdatere den pågældende reække!

Du kan dog opdatere alle, men det er nok næppe din hensigt.
Avatar billede blackscorpion Nybegynder
18. oktober 2004 - 20:26 #4
har du ret i.. 2 sec.
Avatar billede blackscorpion Nybegynder
18. oktober 2004 - 20:28 #5
yeps det er også i orden, bruger cprnr i stedet for id. ;)

men er det, det eneste der skal ændres for at få den til at opdatere?

det er nemlig en kunde der pludselig vil have den til at fyre emails af.

så syntes det er nemmere at genbruge det script der opretter brugeren, hvor den også tyre emails af, og så få det til at opdatere i stedet. ;)
Avatar billede jakobdo Ekspert
18. oktober 2004 - 20:35 #6
Hvad er det helt præcist du ønsker indsæt i databasen?
Avatar billede jakobdo Ekspert
18. oktober 2004 - 20:35 #7
Eller opdateret?
Avatar billede blackscorpion Nybegynder
18. oktober 2004 - 20:40 #8
Det er bruger oplysninger.

det script jeg smed her, opretter den givende bruger.

Det er til et vikar firma, og på et tidspunkt skal brugeren jo kunne opdatere sine oplysninger, og det lavede jeg så.

og nu vil han have den til at sende en email afsted til brugeren, og til ham selv om at oplysningerne er opdateret.

og i den email til ham, skal så være en comma sepereret fil, til hans access database på hans pc.
Avatar billede blackscorpion Nybegynder
18. oktober 2004 - 20:41 #9
problemet er så nu, at jeg har mistet overblikket totalt, fordi at jeg er ret stresset og presset. :(
Avatar billede blackscorpion Nybegynder
18. oktober 2004 - 20:42 #10
faktisk præcist som scriptet her, bortset fra at den så skal opdatere brugerlysningerne. ;)
Avatar billede jakobdo Ekspert
19. oktober 2004 - 08:52 #11
Har brugeren en form som de kan ændre data'ene i?
For du bør jo lave en form for validering inden du updater?
Eller kan brugeren jo skrive ikke validt data og lign...
Avatar billede blackscorpion Nybegynder
19. oktober 2004 - 17:10 #12
brugeren har en form, og kan kun alle sine oplysninger pånær cprnr.

og kan ikke se en grund til at validere, da det ikke vil komme brugeren til gode på nogle måder.
Avatar billede jakobdo Ekspert
20. oktober 2004 - 08:28 #13
Validering er også en måde at sikre sig at der ikke kan lave sql-injections og lign.

Hvad med denne function:
function mysql_sql($id)
{
    global $mysql_field_names;
    $n = 1;
    $mysql_db_table = "sv_users";

    $sql = "update $mysql_db_table SET ";

    foreach($_REQUEST as $key=>$val)
    {
        $sql .= "`$mysql_field_names[$n]` = '" . $val . "', ";
    $n++;
    }

    $sql .= "`created` = '" . time() . "' WHERE brugerID = " . $id;
    return $sql;
}

Så kalder du funktionen:
mysql_sql_update($id) hvor $id er den række som skal updates.
Avatar billede blackscorpion Nybegynder
20. oktober 2004 - 15:23 #14
okey. men bruger cprnr istedet for id. ;)

men kigger lige på den senere. ;)
Avatar billede blackscorpion Nybegynder
01. november 2004 - 15:19 #15
smid lige et svar, så får du point.
Avatar billede jakobdo Ekspert
01. november 2004 - 15:21 #16
Svar...
Avatar billede blackscorpion Nybegynder
01. november 2004 - 20:43 #17
har fuldstændig mistet forbindelse til dette spørgsmål. *G* derfor jeg lukker det. ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester