Gegevens naar database schrijven, en automatisch mappen aanmaken
Ben niet een php genie, maar doe er dagelijks iets aan als hobby. Nu wil ik een script hebben danwel maken, maar ik ben met dit volgende niet zo bekend:
Het gaat om een nieuwswebsite. De bedoeling is dat er voor de ingelogde (hoeft niet perse meerdere accounts, er zullen maar 2 gebruikers dingen toevoegen) een formulier komt, waarbij ze de volgende gegevens invoeren
* Titel bericht
* Bericht zelf
* Datum gebeurtenis (het liefst met zo'n kalender knopje o.i.d.
* Plaats gebeurtenis
Hij moet dan natuurlijk automatisch een ID aanmaken van het bericht en dat in de database zetten, dus de volgende kolommen zijn er dan:
ID | Titel | Datum | Bericht | Plaats
Maar nu het moeilijk(st)e: Er moet automatisch een map aangemaakt worden op de server, gelijknamig aan de ID van het bericht.
Dus als ik voor het eerst een bericht intik en opsla via het formulier in de database, moet er op de server (in een bepaalde map) de map genaamd '1' verschijnen, want het ID is tenslotte '1'
Enzovoort...
Verder hoeft er niet veel aan de opmaaktags te gebeuren, alleen een B , I , U zou wel prettig zijn...
Heeft iemand een idee of beginnetje?
Alvast bedankt!
Groetjes Tommy
P.S. Het uitlezen van de database dat lukt me opzich wel, het gaat meer om het invoeren naar een databse, en automatisch de map aanmaken op de server
En waar moet ik dan kijken?
Ik denk dat als je gastenboek aan klikt wel het een en ander duidelijk wordt... overige informatie vind je met een beetje geluk bij de overige genoemde links.
Per artikel (er staat er nu dus nog maar één) leest hij de bijbehorende map uit (aan de hand van de ID) en bekijkt dan de extensies en doet daarmee wat hij ermee moet doen (foto of video weergeven bijvoorbeeld).
alvast bedankt:D
Maar over het automatisch laten aanmaken van mappen aan de hand van de ID weet ik nog steeds niks..Heeft iemand een opzetje? Zou top zijn!
Groetjess Tommy
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$con = mysql_connect("localhost","dnpp","ddddxx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dnp_dnpp", $con);
$sql="INSERT INTO dnp2 (Titel, Plaats, Bericht, Datum)
VALUES
('$_POST[Titel]','$_POST[Plaats]','$_POST[Bericht]','$_POST[Datum]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
$con = mysql_connect("localhost","dnpp","ddddxx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dnp_dnpp", $con);
$sql="INSERT INTO dnp2 (Titel, Plaats, Bericht, Datum)
VALUES
('$_POST[Titel]','$_POST[Plaats]','$_POST[Bericht]','$_POST[Datum]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
Gewijzigd op 14/06/2010 13:41:07 door Johan Sebastiaan
even eerst een aantal dingen
- Je moet wat overzichtelijker programmeren
http://wiki.phpfreakz.nl/Overzichtelijk_programmeren
- Geen gebruik van DIE
- Let op SQL injection
http://www.phphulp.nl/php/tutorial/overig/mysql-injection/244/hoe-gaat-sqlinjection-te-werk/452/
- mysql_close hoef je niet te gebruiken als je maar 1 connectie hebt
- variablen uit de quotes
Dat was het zo'n beetje. Succes!
Code (php)
1
2
3
4
5
2
3
4
5
mysql_query("INSERT INTO tabel SET naam = '".$naam."'");
$id = MySQL_Insert_ID();
mkdir("/path/to/my/dir/$id", 0700);
$id = MySQL_Insert_ID();
mkdir("/path/to/my/dir/$id", 0700);
zoiets?
bedankt!! alleen waar moet ik dat dan precies zetten?
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$con = mysql_connect("localhost","dnp_joomla","XXX");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dnp_joomla", $con);
$sql="INSERT INTO dnp2 (Titel, Plaats, Bericht, Datum)
VALUES
('$_POST[Titel]','$_POST[Plaats]','$_POST[Bericht]','$_POST[Datum]')";
$id = MySQL_Insert_ID();
mkdir("http://81.30.70.233/~dnp/dnpnieuw/admin/files/$id", 0700);
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Het artikel is geplaatst. Voeg via de FTP server fotos, videos en downloads toe. Het artikelnummer is gelijk aan de map waar de bestanden in moeten staan.";
mysql_close($con)
?>
$con = mysql_connect("localhost","dnp_joomla","XXX");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dnp_joomla", $con);
$sql="INSERT INTO dnp2 (Titel, Plaats, Bericht, Datum)
VALUES
('$_POST[Titel]','$_POST[Plaats]','$_POST[Bericht]','$_POST[Datum]')";
$id = MySQL_Insert_ID();
mkdir("http://81.30.70.233/~dnp/dnpnieuw/admin/files/$id", 0700);
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Het artikel is geplaatst. Voeg via de FTP server fotos, videos en downloads toe. Het artikelnummer is gelijk aan de map waar de bestanden in moeten staan.";
mysql_close($con)
?>
</body>
geen error, maar maakt ook geen mappen aan. de map 'files' is chmodded naar 777
En mkdir werkt niet met een url, maak het path relative.
Zet dit bovenin:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest van je script
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest van je script
?>
Gewijzigd op 17/06/2010 18:31:58 door - SanThe -
lijn 21 is: mkdir("files/$id", 0700);
totale scipt is:
Code (php)
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
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
<body bgcolor="#FFFFFF">
<?php
$con = mysql_connect("localhost","dnp_joomla","xxx);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dnpp", $con);
$sql="INSERT INTO dnp2 (Titel, Plaats, Bericht, Datum)
VALUES
('$_POST[Titel]','$_POST[Plaats]','$_POST[Bericht]','$_POST[Datum]')";
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$id = MySQL_Insert_ID();
mkdir("files/$id", 0700);
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Het artikel is geplaatst. Voeg via de FTP server fotos, videos en downloads toe. Het artikelnummer is gelijk aan de map waar de bestanden in moeten staan.";
mysql_close($con)
?>
</body>
<?php
$con = mysql_connect("localhost","dnp_joomla","xxx);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dnpp", $con);
$sql="INSERT INTO dnp2 (Titel, Plaats, Bericht, Datum)
VALUES
('$_POST[Titel]','$_POST[Plaats]','$_POST[Bericht]','$_POST[Datum]')";
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$id = MySQL_Insert_ID();
mkdir("files/$id", 0700);
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Het artikel is geplaatst. Voeg via de FTP server fotos, videos en downloads toe. Het artikelnummer is gelijk aan de map waar de bestanden in moeten staan.";
mysql_close($con)
?>
</body>
De directory die je hebt aangemaakt, bestaat al. Dus je moet eerst kijken of een directory bestaat voordat je een nieuwe aanmaakt ;-)
Dus blijkbaar pakt het script de 'ID' niet, maar maakt er standaard '0' van. Iemand tips of nog beter de oplossing?
alvast bedankt!
Je voert de query niet op tijd uit dus er is helemaal geen nieuw id.
De volgorde klopt van geen meter.
Ik heb een andere map geprobeerd, en daar zet hij bij het eerste bericht dat ik toevoegde, de map '0' in. Daarna gaf hij weer die error aan.
maar waar moet ie dan komen te staan? Als ik um bijvoorbeeld onder mysql_select_db("dnpp", $con); zet, dan krijg ik
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Warning: mkdir() [function.mkdir]: File exists in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 17
Notice: Undefined index: Titel in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 22
Notice: Undefined index: Plaats in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 22
Notice: Undefined index: Bericht in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 22
Notice: Undefined index: Datum in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 22
Notice: Undefined index: Titel in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 22
Notice: Undefined index: Plaats in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 22
Notice: Undefined index: Bericht in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 22
Notice: Undefined index: Datum in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 22
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$con = mysql_connect("...");
mysql_select_db("...");
$sql="INSERT ...";
if (!mysql_query(...))
{
die('Error: ' . mysql_error());
}
$id = MySQL_Insert_ID();
mkdir("files/" . $id, 0700);
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$con = mysql_connect("...");
mysql_select_db("...");
$sql="INSERT ...";
if (!mysql_query(...))
{
die('Error: ' . mysql_error());
}
$id = MySQL_Insert_ID();
mkdir("files/" . $id, 0700);
?>
Er is een fout opgetreden bij het naar de FTP-server kopieren van een bestand. Zorg ervoor dat u de bevoegheid hebt om bestanden naar de server te kopiëren.
Details:
200 Type set to I
227 Entering Passive Mode (81,30,70,233,137,255).
550 foto.png: Permission denied