Gegevens naar database schrijven, en automatisch mappen aanmaken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Johan Sebastiaan

Johan Sebastiaan

10/06/2010 11:54:55
Quote Anchor link
Halloo allemaal!

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
 
PHP hulp

PHP hulp

18/05/2024 02:13:40
 
- SanThe -

- SanThe -

10/06/2010 12:15:42
Quote Anchor link
Tutorials op www.phptuts.nl
 
Johan Sebastiaan

Johan Sebastiaan

11/06/2010 21:48:33
Quote Anchor link
En waar moet ik dan kijken?
 
Noppes Homeland

Noppes Homeland

11/06/2010 21:53:35
Quote Anchor link
en waarom ga je die mappen dan aanmaken, in veel gevallen een onzinnige actie indien je de data in een database opslaat.

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.
 
Johan Sebastiaan

Johan Sebastiaan

12/06/2010 00:22:09
Quote Anchor link
Ik wil mappen aanmaken, omdat dan via ftp heel gemakkelijk bestanden zijn toe te voegen. Zie http://81.30.70.233/~dnp/dnpnieuw/programtest2.php

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
 
Johan Sebastiaan

Johan Sebastiaan

14/06/2010 12:01:52
Quote Anchor link
Ondertussen heb ik het uitlezen van de database en mappen iets verbeterd: http://81.30.70.233/~dnp/dnpnieuw/readsql9.php

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
 
Niels K

Niels K

14/06/2010 12:28:05
Quote Anchor link
Controleer eerst of query gelukt is? En zoja dan een map aan laten maken met mkdir
 
Johan Sebastiaan

Johan Sebastiaan

14/06/2010 13:40:11
Quote Anchor link
bedoel je dan ermee de pagina om naar de database te schrijven? dat bestaat uit dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)
?>
Gewijzigd op 14/06/2010 13:41:07 door Johan Sebastiaan
 
Niels K

Niels K

14/06/2010 17:14:28
Quote Anchor link
Jij wilt toch nadat de pagina in de database geschreven wordt een map aanmaken?

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!
 
Joakim Broden

Joakim Broden

14/06/2010 17:35:08
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
mysql_query("INSERT INTO tabel SET naam = '".$naam."'");
                        
$id = MySQL_Insert_ID();

mkdir("/path/to/my/dir/$id", 0700);


zoiets?
 
Johan Sebastiaan

Johan Sebastiaan

17/06/2010 10:27:58
Quote Anchor link
bedankt!! alleen waar moet ik dat dan precies zetten?
 
Johan Sebastiaan

Johan Sebastiaan

17/06/2010 16:56:29
Quote Anchor link
Ik heb nu dus

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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)
?>

</body>



geen error, maar maakt ook geen mappen aan. de map 'files' is chmodded naar 777
 
- SanThe -

- SanThe -

17/06/2010 18:23:11
Quote Anchor link
Script is lek => sql-injection.
En mkdir werkt niet met een url, maak het path relative.

Zet dit bovenin:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
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 -
 
Johan Sebastiaan

Johan Sebastiaan

18/06/2010 09:29:34
Quote Anchor link
Ik krijg nu een error: Warning: mkdir() [function.mkdir]: File exists in /home/dnp/domains/dnp.nu/public_html/dnpnieuw/admin/insert.php on line 21

lijn 21 is: mkdir("files/$id", 0700);

totale scipt is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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>
 
Chris -

Chris -

18/06/2010 09:38:35
Quote Anchor link
Tommy, script hierboven heb je op regel 4 een fout; een " vergeten.

De directory die je hebt aangemaakt, bestaat al. Dus je moet eerst kijken of een directory bestaat voordat je een nieuwe aanmaakt ;-)
 
Johan Sebastiaan

Johan Sebastiaan

18/06/2010 09:55:41
Quote Anchor link
Ja klopt zie het nu ook, ging perongeluk met het wachtwoord weghalen voor op t forum. In t echte script zit dat foutje niet;) toch bedankt. Maar het punt is dus, dat de map die het script zou móeten aanmaken, nog niet bestaat. Er staan in de map 'files' op dit moment 2 mappen; '5' en '0'. De '5' heb ik handmatig aangemaakt, en de map '0' heeft het script aangemaakt, na de toevoeging van SanThe Nvt.

Dus blijkbaar pakt het script de 'ID' niet, maar maakt er standaard '0' van. Iemand tips of nog beter de oplossing?

alvast bedankt!
 
- SanThe -

- SanThe -

18/06/2010 10:03:34
Quote Anchor link
Script is lek => sql-injection.
Je voert de query niet op tijd uit dus er is helemaal geen nieuw id.
De volgorde klopt van geen meter.
 
Johan Sebastiaan

Johan Sebastiaan

18/06/2010 10:03:38
Quote Anchor link
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.
 
Johan Sebastiaan

Johan Sebastiaan

18/06/2010 10:10:17
Quote Anchor link
Ooohh okeee... thnx voor de hulp tot nu toe:D
maar waar moet ie dan komen te staan? Als ik um bijvoorbeeld onder mysql_select_db("dnpp", $con); zet, dan krijg ik

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
 
- SanThe -

- SanThe -

18/06/2010 10:15:46
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>
 
Johan Sebastiaan

Johan Sebastiaan

18/06/2010 10:32:33
Quote Anchor link
Wauw het werkt!:D Alle slimme mensen dank! Hij maakt nu de mappen aan met de juiste ID. Maar als ik de map wil openen, krijg ik een bericht dat ik niet de rechten ervoor heb. Maar als ik naar de CHMOD kijk, dan staat er dat de eigenaar schrijven, lezen en uitvoeren kan. Ik heb ook even geprobeerd om het getal 0700 te veranderen in 0777. Dan kom ik wel in de map, maar als ik dan iets wil uploaden, krijg ik de volgende foutmeldig:

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
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.