abonnement Unibet Coolblue Bitvavo
  donderdag 24 april 2008 @ 23:16:20 #126
37634 wobbel
Da WoBBeL King
  vrijdag 25 april 2008 @ 10:25:29 #127
53731 Flipper01
Addicted Dolphin
pi_58296914
Ik wil een archief maken van alle nieuwsberichten geordend per maand. Ik heb nu in MySQL een kolom datum waarin de datum als DATETIME wordt weergegeven. Ik wil nu graag het volgende resultaat bereiken:
- 2008
januari (2)
april (1)
mei (8)
.....

Hoe kan ik dit voor elkaar krijgen?
I don't shine if you don't shine
  vrijdag 25 april 2008 @ 10:28:50 #128
107951 JortK
Immer kwaliteitsposts
pi_58296996
quote:
Op vrijdag 25 april 2008 10:25 schreef Flipper01 het volgende:
Ik wil een archief maken van alle nieuwsberichten geordend per maand. Ik heb nu in MySQL een kolom datum waarin de datum als DATETIME wordt weergegeven. Ik wil nu graag het volgende resultaat bereiken:
- 2008
januari (2)
april (1)
mei (8)
.....

Hoe kan ik dit voor elkaar krijgen?
Even snel
1
2
3
SELECT MONTH(datumkolom) AS month, COUNT(MONTH(datumkolom) ) AS aantal
FROM posts
GROUP BY MONTH(datumkolom)


[ Bericht 10% gewijzigd door JortK op 25-04-2008 10:41:11 (Verkeerde syntax) ]
  vrijdag 25 april 2008 @ 10:38:54 #129
53731 Flipper01
Addicted Dolphin
pi_58297222
Waarvoor dient DATEPART en kan ik dit ook op een linux server gebruiken?
I don't shine if you don't shine
  vrijdag 25 april 2008 @ 10:41:54 #130
107951 JortK
Immer kwaliteitsposts
pi_58297290
quote:
Op vrijdag 25 april 2008 10:38 schreef Flipper01 het volgende:
Waarvoor dient DATEPART en kan ik dit ook op een linux server gebruiken?
Ik heb hem wat aangepast, zie deze link die je verder kan helpen

En op wat voor server maakt niet uit natuurlijk
pi_58301246
Hoi,

ik ondervind een merkwaardig probleem. Ik heb een datase backup scriptje welke iedere dag uitgevoerd wordt. Het verstuurt een dbase dump per email. Dit werkt perfect op een aantal domeinen die ik heb.
Het werkt net niet op een ander domein. Het verschil is de hostingprovider. De niet werkende staan bij een andere provider gehost.

Het meest vreemde is: het script verstuurt de dump als attachment. Onder windows, in Outlook Express wordt de bijlage niet herkent. Ik heb het over de "foute" server, bij de andere domeinen werkt het weer wel.
Als ik de emails ontvang op mijn linux laptop onder Kmail, zie ik de bijlage van de dumps verstuurt door de "foute" server wel! Het verschil is dus de combinatie van mailclient en hostingprovider...

Ik heb werkelijk geen idee waar ik het zoeken moet. De headers zijn allen hetzelfde, de emails worden verstuurd met attachment, ook dit werkt correct (denk ik, stiekem ook niet)
Het verschil openbaart zich dus bij het ontvangen van de emails met of Outlook Express of Kmail onder linux.
Onder Outlook Express zie ik geen bijlage, maar staat de bijlage (gecodeerd???) in de tekst. Onder Kmail is het een keurig attachment.

Onderstaand het scriptje Komt overigens van phphulp.

Wie kan me vertellen waar ik de fout zoeken moet? Wat zou verantwoordelijk kunnen zijn voor het verschil in outlook express en kmail, in combinatie met een andere serversetup?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?
#create a sql backup and send it to your e-mail address
//define settings
//database host
DEFINE('dbhost','localhost');
//database name
DEFINE('dbnaam','dbnaam');
//database user
DEFINE('dbuser','dbuser');
//database passwordt
DEFINE('dbpass','dbpass');
//domeinnaam
DEFINE('domein','domein.nl');
//doel
DEFINE('email','backup@domein.nl');

