mijn eerst scriptjes

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Reinhout

reinhout

19/05/2007 20:45:00
Quote Anchor link
Ik heb nu een boek uit over php en daarbij ben ik nu een minimalistische cms aan het maken. Nu heb ik 2 fouten die ik nog wil fixen, maar waar ik geen antwoord voor vindt in mijn boek.
1: Als ik mijn berichtje wil aanpassen krijg ik een fout, maar ik heb geen idee hoe ik dat weg kan krijgen.
2: Het uur klopt niet; wordt niet in de db geschreven want de standaardwaarde wordt getoond.

de database ziet er als volgt uit:
systeem --> tut --> tut_ID, tut_header, tut_main, tut_datetime
die tut_datetime is datetime, not null en de standaardwaarde (0000-00-00 00:00:00) kwam er automatisch bij

tut_edit.php:
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
<?php
include("connect.inc.php");
$SQL_tut="SELECT * FROM tut WHERE tut_ID=" . $_GET['tut_ID'];
$tut_result=mysql_query($SQL_tut);
$tut=mysql_fetch_array($tut_result);
mysql_close();
//br-tags naar regeluiteinden
$tut['tut_main'] = eregi_replace('<br[[:space:]]*/?[[:space:]]*>',"/n", $tut['tut_main']);

//******************formulier*****************
?>

<html>
<form action=tut_list.php method=post>
  <input type="text" name="tut_header" value="<?php echo $tut['tut_header'] ?>" size="50" maxlenth="120"><br>
  <input type="text" name="tut_datetime" value="<?php echo $tut['tut_datetime'] ?>" size="19" maxlength="19"><br>
  <textarea name="tut_main" rows="6" cols="45"><?php echo $tut['tut_main'] ?></textarea><br>
  <input type="hidden" name="action" value="update">
  <input type="submit" name="Submit" value="OK">
</form>
</html>


dan het deel van tut_list.php:
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
<?php
//*************tut aanpassen*******************
if($action=="update"){
  //parameters lezen
  $tut_ID=$_POST['tut_ID'];
  $tut_main=$_POST['tut_main'];
  $tut_header=$_POST['tut_header'];
  $tut_datetime=$_POST['datetime'];
  
  //regeleinden naar br

  $tut_SQL_update="UPDATE tut SET tut_header='$tut_header',tut_main='$tut_main',tut_datetime=$tut_datetime' WHERE tut_ID='tut_ID'";
  $bool=mysql_query($tut_SQL_update);
  if($bool==1) echo "<script language=JavaScript>window.alert('Bericht bewerkt')</script>";
  if($bool<>1) echo "<script language=JavaScript>window.alert('Er is een fout opgetreden')</script>";
}

//***********nieuwe tut maken*****************
if($action=="insert"){
 //parameters lezen
 $tut_main=$_POST['tut_main'];
 $tut_header=$_POST['tut_header'];
 $tut_datetime=$_POST['tut_datetime'];
 
 $tut_SQL_insert="INSERT INTO tut (tut_header,tut_datetime,tut_main) VALUES ('$tut_header','$tut_datetime','$tut_main')";
 $bool=mysql_query($tut_SQL_insert);
 if($bool==1) echo "<script language=JavaScript>window.alert('Bericht toegevoegd')</script>";
 if($bool<>1) echo "<script language=JavaScript>window.alert('Er is een fout opgetreden!')</script>";
?>

}
Gewijzigd op 01/01/1970 01:00:00 door Reinhout
 
PHP hulp

PHP hulp

28/02/2025 00:35:38
 
- SanThe -

- SanThe -

19/05/2007 20:55:00
Quote Anchor link
reinhout schreef op 19.05.2007 20:45:
Nu heb ik 2 fouten die ik nog wil fixen,
Welke foutmeldingen?
 
Reinhout

reinhout

