function wird aufgerufen aber nicht ausgeführt

Alles, was PHP betrifft, kann hier besprochen werden.

function wird aufgerufen aber nicht ausgeführt

Postby KALEL » 25. March 2007 13:02

hallo

bin anfänger.

mein problem.
habe hier ein script mit folgendem code

Code: Select all
   $array=getdate();
   $datum="$array[year].$array[mon].$array[mday]";

   $tabelle = "a_list";
   $connect = mysql_connect("$host", "$dbuser", "$dbpw") or die(mysql_error());
   mysql_select_db("$dbank") or die(mysql_error());
   mysql_query("update `$tabelle` set a_lastdate='$datum' where a_id='$aid'");
   mysql_close($connect);

das funktioniert auch.
in diesem code steht auch require "_functions.php";
nun wollte ich diverse sachen in diese _function.php auslagern.

die function unten versuche anstatt obigen code aufzurufen
upd_date_alist();


dort sieht das so aus
Code: Select all
function upd_date_alist() {
   $array=getdate();
   $datum="$array[year].$array[mon].$array[mday]";
echo"$datum"; #steht hier nur zu testzwecken
   $tabelle = "a_list";
   $connect = mysql_connect("$host", "$dbuser", "$dbpw") or die(mysql_error());
   mysql_select_db("$dbank") or die(mysql_error());
   mysql_query("update `$tabelle` set a_lastdate='$datum' where a_id='$aid'");
   mysql_close($connect);
}

das die function aufgerufen wird sehe ich an dem echo. das datum wird aber nicht in der tabelle eingetragen.

habe das auch mit anderen funktionen probiert. geht nicht.

was mache ich hier falsch? :(
mfg
KALEL

xampp: 1.6.0a mit php 5.2.1 aber mysql 4
PHP-Anfänger :(
KALEL
 
Posts: 12
Joined: 25. March 2007 12:09

Postby ManUnix » 25. March 2007 13:41

Hi KALEL,

die Variablen wie "$host", "$dbuser", etc. die nicht in der Funktion gesetzt werden, enthalten keinen Wert.
Damit Variablen, die außerhalb der Funktion gesetzt werden, funktionieren, musst Du sie "global" setzen:

Code: Select all
function upd_date_alist() {
   global $host,$dbuser,$dbpw,$dbank,$aid;

   $array=getdate();
   $datum="$array[year].$array[mon].$array[mday]";
   echo"$datum"; #steht hier nur zu testzwecken

   $tabelle = "a_list";
   $connect = mysql_connect("$host", "$dbuser", "$dbpw") or die(mysql_error());
   mysql_select_db("$dbank") or die(mysql_error());
   mysql_query("update `$tabelle` set a_lastdate='$datum' where a_id='$aid'");
   mysql_close($connect);
}

cu,
Manu
User avatar
ManUnix
 
Posts: 113
Joined: 16. April 2006 15:14

Postby KALEL » 25. March 2007 14:37

ja, das ist schon klar.
die variablen sind global gesetzt.

wie ich erwähnt habe kann ich das ja durch das echo sehen.
alle vars die für den db-zugriff benötigt werden sind vorhanden.
mfg
KALEL

xampp: 1.6.0a mit php 5.2.1 aber mysql 4
PHP-Anfänger :(
KALEL
 
Posts: 12
Joined: 25. March 2007 12:09

Postby Wiedmann » 25. March 2007 14:42

KALEL wrote:ja, das ist schon klar. die variablen sind global gesetzt.

Im Code von ManUnix schon. In deinem nicht.

Also: Über wessen Code reden wir/du jetzt?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KALEL » 25. March 2007 15:23

sorry
mein fehler.

dachte du hättest den code nur gequotet. habe die global zeile übersehen.

wenn ich die setzte geht es. :)
ich habe die var $aid übersehen. :oops:

es reicht auch
global $aid

oder
upd_date_alist($aid)

kurze frage ob ich das jetzt richtig verstanden habe.
wenn ich $aid über den aufruf der function übergebe steht diese NUR der function und kann nicht an das aufrufende script zurückgegeben werden.

übergebe ich $aid nicht der function sondern über global $aid wird eine änderung dieser var auch dem aufrufenden script zurückgegeben.

was ich nicht so ganz verstehe ist, woher kennt die function $aid obwohl ich die doch vorher nie auf global gesetzt habe?
mfg
KALEL

xampp: 1.6.0a mit php 5.2.1 aber mysql 4
PHP-Anfänger :(
KALEL
 
Posts: 12
Joined: 25. March 2007 12:09

Postby Wiedmann » 25. March 2007 15:36

es reicht auch
global $aid

Nicht wirklich...

was ich nicht so ganz verstehe ist, woher kennt die function $aid obwohl ich die doch vorher nie auf global gesetzt habe?

:?: (verstehe die Frage nicht?)

Ansonsten solltest du üferst mal ins PHP-Manual schauen. z.B.:
http://de.php.net/manual/de/language.va ... .scope.php
http://de.php.net/manual/de/functions.arguments.php
http://de.php.net/manual/de/functions.r ... values.php

BTW solltest du dir auch nochmal Gedanken darüber machen, wie du das Dateum "erzeugst".
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KALEL » 25. March 2007 16:52

Nicht wirklich...

du hast natürlich recht.
die function ist ein wenig länger als hier gepostet. und durch die ganze hin und herprobiererei ist da noch ein include dringewesen über das die vars eingelesen wurden.

ist nicht so, dass ich noch nicht ins manual geschaut habe.
aber das ist lang und man muss erst mal wissen wonach man suchen soll.

in ein forum poste ich grundsätzlich erst, wenn ich nichts woanders finde.

aber wie gesagt, ich bin anfänger in php. ich weiss das newbies immer dieselben simplen fragen stellen. in einem anderen forum (wo ich halt profi ;) bin) beantworte ich aber auch simlpe fragen oder gebe zumindest den entscheidenden hinweis wo bzw wie man die lösung finden kann.

was ist gegen die function getdate() einzuwenden?
mfg
KALEL

xampp: 1.6.0a mit php 5.2.1 aber mysql 4
PHP-Anfänger :(
KALEL
 
Posts: 12
Joined: 25. March 2007 12:09

Postby KingCrunch » 25. March 2007 17:05

Möglicherweise will er darauf hinaus, dass date() reicht ^^
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby KALEL » 25. March 2007 17:15

ja, das habe ich schon vermutet.

ich benutze aus dem array aber auch noch die zeit, und da hielt ich es für einfacher dies so zu machen.
mfg
KALEL

xampp: 1.6.0a mit php 5.2.1 aber mysql 4
PHP-Anfänger :(
KALEL
 
Posts: 12
Joined: 25. March 2007 12:09

Postby Wiedmann » 25. March 2007 17:28

ich benutze aus dem array aber auch noch die zeit,

Für?

BTW kann man sich zum Thema Datum auch Gedanken darüber machen, was direkt die Datenbank/Tabellen (-struktur) betrifft.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KingCrunch » 25. March 2007 17:38

Mal abgesehen davon, dass Wiedmann Recht hat und Datumsgeschichten (My)SQL und Co. selbst sehr gut kann, sind über date auch Zeitinformationen generierbar ^^
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25


Return to PHP

Who is online

Users browsing this forum: No registered users and 4 guests