//connect with database
$link = mysql_connect(dbhost,dbuser,dbpass) or die('No datbase conection could be establised');
mysql_select_db(dbnaam,$link) or die('No datbase selected');

//query to recive table names
$query = mysql_query('SHOW TABLE STATUS') or die(mysql_error());
$sql_backup = '';

//whileloop to loop trough every table
while($row = mysql_fetch_assoc($query))
{
    //show sql query to rebuild the query
    $sql = 'SHOW CREATE TABLE '.$row['Name'].'';
    //exucte error or give a error
    $query2 = mysql_query($sql) or die(mysql_error());

    //create sql
    $sql_backup.="\r\n#Create table ".$row['Name']."\r\n\r\n";
    $out = mysql_fetch_assoc($query2);

    $sql_backup.=$out['Create Table'].";\r\n\r\n";
    $sql_backup.="#Dump data\r\n\r\n";

    //SQL code to select everything for table
    $sql = 'SELECT * FROM '.$row['Name'];
    $out = mysql_query($sql);
    $sql_code = '';

    //loop trough the colloms
    while($code = mysql_fetch_array($out,MYSQL_ASSOC))
    {
        $sql_code .= "INSERT INTO ".$row['Name']." SET ";

        foreach($code as $insert => $value)
        {
            $sql_code.=$insert ."='".addslashes($value)."',";
        }
        $sql_code = substr($sql_code, 0, -1);
        $sql_code.= ";\r\n";
    }
    $sql_backup.= $sql_code;
}

//generade a unique id
$unique = md5(uniqid(time()));

//message
$message = "Backup procedure van database: ".dbnaam." is met succes verlopen. U vind in de bijlage een backup van de inhoud gemaakt op. ".date('d-m-Y H:i:s')."\r\n Autobot";

//maak headers aan
//form header
$headers = "From: Autobot <noreply@".domein.">\r\n";
//terug sturen naar een niet bestaand mail adress (noreply@domein.nl)
$headers .= "Reply-To: Autobot <noreply@".domein.">\r\n";
//vertel dat het een mine versie is
$headers .= "MIME-Version: 1.0\r\n";
//email bestaat uit meerdere  bestanden dus vertel wat de scheidings teken is en dat het een multipart is
$headers .= "Content-Type: multipart/mixed; boundary=\"".$unique."\"\r\n";
//we zenden een attachment mee
$headers .= "Content-Disposition:  attachment\r\n";

//generenen een body. Dit is een multi part gezeik
$body.= "This is a multi-part message in MIME format.\r\n";
$body.= "\r\n";
//boundary
$body.= "--".$unique."\r\n";
//content type + charater set (iso in dit geval)
$body.= "Content-Type: text/plain; charset=iso-8859-1\r\n";
//codering (7 bit)
$body.= "Content-Transfer-Encoding: 7bit\r\n";
$body.= "\r\n";
//het bericht
$body.= $message ."\r\n";
//boundaty
$body.= "--".$unique."\r\n";
//content type + naam bestand (database.sql)
$body .= "Content-Type: application/octet-stream; name=database.sql\r\n";
//codering
$body .= "Content-Transfer-Encoding: base64\r\n";
//als bijlage toegevoegd
$body.= "Content-disposition: attachment\r\n";
$body .= "\n";
//de inhoud van het bestand
$body .= chunk_split(base64_encode($sql_backup)) . "\r\n";
//zet alles op email!
//hier kan wat tijdsverschil in zitten!
mail(email,'Mysql backup '.date('d-m-Y H:i:s'),$body,$headers);
?>
  vrijdag 25 april 2008 @ 18:18:35 #132
