Avatar billede 4t Nybegynder
17. juli 2005 - 18:58 Der er 38 kommentarer og
1 løsning

PHP samarbejde med database!

Hej Eksperter!

Jeg har fundet noget PHP på nettet. Så jeg kan (skulle kunne) sende MMS direkte til en weblog!

Oppe i starten af PHP schriptet står der dette:

// config!
$pop3_address = "mms@xxx.com";
$pop3_server = "mail.xxx.com";
$password = "xxx";
$images_dir = "./images/";
$date_format = "d-m-Y";
$db_host = "xxx.com";
$db_user = "xxx_com_db";
$db_password = "xxx";
$db_name = "xxxxx_com_db";
$db_table = "xxx";

Jeg har denne host: https://www.unoeuro.com
Og de har database til mit bronze abb.

Hvordan indstiller jeg det så databasen virker hos dem?
Hvad skal ”puttes ind hvor”? (Det er især §db_xxxx der virker lidt øhe!)

Altså hvordan skaber jeg kommunikation mellem php schriptet og databasen.

Ønsker du at se mere af schriptet, er du velkommen. Skriv en mail og jeg kan sende det.
Avatar billede Slettet bruger
17. juli 2005 - 19:51 #1
$db_host = "xxx.com";
Oftest skal denne sættes til 'localhost' - men nogle webhoteller bruger eksterne databaser. Det må utvivlsomt stå i den mail du har modtaget.

$db_user = "xxx_com_db";
Dit brugernavn til databasen, hvilket nok svarer til dit brugernavn på webhotellet

$db_password = "xxx";
Kodeordet til databasen, som også oftest er kodeordet til dit webhotel

$db_name = "xxxxx_com_db";
Navnet på databasen der er tildelt dit webhotel

$db_table = "xxx";
Den tabel du henter dataen fra.

Giver det mening? :)

mvh
Pacroon
Avatar billede 4t Nybegynder
17. juli 2005 - 19:58 #2
Hej Pacroon!

Har syslet med de der ting der skal ind. (Så kommer denne fejlmelding... xx er erstattet med xx)..

__________________________________________

Warning: Cannot modify header information - headers already sent by (output started at /var/www/xx.com/public_html/blog/example.php:7) in /var/www/xx.com/public_html/blog/mms.class.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/xx.com/public_html/blog/example.php:7) in /var/www/xx.com/public_html/blog/mms.class.php on line 38