19/05/2007 20:56:00
Quote Anchor link
wel, diegene die ik zelf laat tonen in een alert als er iets fout is
Gewijzigd op 01/01/1970 01:00:00 door reinhout
 
- SanThe -

- SanThe -

19/05/2007 21:04:00
Quote Anchor link
Tja, dan zal je toch even iets moeten veranderen zodat je de 'echte' errors te zien krijgt.

Maar zo even snel:
In je update query.....
tut_datetime=$tut_datetime' ..... mist een enkele quote.
WHERE tut_ID='tut_ID' ....... moet dat geen $tut_ID zijn
 
Reinhout

reinhout

19/05/2007 21:40:00
Quote Anchor link
Dat verandert niets.
en die tut_ID moet geen $tut_ID zijn tenzij er een fout in mijn boek staat
toch bedankt voor de moeite...

vriendelijke groet,
reinhout
 
TJVB tvb

TJVB tvb

19/05/2007 22:08:00
Quote Anchor link
reinhout schreef op 19.05.2007 21:40:
Dat verandert niets.
en die tut_ID moet geen $tut_ID zijn tenzij er een fout in mijn boek staat
toch bedankt voor de moeite...

vriendelijke groet,
reinhout

Dan zal er waarschijnlijk toch een fout staan (het is tenslotte door mensen geschreven)
want hierbij kijk je of 1 wel 1 is, of 2 wel 2 is. Je vergelijkt steeds een waarde met zichzelf.
 
Reinhout

reinhout

19/05/2007 22:11:00
Quote Anchor link
niet helemaal:
hier wordt de tut_ID in de url meegegeven; hij loopt de db door tot die 2 waardes overeenkomen en dan wordt die post aangepast

ps: die tut_ID is auto increment (?) dus wordt die bij iedere post 1 cijfer hoger.

edit moet mijn vorige post herzien denk ik; ik krijg Notice: Undefined index: tut_ID in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/admin/tut_list.php on line 84

Notice: Undefined index: datetime in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/admin/tut_list.php on line 87

dit is als ik via een omweg toch de error's zie
Gewijzigd op 01/01/1970 01:00:00 door reinhout
 
- SanThe -

- SanThe -

19/05/2007 22:45:00
Quote Anchor link
SanThe schreef op 19.05.2007 21:04:
In je update query.....
tut_datetime=$tut_datetime' ..... mist een enkele quote.
WHERE tut_ID='tut_ID' ....... moet dat geen $tut_ID zijn

Dus toch ... ;-)
 
Reinhout

reinhout

19/05/2007 22:47:00
Quote Anchor link
wat moet ik dan doen nu? :$
 
- SanThe -

- SanThe -

19/05/2007 22:48:00
Quote Anchor link
reinhout schreef op 19.05.2007 22:11:
hier wordt de tut_ID in de url meegegeven;

Dan moet toch
$tut_ID=$_POST['tut_ID'];
een GET zijn?
$tut_ID=$_GET['tut_ID'];
 
Reinhout

reinhout

19/05/2007 22:51:00
Quote Anchor link
et gaat zo:
je wil editten (tut_edit.php) en daar staat een formulier die alles inleest en dan weer verzendt naar tut_list.php
daar wordt gekeken wat er moet veranderen (uit url halen) en dat wordt dan toegepast naargelang action gelijk is aan edit, delete of new
 
- SanThe -

- SanThe -

19/05/2007 23:01:00
Quote Anchor link
Als dit uit een boek komt dan zitten er behoorlijk wat fouten in.