37634 wobbel
Da WoBBeL King
pi_58307402
Ik ben weer eens aan het stoeien met wat JOINS :P en het lukt niet :(

Ik heb deze query:

1
2
3
4
5
SELECT * FROM SHOP_Products 
JOIN SHOP_Products_Lang ON SHOP_Products_Lang.ProductId = SHOP_Products.IdProduct 
JOIN SHOP_Afbeeldingen ON SHOP_Afbeeldingen.ProductId = SHOP_Products.IdProduct 
WHERE SHOP_Products.SubcategoryId = '1' 
AND SHOP_Products_Lang.LanguageId = '1'


Ik heb de tabel Products, Products_Lang en de tabel Afbeeldingen.

Ik wil nu alle producten met SubcategoryId = 1 weergeven, en daarbij ook alle data uit Products_Lang en Afbeeldingen die hetzelfde product ID hebben.

Maar ik krijg 0 rows terug :'( en er zijn 5 records met SubcategoryId = '1' en met LanguageId = '1'
pi_58310832
In principe is de syntax "INNER JOIN", niet "JOIN". Weet niet of mysql daar moeilijk over doet.

Weet je zeker dat er in alle 3 de tabellen de juiste gegevens staan?
  zaterdag 26 april 2008 @ 12:18:03 #134
53731 Flipper01
Addicted Dolphin
pi_58318392
quote:
Op vrijdag 25 april 2008 10:41 schreef JortK het volgende:
Ik heb hem wat aangepast, zie deze link die je verder kan helpen

En op wat voor server maakt niet uit natuurlijk
Sorry voor m'n n00b vragen.. :$

Maar ik ben eruit gekomen! Ik snapte niet helemaal hoe het werkte, maar ik heb nu de datum in datetime weergegeven en bij het uitlezen maak ik een aantal extra kolommen aan waarin ik de datum uitsplits:
1
2
3
<?php
$query 
"SELECT  *, DATE_FORMAT(datum, '%d') AS dag, DATE_FORMAT(datum, '%c') AS maand, DATE_FORMAT(datum, '%Y') AS jaar, DATE_FORMAT(datum, '%H:%i') AS tijd FROM weblog ORDER BY -datum LIMIT 0,8";
?>


Daarnaast gebruik ik jouw aangepaste gegevens in een andee query
THNX!

[ Bericht 23% gewijzigd door Flipper01 op 26-04-2008 12:24:32 ]
I don't shine if you don't shine
pi_58318636
quote:
Op vrijdag 25 april 2008 22:02 schreef Arjan321 het volgende:
In principe is de syntax "INNER JOIN", niet "JOIN". Weet niet of mysql daar moeilijk over doet.
Daar doet MySQL niet moeilijk over.
  zaterdag 26 april 2008 @ 13:20:10 #136
37634 wobbel
Da WoBBeL King
pi_58319331
quote:
Op vrijdag 25 april 2008 22:02 schreef Arjan321 het volgende:
In principe is de syntax "INNER JOIN", niet "JOIN". Weet niet of mysql daar moeilijk over doet.

Weet je zeker dat er in alle 3 de tabellen de juiste gegevens staan?
Ja, ik heb in SHOP_Afbeeldingen 1 record met ProductId = 1
In SHOP_Products zit ook 1 record met IdProduct = 1
en SHOP_Products_Lang heeft ook 1 record met ProductId = 1

alleen krijg ik 0 rows terug met mijn query
pi_58319419
quote:
Op vrijdag 25 april 2008 18:18 schreef wobbel het volgende:
Ik wil nu alle producten met SubcategoryId = 1 weergeven, en daarbij ook alle data uit Products_Lang en Afbeeldingen die hetzelfde product ID hebben.
Probeer eens LEFT JOIN ipv gewoon JOIN.
  zaterdag 26 april 2008 @ 13:52:59 #138
37634 wobbel
Da WoBBeL King
pi_58319820
quote:
Op zaterdag 26 april 2008 13:27 schreef Farenji het volgende:

[..]

Probeer eens LEFT JOIN ipv gewoon JOIN.
De tabel SHOP_Afbeeldingen hoeft niet perse records te hebben met hetzelfde ProductID
pi_58319983
quote:
Op zaterdag 26 april 2008 13:52 schreef wobbel het volgende:

[..]

De tabel SHOP_Afbeeldingen hoeft niet perse records te hebben met hetzelfde ProductID
Ja, daarom juist! Daarom krijg je met een INNER JOIN geen resultaten!!
pi_58324153
quote:
Op zaterdag 26 april 2008 14:03 schreef Farenji het volgende:

[..]

Ja, daarom juist! Daarom krijg je met een INNER JOIN geen resultaten!!
Hehe
  zondag 27 april 2008 @ 11:35:26 #141
53731 Flipper01
Addicted Dolphin
pi_58335733
Hoe kan ik de huidige tijd als DateTime in een string zetten? Dit ivm het plaatsen in MySQL.
Ik heb nu het volgende:
1
2
3
4
<?php
 $datum 
date_create('NOW');
echo 
$datum
?>

Maar krijg een foutmelding..
I don't shine if you don't shine
  zondag 27 april 2008 @ 11:39:15 #142
107951 JortK
Immer kwaliteitsposts
pi_58335783
quote:
Op zondag 27 april 2008 11:35 schreef Flipper01 het volgende:
Hoe kan ik de huidige tijd als DateTime in een string zetten? Dit ivm het plaatsen in MySQL.
Ik heb nu het volgende:
[ code verwijderd ]

Maar krijg een foutmelding..
Ooi van het datatype datetime gehoord in MySQL?
pi_58335874
De functie date_create geeft en DateTime object terug, dus geen string. Ik vind dit echt weer zo'n typische vage php implementatie, gaat ook wel lekker tegen alle verwachting en conventies in maar dat zijn we gewend van php.

Als je gewoon een string wil hebben die in een mysql datetime past, dan zou ik het simpel doen met date:

1
2
3
<?php
$datum 
date("Y-m-d H:i:s");
?>


Dat geeft dus iets terug als "2008-04-27 11:44:25".

http://nl3.php.net/manual/en/function.date.php
  zondag 27 april 2008 @ 11:46:11 #144
53731 Flipper01
Addicted Dolphin
pi_58335901
quote:
Op zondag 27 april 2008 11:39 schreef JortK het volgende:
Ooi van het datatype datetime gehoord in MySQL?
Hoe kan ik da huidige tijd hierin krijgen als ik m'n tabel op de volgende manier aanvul:
1
2
3
4
5
6
7
<?php
$query 
"INSERT INTO weblog_reactie 
(weblogid, naam, email, website, tekst, ip, spam, datum) 
VALUES 
('$formId', '$formNaam', '$formEmail', '$formWebsite', '$formTekst', '$_SERVER[REMOTE_ADDR]', 'spam', 'NOW')"
;
mysql_query($query) or die (mysql_error()); 
?>
I don't shine if you don't shine
  zondag 27 april 2008 @ 11:47:46 #145
53731 Flipper01
Addicted Dolphin
pi_58335923
quote:
Op zondag 27 april 2008 11:44 schreef Farenji het volgende:
De functie date_create geeft en DateTime object terug, dus geen string. Ik vind dit echt weer zo'n typische vage php implementatie, gaat ook wel lekker tegen alle verwachting en conventies in maar dat zijn we gewend van php.

Als je gewoon een string wil hebben die in een mysql datetime past, dan zou ik het simpel doen met date:
[ code verwijderd ]

Dat geeft dus iets terug als "2008-04-27 11:44:25".

http://nl3.php.net/manual/en/function.date.php
Dit zocht ik!
Thnx!
I don't shine if you don't shine
pi_58335949
Het kan natuurlijk veel makkelijker bedenk ik me nu pas, dmv de MySQL functie NOW()

1insert into tabel (veld1, datum) values ('blaat', NOW());
pi_58346563
Ik ben op dit moment bezig met het maken van een poll-systeem. Hierbij wil ik controleren of er al gestemd is vanaf het ip waarvandaan de poll bezocht wordt.

Als ik vervolgens met een query wil kijken of het ip adres al voorkomt bij de betreffende poll krijg ik een foutmelding, namelijk:
1queryRetreiveIpYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND ip = x.x.x.x' at line 1

queryRetreiveIp = identificatie van de query
x.x.x.x = ip adres


Betreffende query:
1
2
3
4
<?php
$visitorIp 
$_SERVER['REMOTE_ADDR'];
$queryRetreiveIp mysql_query("SELECT * FROM result WHERE poll_id = $pollId AND ip = $visitorIp ") or die("queryRetreiveIp ".mysql_error());
?>


Het ip komt in de database voor (is gevuld met test gegevens). Ik heb al geprobeerd te zoeken op de website van mysql.com naar een mogelijke oplossing maar ik word niks wijzer.
Deze query heeft eerder wel gewerkt, waardoor hij nu niet meer werkt weet ik dus niet (ik kreeg deze fout niet eerder iig).
pi_58346824
Geen oplossing; maar wel belangrijk: zet alsjeplease niet zo variabelen in die query.. is vragen om sql-injectie.. ookal genereer je al de waarden zelf, gewoon even zo doen:
1
2
3
4
<?php
$visitorIp = $_SERVER['REMOTE_ADDR'];
$queryRetreiveIp = mysql_query("SELECT * FROM result WHERE poll_id = '" . mysql_real_escape_string($pollId) . "' AND ip = "' . mysql_real_escape_string($visitorIp) . "' ") or die("queryRetreiveIp ".mysql_error());
?>

('" is ' gevolgd door ")

Nog liever gebruik maken van prepared statements, maar die keuze is aan jezelf..
pi_58351029
Sowieso moet je de waarden tussen 'aanhalingstekentjes' zetten. Doe je dat niet, dan denkt MySQL dat het een kolom-naam is - en een IP-adres is uiteraard geen geldige naam voor een kolom...
In het voorbeeldje van Interpidity is dit trouwens al verbeterd.
pi_58351619
quote:
Op donderdag 24 april 2008 18:46 schreef Piles het volgende:
Even kort vraagje: hoe kun je dmv php checken of een site online is? Dus even proberen om een connectie te maken, zo niet: mailtje sturen. Dit wil ik namelijk graag in een cron job hebben (uiteraard op andere host)

Opgelost: file() doet wat ik wil
Even een vraag die aansluit op hetvolgende:
quote:
A URL can be used as a filename with this function if the fopen wrappers have been enabled. See fopen() for more details on how to specify the filename and List of Supported Protocols/Wrappers for a list of supported URL protocols.
Hoe vaak staan deze fopen_wrappers uit (bij bijvoorbeeld hosters)? Ik doel dan op allow_url_fopen aangezien je deze niet via ini_set() kan setten voor zover ik de documentatie lees.

Ik vraag dit omdat ik een manier wilde hebben om wget the simuleren in php. Het is op 3 verschillende manier te doen (tenminste, ik heb het op 3 verschillende manieren geimplementeerd). Via copy() en file_get_contents(), maar netzoals file zijn deze afhankelijk van de allow_url_fopen parameter in de file php.ini. En dan om het zelf te doen door een socket te openen en zelf HTTP te gaan praten tegen de desbetreffende server..

Als je alleen gebruikt maakt van file() in je code dan kan je nooit je scripts portable maken, aangezien file() niet altijd doet wat jij verwacht (het gaat croaken op het moment dat allow_url_fopen niet aanstaat.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')