Avatar billede jonasjersborg Nybegynder
06. september 2006 - 20:31 Der er 17 kommentarer og
1 løsning

Indsæt via http kald

Hvordan indsætter jeg data i min MySQL database via et http kald?

Min udbyder af SMS service sender dette kald hver gang der modtages en sms og det skal så indsættes i mysql databasen.

Databasen køre følgende link:
"http://mcdsolrod.dk/rmgsms.php?requesttype=keyword&sender=45abcdef&operator=abcd&message=BESKED&daterecieved=TEKSTFELT&recievedtime=TEKSTFELT" jeg skal selv kunne tilføje kommende felter som deres server skriver senere.

Jeg har oprettet en database i min MySQL med de samme feltnavne som deres server sender. De skal bare indsættes i en ny linie.

Håber virkelig at i kan hjælpe mig :)

Jonas Jersborg
Avatar billede fsconsult.dk Nybegynder
06. september 2006 - 20:33 #1
du kan ikke sætte dem direkte ind i MySQL ... du skal lade HTTP kaldet gå til en PHP, ASP eller JSP side (f.eks.), som så indsætter dem i din database
Avatar billede jonasjersborg Nybegynder
06. september 2006 - 20:43 #2
okay. men deres server skriver sender kun oplysningerne efter /rmgsms.php?
og så skal serveren svare OK i ren tekst.
Avatar billede jonasjersborg Nybegynder
06. september 2006 - 20:46 #3
kan man ikke lave en ONLOAD
get ?
insert into RMG values ($requesttype, $sender, $operator, $message, $blabla, $blabla)
echo = 'OK'
Avatar billede jonasjersborg Nybegynder
06. september 2006 - 20:49 #4
for at gøre det besværligt ser min nuværende PHP kode sådan ud (og den virker ikke):

--
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_sms = "mydb2.surf-town.net";
$database_sms = "Jersbor_mymcd";
$username_sms = "Jersbor_phones";
$password_sms = "**********";
$sms = mysql_pconnect($hostname_sms, $username_sms, $password_sms) or trigger_error(mysql_error(),E_USER_ERROR);
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO sms (msgid, id, requesttype, sender, senderalpha, target, mcc, message, pricegroup, statuscode, statusdescription, datesent) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                      GetSQLValueString($_POST['msgid'], "text"),
                      GetSQLValueString($_POST['id'], "text"),
                      GetSQLValueString($_POST['requesttype'], "text"),
                      GetSQLValueString($_POST['sender'], "text"),
                      GetSQLValueString($_POST['senderalpha'], "text"),
                      GetSQLValueString($_POST['target'], "text"),
                      GetSQLValueString($_POST['mcc'], "text"),
                      GetSQLValueString($_POST['message'], "text"),
                      GetSQLValueString($_POST['pricegroup'], "text"),
                      GetSQLValueString($_POST['statuscode'], "text"),
                      GetSQLValueString($_POST['statusdescription'], "text"),
                      GetSQLValueString($_POST['datesent'], "text"));

  mysql_select_db($database_sms, $sms);
  $Result1 = mysql_query($insertSQL, $sms) or die(mysql_error());

  $insertGoTo = "smsok.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>
--
Avatar billede leif Seniormester
06. september 2006 - 22:09 #5
Hvad dataene står i Adresselinien skal alle $_POST ændres til $_GET
Avatar billede jonasjersborg Nybegynder
06. september 2006 - 22:15 #6
så hvis jeg ændre til GET virker det?
Avatar billede leif Seniormester
06. september 2006 - 22:15 #7
Prøv, det er i $_GET er når man henter data fra adresselinien og $_POST er hvis du har en form med method POST
Avatar billede jonasjersborg Nybegynder
06. september 2006 - 22:19 #8
der sker intet. får en blank side frem når jeg kalder rmgsms.php?id=1&msgid=2
Avatar billede leif Seniormester
06. september 2006 - 23:06 #9
1. Du vil altid få en blank side da du ikke udskriver noget
2. Du tjecker om MM_insert og om MM_insert er lig form1, det er den jo ikke når du har 2 variabler (id og msgid)
Avatar billede jonasjersborg Nybegynder
07. september 2006 - 08:37 #10
så jeg skal kun benytte mig af
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_sms = "mydb2.surf-town.net";
$database_sms = "Jersbor_mymcd";
$username_sms = "Jersbor_phones";
$password_sms = "**********";
$sms = mysql_pconnect($hostname_sms, $username_sms, $password_sms) or trigger_error(mysql_error(),E_USER_ERROR);
?>
<?php
$insertSQL = sprintf("INSERT INTO sms (msgid, id, requesttype, sender, senderalpha, target, mcc, message, pricegroup, statuscode, statusdescription, datesent) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                      GetSQLValueString($_POST['msgid'], "text"),
                      GetSQLValueString($_POST['id'], "text"),
                      GetSQLValueString($_POST['requesttype'], "text"),
                      GetSQLValueString($_POST['sender'], "text"),
                      GetSQLValueString($_POST['senderalpha'], "text"),
                      GetSQLValueString($_POST['target'], "text"),
                      GetSQLValueString($_POST['mcc'], "text"),
                      GetSQLValueString($_POST['message'], "text"),
                      GetSQLValueString($_POST['pricegroup'], "text"),
                      GetSQLValueString($_POST['statuscode'], "text"),
                      GetSQLValueString($_POST['statusdescription'], "text"),
                      GetSQLValueString($_POST['datesent'], "text"));

  mysql_select_db($database_sms, $sms);
  $Result1 = mysql_query($insertSQL, $sms) or die(mysql_error());

  $insertGoTo = "smsok.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>