In tut_edit.php krijg je tut_ID uit de url. Je verzendt het formulier naar tut_list.php maar je geeft tut_ID niet meer mee.
if($action=="update"){
$action komt uit het formulier dus dat moet een POST-var zijn.
if($_POST['action']=="update"){
En dan nog mijn eerder genoemde punten in de query.

Zet dit eens bovenin elke pagina.
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 het script
?>
 
Martin Meijer

Martin Meijer

20/05/2007 09:36:00
Quote Anchor link
Ik zou ook een beetje mee rom je veiligheid van het script letten! Voornamelijk bij de invoer van gegevens!

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
<?php
//*************tut aanpassen*******************
if($action=="update"){
  //parameters lezen
  $tut_ID        = ( int ) $_POST['tut_ID'];
  $tut_main        = mysql_escape_string( $_POST['tut_main'] );
  $tut_header    = mysql_escape_string( $_POST['tut_header'] );
  $tut_datetime    = mysql_escape_string( $_POST['datetime'] );
  
  //regeleinden naar br

  $tut_SQL_update="UPDATE tut SET tut_header='$tut_header',tut_main='$tut_main',tut_datetime=$tut_datetime' WHERE tut_ID='tut_ID'";
  $bool=mysql_query($tut_SQL_update);
  if($bool==1) echo "<script language=JavaScript>window.alert('Bericht bewerkt')</script>";
  if($bool<>1) echo "<script language=JavaScript>window.alert('Er is een fout opgetreden')</script>";
}

//***********nieuwe tut maken*****************
if($action=="insert"){
 //parameters lezen
 $tut_main= mysql_escape_string( $_POST['tut_main'] );
 $tut_header= mysql_escape_string( $_POST['tut_header']);
 $tut_datetime= mysql_escape_string( $_POST['tut_datetime']);
 
 $tut_SQL_insert="INSERT INTO tut (tut_header,tut_datetime,tut_main) VALUES ('$tut_header','$tut_datetime','$tut_main')";
 $bool=mysql_query($tut_SQL_insert);
 if($bool==1) echo "<script language=JavaScript>window.alert('Bericht toegevoegd')</script>";
 if($bool<>1) echo "<script language=JavaScript>window.alert('Er is een fout opgetreden!')</script>";
?>


En met de tijd, kan je beter in de query gelijk NOW() doen in plaats van de varriabele die je er nu hebt staan.
Gewijzigd op 01/01/1970 01:00:00 door Martin Meijer
 
Aaa Trump

aaa Trump

20/05/2007 10:17:00
Quote Anchor link
In een phpboek wordt toch wel op veiligheid gelet?

Welk boek was het?
 
Reinhout

reinhout

20/05/2007 13:11:00
Quote Anchor link
robin schreef op 20.05.2007 10:17:
In een phpboek wordt toch wel op veiligheid gelet?

Welk boek was het?

PHP5 & MySQL van Jochen Franke & Axel Bornträger
startersboek met cd-rom

het is het nieuwste boek dat onze bib heeft (2005)
 
Reinhout

reinhout

20/05/2007 13:14:00
Quote Anchor link
Martin Meijer schreef op 20.05.2007 09:36:
Ik zou ook een beetje mee rom je veiligheid van het script letten! Voornamelijk bij de invoer van gegevens!

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
<?php
//*************tut aanpassen*******************
if($action=="update"){
  //parameters lezen
  $tut_ID        = ( int ) $_POST['tut_ID'];
  $tut_main        = mysql_escape_string( $_POST['tut_main'] );
  $tut_header    = mysql_escape_string( $_POST['tut_header'] );
  $tut_datetime    = mysql_escape_string( $_POST['datetime'] );
  
  //regeleinden naar br

  $tut_SQL_update="UPDATE tut SET tut_header='$tut_header',tut_main='$tut_main',tut_datetime=$tut_datetime' WHERE tut_ID='tut_ID'";
  $bool=mysql_query($tut_SQL_update);
  if($bool==1) echo "<script language=JavaScript>window.alert('Bericht bewerkt')</script>";
  if($bool<>1) echo "<script language=JavaScript>window.alert('Er is een fout opgetreden')</script>";
}

//***********nieuwe tut maken*****************
if($action=="insert"){
 //parameters lezen
 $tut_main= mysql_escape_string( $_POST['tut_main'] );
 $tut_header= mysql_escape_string( $_POST['tut_header']);
 $tut_datetime= mysql_escape_string( $_POST['tut_datetime']);
 
 $tut_SQL_insert="INSERT INTO tut (tut_header,tut_datetime,tut_main) VALUES ('$tut_header','$tut_datetime','$tut_main')";
 $bool=mysql_query($tut_SQL_insert);
 if($bool==1) echo "<script language=JavaScript>window.alert('Bericht toegevoegd')</script>";
 if($bool<>1) echo "<script language=JavaScript>window.alert('Er is een fout opgetreden!')</script>";
?>


En met de tijd, kan je beter in de query gelijk NOW() doen in plaats van de varriabele die je er nu hebt staan.

1 ding dat bij mij opkomt: ?????????????
kan je even zeggen wat er nu gebeurt ipv het originele script? Ik begrijp er namelijk niets van (als ik dat wel doe kan ik er lessen uit trekken)
 
Reinhout

reinhout

20/05/2007 13:17:00
Quote Anchor link
SanThe schreef op 19.05.2007 23:01:
Als dit uit een boek komt dan zitten er behoorlijk wat fouten in.

In tut_edit.php krijg je tut_ID uit de url. Je verzendt het formulier naar tut_list.php maar je geeft tut_ID niet meer mee.
if($action=="update"){
$action komt uit het formulier dus dat moet een POST-var zijn.
if($_POST['action']=="update"){
En dan nog mijn eerder genoemde punten in de query.

Zet dit eens bovenin elke pagina.
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 het script
?>

In tut_list krijg ik devolgende fouten:
Notice: Undefined variable: action in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/admin/tut_list.php on line 54

Notice: Undefined variable: action in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/admin/tut_list.php on line 69

Notice: Undefined variable: action in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/admin/tut_list.php on line 82

en na tut_edit:

Notice: Undefined index: datetime in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/admin/tut_list.php on line 87

(dat van dat niet meer terug-geven van tut_ID had ik zelf al gevonden (trots dat ik nu ben ^^)
 
- SanThe -

- SanThe -

20/05/2007 13:38:00
Quote Anchor link
Die regels met $action er in..
if($action=="update"){

moeten zo worden
if(isset($_POST['action']) and ($_POST['action'] =="update")){
 
Reinhout

reinhout

20/05/2007 13:45:00
Quote Anchor link
mooi! die notices zijn weg.
Weet je nu nog hoe ik dat van de tijd kan aanpassen?
tut_ID wordt nu via een verborgen veld meegegeven...
De fout moet ook in tut_insert.php zitten want de eerste keer wordt die datetime ook niet doorgegeven.
tut_insert:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<form action=tut_list.php method=post>
  <a>De titel van de tut:<br>
    <input type="text" name="tut_header" value="" size="50" maxlenth="120"><br></a>
  <a>De tijd (hoeft niet aangepast te worden):<br>
    <input type="text" name="tut_datetime" value="<?php echo date('Y-M-D H:I:S')?>" name="19" aanlengt="19"><br></a>
  <a>De inhoud van de tut (voorlopig nog in html):<br>
    <textarea name="tut_main" rows="6" cols="45"></textarea><br></a>
  <input type="hidden" name="action" value="insert">
  <input type="submit" name="Submit" value="OK">
</form>
</html>
 
- SanThe -

- SanThe -

20/05/2007 13:50:00
Quote Anchor link
Je echoot een vreemde date.
Dit bedoel je waarschijnlijk: echo date('Y-m-d H:i:s');
 
Reinhout

reinhout

20/05/2007 13:57:00
Quote Anchor link
sh*t: wat een slecht boek is dit. typisch voor onze bib om dat in de rekken te leggen.
SanThe: Die moderator onder je naam is je niet gestolen :)
Gewijzigd op 01/01/1970 01:00:00 door reinhout
 

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.