Warning: mysql_query(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /var/www/xx.com/public_html/blog/mms.class.php on line 41

Warning: mysql_query(): A link to the server could not be established in /var/www/xx.com/public_html/blog/mms.class.php on line 41

Warning: mysql_query(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /var/www/xx.com/public_html/blog/mms.class.php on line 45

Warning: mysql_query(): A link to the server could not be established in /var/www/xx.com/public_html/blog/mms.class.php on line 45

Warning: Cannot modify header information - headers already sent by (output started at /var/www/xx.com/public_html/blog/example.php:7) in /var/www/xx.com/public_html/blog/mms.class.php on line 45

Warning: Cannot modify header information - headers already sent by (output started at /var/www/xx.com/public_html/blog/example.php:7) in /var/www/xx.com/public_html/blog/mms.class.php on line 61

Warning: imap_headers(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 63

Warning: imap_delete(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 105

Warning: imap_expunge(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 106

Warning: imap_close(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 107
no photos yet.


__________________________________________

Har forsøgt at opsætte en form for tabel i databasen, men det kender jeg ikke meget til. Strander sørme lidt.

"help help" * Smiler *
Avatar billede 4t Nybegynder
17. juli 2005 - 19:59 #3
QXL databasen har jeg forsøgt at sætte sådan op..

SQL-forespørgsel:

CREATE TABLE `mms` (

`10` TEXT NOT NULL AUTO_INCREMENT ,
`11` TEXT NOT NULL AUTO_INCREMENT ,
`12` TEXT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `10` )
) TYPE = MYISAM COMMENT = 'mms'

Vil du have hele koden i en mail? Hjælper det?
Avatar billede 4t Nybegynder
17. juli 2005 - 20:01 #4
Kan også ligge koden her, hvis?
Avatar billede Slettet bruger
17. juli 2005 - 20:04 #5
Der var ellers en del fejlbeskeder.

Dem der handler om headere, betyder at du forsøger at sende headerinformation efter du er begyndt på html kode.

Du kunne prøve at rykke alt dit html ned under din PHP kode.
Men det virker underligt at det skulle fejle når det er et PHP script du har hentet på nettet.

Har du fundet dine informationer om din database fra unoeuro? :)
Avatar billede 4t Nybegynder
17. juli 2005 - 20:13 #6
”Systemet er lavet” med to php sider, bedst er nok at kigge der hvor jeg har
Fundet koden. Koden er ikke anmærket med ”copyright” og det antydes flere steder på hans side, at man blot kan bruge den. "Så det e rjo venligt nok!"

Det er de sidedr jeg har og jeg tror at problemet er; at det ikke samarbejder med databasen hos Unoeuro (fedt sted ellers). Og så at jeg ikke får det oprettet rigtigt i databasen samt at jeg nok ikke får skrevet det rigtige deri!

Informationerne har jeg sjusset mig til via schriptet (er ikke super koder) og så tastet det ind i unoeuro database delen... Men hm...

PHP dokumenterne er ikke rettet. De kan findes på denne site, i original'os: http://bolink.org/projects/mms/
(Og der virker det Top-Nice!)
Avatar billede Slettet bruger
17. juli 2005 - 20:22 #7
Har du indsat noget HTML i dokumenterne FØR php koden?
Avatar billede Slettet bruger
17. juli 2005 - 20:23 #8
Forstår ikke hvordan du sjusser dig til database informationer fra scriptet - den vej fra kan du vel ikke få kodeordet til din database, fx ;)
Avatar billede 4t Nybegynder
17. juli 2005 - 20:29 #9
Har du indsat noget HTML i dokumenterne FØR php koden?

Svar: Nej - har brugt hans koder "rå"!

__________________________

Forstår ikke hvordan du sjusser dig til database informationer fra scriptet - den vej fra kan du vel ikke få kodeordet til din database, fx ;)

Svar: Ved godt man ikke kan sjusse, men prøver mig frem. ved godt man skal have det helt rigtige. Har fundet ud af disse koder nu, vil jeg mene, nu er det vel "blot" at opsætte den database eller?

(Det er suer du vil hjælpe, tak for det!)
__________________________

Nu er vi/jeg nede på disse fejllinier:


Warning: Cannot modify header information - headers already sent by (output started at /var/www/xx.com/public_html/blog/example.php:7) in /var/www/xx.com/public_html/blog/mms.class.php on line 61

Warning: imap_headers(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 63

Warning: imap_delete(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 105

Warning: imap_expunge(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 106

Warning: imap_close(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 107
no photos yet.
Avatar billede Slettet bruger
17. juli 2005 - 20:47 #10
Includer du den 'rå' kode i et andet dokument?

Fejlen er nemlig at du ændrer header-information efter der er udskrevet noget html:

@mysql_connect($db_host, $db_user, $db_password) or header("location: $url?error=1");
@mysql_select_db($db_name) or header("location: $url?error=1");

Den skifter headeren fordi der er fejl i mySQL kaldet - så der må altså komme noget HTML ud før den kode dér.

Er du med på hvad jeg mener?
Avatar billede 4t Nybegynder
17. juli 2005 - 20:52 #11
Den side der skal trække det andet ind har dette indhold:

_____________________________

Ønsker du jeg flytter det første html og starter hermed?

_____________________________

<?
include("mms.class.php");

$query = "SELECT * FROM `$db_table`";
$result = @mysql_query($query);
$num_rows = @mysql_num_rows($result);

if ($num_rows >= 1) {
  while ($mms = mysql_fetch_array($result, MYSQL_ASSOC)) {
  echo "<img src=\"$images_dir$mms[id].jpg\" alt=\"$mms[id]\"><br />text : $mms[subject] <br />date: $mms[date]<br /><br />";
  }
} else {
  echo "no photos yet.";
}
?>
</body>
</html>

_____________________________

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MMS to webite</title>
</head>
<body>
<?
include("mms.class.php");

$query = "SELECT * FROM `$db_table`";
$result = @mysql_query($query);
$num_rows = @mysql_num_rows($result);

if ($num_rows >= 1) {
  while ($mms = mysql_fetch_array($result, MYSQL_ASSOC)) {
  echo "<img src=\"$images_dir$mms[id].jpg\" alt=\"$mms[id]\"><br />text : $mms[subject] <br />date: $mms[date]<br /><br />";
  }
} else {
  echo "no photos yet.";
}
?>
</body>
</html>
_____________________________
Avatar billede Slettet bruger
17. juli 2005 - 20:52 #12
Prøv at flytte
$url = "http://bolink.org/projects/mms/error.php"; // don't change this, its error handling

.. op oven over if-sætningen. Han har lavet noget meget smart fejl-hjælp på hans website.
Avatar billede 4t Nybegynder
17. juli 2005 - 20:53 #13
Ups den nederste kode er den der bruges nu og den for oven er forslaget!
Avatar billede Slettet bruger
17. juli 2005 - 20:53 #14
include("mms.class.php"); <- Den skal stå før det første <html>
Avatar billede Slettet bruger
17. juli 2005 - 20:53 #15
Før <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - faktisk :)
Avatar billede Slettet bruger
17. juli 2005 - 20:56 #16
Sagen er den, at mms.class.php indeholder PHP der ændrer din header, som vist her:

@mysql_connect($db_host, $db_user, $db_password) or header("location: $url?error=1");

"Hvis mysql_connect fejler, så gå til header()" - som sender dig til en side hos ham, der fortæller lidt om fejlen.

Den kan ikke ændre headeren, hvis der er blevet sendt html ud først, som der er her:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MMS to webite</title>
</head>
<body>
<?
include("mms.class.php");
(..)

Kan du se det?
Avatar billede 4t Nybegynder
17. juli 2005 - 21:02 #17
Den ene er nu sat til:

___________________________________

<?
include("mms.class.php");

$query = "SELECT * FROM `$db_table`";
$result = @mysql_query($query);
$num_rows = @mysql_num_rows($result);

if ($num_rows >= 1) {
  while ($mms = mysql_fetch_array($result, MYSQL_ASSOC)) {
  echo "<img src=\"$images_dir$mms[id].jpg\" alt=\"$mms[id]\"><br />text : $mms[subject] <br />date: $mms[date]<br /><br

/>";
  }
} else {
  echo "no photos yet.";
}
?>

___________________________________

Når jeg indsætter den, så kommer der ikke fejlmeldinger, på den anden side henter den ikke det foto jeg har sendt der ligger i mailboksen, den skal hente ned.

Har ikke endnu rørt ved den anden fil...

Den anden fil "siger nu":

____________________________________

<?php
/**************************************************************
MMS/PHOTOBLOG

**************************************************************/
// config!
$pop3_address = "mms@xx.com";
$pop3_server = "mail.xx.com";
$password = "xx";
$images_dir = "./images/";
$date_format = "d-m-Y";
$db_host = "mysql1.unoeuro.com";
$db_user = "xx_com";
$db_password = "xx";
$db_name = "xx_com_db";
$db_table = "mms";
/***************************************************************

Log

- added imap support check
- fixed example script
- added pop3_server
- cleaned up some code

- added autocreate directory
- added autocreate sql table
- added changelog (w00t)
- changed error handling
- has permission checks now
- added example file


***************************************************************/

// connecting to db
@mysql_connect($db_host, $db_user, $db_password) or header("location: $url?error=1");
@mysql_select_db($db_name) or header("location: $url?error=1");

// check if table exist
$check = mysql_query("SELECT * FROM `$db_table` LIMIT 0,1");
if (!$check) {
    $query = "CREATE TABLE `$db_table` (id int(11) NOT NULL auto_increment,type text NOT NULL,subject text NOT NULL,date text

NOT NULL,UNIQUE KEY id (id)) TYPE=MyISAM; ";
    $url = "http://bolink.org/projects/mms/error.php"; // don't change this, its error handling
    $result = mysql_query($query) or header("location: $url?error=1");
}

// check if directory is writable
if (!is_writable($images_dir)) {
    @mkdir("$images_dir") or header("location: $url?error=2");
    @chmod($images_dir, 0777) or header("location: $url?error=3");
}

// check if imap works
if (!function_exists('imap_open')) {
    header("location: $url?error=7");
}

// open mailbox and get all emails from server
if (! $mail = @imap_open("{".$pop3_server.":143}INBOX", "$pop3_address", "$password")) {
    header("location: $url?error=4");
}
$headerstrings = imap_headers($mail);
foreach($headerstrings as $headerstring) {
    preg_match("/[0-9]/", $headerstring, $number);
    // parse message
    $header = imap_fetchheader($mail, $number[0]);
    preg_match("/Date: (.*)?[\+|-]/", $header, $date);
    $date = htmlentities($date[1]);
    $imap = imap_fetchstructure($mail, $number[0]);
   
    if (! empty($imap->parts)) {
        for ($i = 1, $j = count($imap->parts); $i < $j; $i++) {
            $msg = imap_fetchbody($mail, $number[0], $i + 1);
            $part = $imap->parts[$i];
           
           
            $headers = imap_header($mail, $number[0]);
            $email = htmlspecialchars($headers->fromaddress);
            $subj = $headers->Subject;
            $date = date($date_format, strtotime(substr($headers->Date, 0, 22)));
            $subj = preg_replace('/^.*Q\?(.*?)\?=$/', '\\1', $subj);
            $subj = str_replace("_", " ", $subj);
            $subj = str_replace("=2E", ".", $subj);
            $subj = addslashes($subj);
           
            if ($part->type == "3") {
                $ext = "3gp";
            } else if ($part->type == "5") {
                $ext = "jpg";
            }
           
            $query = "INSERT INTO `$db_table` VALUES ('NULL','$ext','$subj','$date')";
            $result = mysql_query($query) or header("location $url?error=5");
            $count = mysql_insert_id();
           
            if (! $handle = fopen("$images_dir/".$count.".$ext", "w")) {
                header("location: $url?error=6");
            }
            fwrite($handle, imap_base64($msg));
            fclose($handle);
        }
    }
}
imap_delete($mail, $number[0]);
imap_expunge($mail);
imap_close($mail);

?>
Avatar billede 4t Nybegynder
17. juli 2005 - 21:03 #18
Undskyld jeg er "en lidt tung patient" - Super med din hjælp.
Avatar billede 4t Nybegynder
17. juli 2005 - 21:05 #19
Inde i database, skal jeg give svar på disse værdier:
Feltnavn
Datatype
Længde/Værdi
Attributter
Nulværdi
Standardværdi
Ekstra

Har du en ide om hvilke værdier der skal ind der?
Avatar billede Slettet bruger
17. juli 2005 - 21:11 #20
Det er i orden :)

Bliver du ikke sendt videre til en fejl-side? Det burde du ellers. Hm.
Der kommer nogle mySQL fejl nemlig, det er nok derfor den ikke indsætter noget i databasen.

Koden undertrykker også en del fejlmeddelelser for at sende dig til hans fejl-sider i stedet.

Jeg prøver lige at rette scriptet så vi selv får de rigtige fejlbeskeder.

http://pacroon.dk/projects/mmsblog/mms.phps

Prøv at bruge det i stedet, of fortæl hvilke fejl der kommer.
Avatar billede Slettet bruger
17. juli 2005 - 21:12 #21
Den opretter selv tabellen når scriptet køres første gang, så vidt jeg kan se i koden.
Avatar billede 4t Nybegynder
17. juli 2005 - 21:18 #22
Har rettet, indsat fejl logge-teksten  og har opdateret - som du foreslog. Hvad skriver den så? (Spændende!)
Den står "og ruller", men den henter ikke noget. Har testet der ligger en mail med et foto, den skulle hente ind.

Flyttede ikke den sætning op i den "lange kode" kode du foreslg, er den fin fortsat?
Avatar billede Slettet bruger
17. juli 2005 - 21:20 #23
Jeg er ikke med på hvad du mener i det sidste du skriver...

Er der noget der virker eller er det lige vidt? :)
Avatar billede 4t Nybegynder
17. juli 2005 - 21:23 #24
Det var relateret til denne her:

Kommentar: pacroon
17/07-2005 20:52:40
Prøv at flytte
$url = "http://bolink.org/projects/mms/error.php"; // don't change this, its error handling

.. op oven over if-sætningen. Han har lavet noget meget smart fejl-hjælp på hans website.

-----

Den fik jeg ikke lavet, var i tvivl o "hvor koden skulle ind"!

-----

Altså der er ikke de mange fejl vi havde i starten, men den hente ikke foto. Måske det er database opsætningen eller?
Avatar billede Slettet bruger
17. juli 2005 - 21:26 #25
Prøv at udskifte din class.mms.php med den jeg har linket til på:
http://pacroon.dk/projects/mmsblog/mms.phps

Den burde gøre det samme bare med rigtige fejlbeskeder.
Avatar billede 4t Nybegynder
17. juli 2005 - 21:31 #26
Det prøvede jeg lige. copy paste. Opdater og så kom der fejlmeldinger igen!

Disse:

Warning: imap_open(): Couldn't open stream {mail.absorbia.com:143}INBOX in /var/www/xx.com/public_html/blog/mms.class.php on line 61

Warning: Cannot modify header information - headers already sent by (output started at /var/www/xx.com/public_html/blog/mms.class.php:61) in /var/www/xx.com/public_html/blog/mms.class.php on line 62

Warning: imap_headers(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 64

Warning: imap_delete(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 106

Warning: imap_expunge(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 107

Warning: imap_close(): supplied argument is not a valid imap resource in /var/www/xx.com/public_html/blog/mms.class.php on line 108
no photos yet.

Så det var ikke så godt. Uha.... * Smiler alligevel - forslag?*
Avatar billede Slettet bruger
17. juli 2005 - 21:40 #27
De der imap fejl er jeg ikke sikker på - sikker på unoeuro understøtter dette?

Headerfejlen kommer igen, så du må stadig inkludere din php fil efter noget HTML.
Avatar billede 4t Nybegynder
17. juli 2005 - 21:43 #28
Jeg har jo ikke "opsat databasen" kan det være det? på unoeuro? Ved du noget herom?
Avatar billede Slettet bruger
17. juli 2005 - 21:44 #29
Jeg ved ikke om man skal 'aktivere' sin database hos dem.

Men scriptet burde selv oprette en tabel hvis de informationer du har skrevet i:

$db_host = "xxx.com";
$db_user = "xxx_com_db";
$db_password = "xxx";
$db_name = "xxxxx_com_db";
$db_table = "xxx";

.. er rigtige.
Avatar billede 4t Nybegynder
17. juli 2005 - 21:48 #30
Det er de. Databasen er aktiveret, måske jeg skal lave et spørgsmpl under databaser herom?
Hvis du finder "det gyldne æg, sig gerne til. Jeg må smutte ud og få noget og spise, og så i seng. Men er retur i morgen. Tak indtil nu.

Hvis andre har forslag nævn det gerne.
Avatar billede Slettet bruger
20. juli 2005 - 16:12 #31
Er du kommet videre? Jeg ved ikke helt...
Avatar billede 4t Nybegynder
20. juli 2005 - 16:59 #32
Desværre er vi strandet her lidt. Ingen gav svar på database spørgsmålet og det er fortsat ikke helt i vinkel. Øv.
Avatar billede 4t Nybegynder
21. juli 2005 - 11:34 #33
Næ nej som sagt virker det ikke endnu. Tænkte på hvis du har gemt filerne. Måske du kunne hjælpe med at PHP filerene "virker og er rigtig sat sammen". Så må jeg finde ud af det med databasen selvstændigt. Det skal jo virke, det virker andre steder osv. :-)
Avatar billede Slettet bruger
21. juli 2005 - 16:58 #34
Jeg har stadig disse:
http://pacroon.dk/projects/mmsblog/mms.phps

Som jeg var ret sikker på ville virke - men det gjorde de ikke, eller hvad? Og hvis nej, hvilke fejl kom så.
Avatar billede 4t Nybegynder
21. juli 2005 - 22:46 #35
Når man taster linket ind: http://www.absorbia.com/blog/example.php
"tænker den" og så kommer fejlmeldingen: htto 404 blev ikke fundet!
Avatar billede 4t Nybegynder
22. juli 2005 - 06:47 #36
linket var et eksempel - meningen god nok. Hææælp :-)
Avatar billede Slettet bruger
22. juli 2005 - 11:01 #37
404-fejl?! Det må altså være en forkert sti du angiver så! :\
Avatar billede 4t Nybegynder
04. september 2005 - 08:36 #38
Stigen er nu fin nok, men jeg er fortsat strandet!
Avatar billede 4t Nybegynder
30. oktober 2005 - 11:58 #39
Fik hjælp udefra! Øv.
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