jeg er helt dum til php..
Avatar billede jonasjersborg Nybegynder
07. september 2006 - 08:51 #11
Nu har jeg skrevet:
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_sms = "mydb2.surf-town.net";
$database_sms = "Jersbor_mymcd";
$username_sms = "Jersbor_phones";
$password_sms = "19z22n5484";
$sms = mysql_pconnect($hostname_sms, $username_sms, $password_sms) or trigger_error(mysql_error(),E_USER_ERROR);
?>
<?php
$insertSQL = sprintf("INSERT INTO sms (msgid, id, requesttype, sender, senderalpha, target, mcc, message, pricegroup, statuscode, statusdescription, datesent) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                      $_GET['msgid'], "text",
                      $_GET['id'], "text",
                      $_GET['requesttype'], "text",
                      $_GET['sender'], "text",
                      $_GET['senderalpha'], "text",
                      $_GET['target'], "text",
                      $_GET['mcc'], "text",
                      $_GET['message'],
                      $_GET['pricegroup'],
                      $_GET['statuscode'],
                      $_GET['statusdescription'],
                      $_GET['datesent'],
?>
men får følgende fejl:
--
Parse error: syntax error, unexpected ';' in /hsphere/local/home/jersborg/mcdsolrod.dk/user/rmgsms.php on line 25
--
Avatar billede leif Seniormester
07. september 2006 - 10:30 #12
? Der er jo klart du afslutter sprintf("
Avatar billede leif Seniormester
07. september 2006 - 10:32 #13
Prøv med <?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_sms = "mydb2.surf-town.net";
$database_sms = "Jersbor_mymcd";
$username_sms = "Jersbor_phones";
$password_sms = "xxxxxxxxxxxxxxxxxxxxxxx";
$sms = mysql_pconnect($hostname_sms, $username_sms, $password_sms) or trigger_error(mysql_error(),E_USER_ERROR);

$insertSQL = sprintf("INSERT INTO sms (msgid, id, requesttype, sender, senderalpha, target, mcc, message, pricegroup, statuscode, statusdescription, datesent)
        VALUES ($_GET['msgid'], $_GET['id'], $_GET['requesttype'], $_GET['sender'], $_GET['senderalpha'], $_GET['target'], $_GET['mcc'], $_GET['message'], $_GET['pricegroup'], $_GET['statuscode'], $_GET['statusdescription'], $_GET['datesent']);
?>
Avatar billede leif Seniormester
07. september 2006 - 10:34 #14
Men tilpas selv til de felter som SMS gatewayen sender til dig
Avatar billede jonasjersborg Nybegynder
07. september 2006 - 14:47 #15
hej. det virker ikke. den melder fejl:


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/jersborg/mcdsolrod.dk/rmgsms.php on line 12
Avatar billede leif Seniormester
07. september 2006 - 15:05 #16
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_sms = "mydb2.surf-town.net";
$database_sms = "Jersbor_mymcd";
$username_sms = "Jersbor_phones";
$password_sms = "xxxxxxxxxxxxxxxxxxxxxxx";
$sms = mysql_pconnect($hostname_sms, $username_sms, $password_sms) or trigger_error(mysql_error(),E_USER_ERROR);

$insertSQL = sprintf("INSERT INTO sms (msgid, id, requesttype, sender, senderalpha, target, mcc, message, pricegroup, statuscode, statusdescription, datesent)
        VALUES ($_GET['msgid'],
            $_GET['id'],
            $_GET['requesttype'],
            $_GET['sender'],
            $_GET['senderalpha'],
            $_GET['target'],
            $_GET['mcc'],
            $_GET['message'],
            $_GET['pricegroup'],
            $_GET['statuscode'],
            $_GET['statusdescription'],
            $_GET['datesent'])");
?>

Prøv med den
Avatar billede jonasjersborg Nybegynder
07. september 2006 - 18:09 #17
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/jersborg/mcdsolrod.dk/rmgsms.php on line 12

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_sms = "mydb2.surf-town.net";
$database_sms = "Jersbor_mymcd";
$username_sms = "Jersbor_phones";
$password_sms = "xxxxxxxxxxxxxxxxxxxxxxx";
$sms = mysql_pconnect($hostname_sms, $username_sms, $password_sms) or trigger_error(mysql_error(),E_USER_ERROR);

// LINE 12 //: $insertSQL = sprintf("INSERT INTO sms (msgid, id, requesttype, sender, senderalpha, target, mcc, message, pricegroup, statuscode, statusdescription, datesent)
        VALUES ($_GET['msgid'],
            $_GET['id'],
            $_GET['requesttype'],
            $_GET['sender'],
            $_GET['senderalpha'],
            $_GET['target'],
            $_GET['mcc'],
            $_GET['message'],
            $_GET['pricegroup'],
            $_GET['statuscode'],
            $_GET['statusdescription'],
            $_GET['datesent'])");
?>
Avatar billede jonasjersborg Nybegynder
01. oktober 2006 - 15:24 #18
lukker.
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
Computerworld tilbyder specialiserede kurser i database-management

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