Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Frage zu diese funktion
Antwort
 
Themen-Optionen
Alt 11.01.2007, 22:50   Nach oben    #1
didi
Neuer Benutzer
 
Benutzerbild von didi
 
Registriert seit: 14.01.2006
Ort: Datteln
Beiträge: 22
Standard Frage zu dieser Funktion

Hi, ich komme mit dieser Funktion nicht klar. Die fehlermeldung die ich bekomme besagt soweit ich weiss, daß ich zwei "gleiche Aktion" mache...Ist es das "drawpoint" in der Funtion ? muss ich das eventuell umbenennen?
HTML-Code:
Fatal  error: Cannot redeclare drawpoint() in  /var/www/html/web410/html/lms/inc/map.func.php on line  93.
Der Code dazu wäre der hier. In Zeile 93 steht eine "}"
Danke schonmal Gruss Didi

PHP-Code:
<?php

// Funktionen zum laden und anzeigen der Karte
 
require_once('conf.php');
require_once(
'sql.class.php');
 
 
 
// Breitengrad in X-Pixelkoordinate umrechnen
function lon2px($lon) {
 global 
$City;
 return 
round((($lon $City[0]['lon'])/LON_PER_PX $City[0]['x'])/RASTER_SIZE);
}
 
// Längengrad in Y-Pixelkoordinate umrechnen
function lat2px($lat) {
 global 
$City;
 return 
round((($City[0]['lat'] - $lat)/LAT_PER_PX $City[0]['y'])/RASTER_SIZE);
}
 
// Einträge aus der Datenbank laden und nach Pixelkoordinaten gruppieren
function getPoints($id=0) {
 
// Suche ?
 
$q "SELECT u.name, g.lon, g.lat, g.ort FROM ".TABLE_USER." u LEFT JOIN ".TABLE_GEODB."  g ON u.geoid = g.id WHERE 1 ";
 if(
$id$q .="AND u.id = '".mysql_real_escape_string($id)."' ";
 if(
$_GET['name']) $q .="AND u.name LIKE '%".mysql_real_escape_string($_GET['name'])."%' ";
 if(
$_GET['plz']) $q .="AND g.plz LIKE '".mysql_real_escape_string($_GET['plz'])."%' ";
 if(
$_GET['ort']) $q .="AND g.ort LIKE '".mysql_real_escape_string($_GET['ort'])."%' ";
 
 global 
$db;
 
$res $db->query($q);
 
$p=array();
 
 
// Gefundene Einträge durchgehen
 
while($row mysql_fetch_assoc($res)) {
 
  
// Längen- und Breitengrad in Pixelkoordinaten umrechnen
  
$x=lon2px($row['lon']);
  
$y=lat2px($row['lat']);
 
  
// Eintrag in das Array übergeben (X -> Y -> Ort -> N -> Username )
  // Durch das verwenden der X u. Y Pixelkoordinaten als Array-Keys,
  // werden mehrere Einträge auf einem Pixel automatisch zusammengefasst
  
if($x <= MAP_WIDTH && $y <= MAP_HEIGHT && $x && $y 0)   
   
$p[$x][$y][$row['ort']][] = $row['name'];
 }
 return 
$p
}
 
// Liste durchgehen und ausgeben
function generatePoints(&$p) {
 foreach(
$p AS $x => $xs) {
  foreach(
$xs AS $y => $ys) {
   
drawPoint($x$y$ys);
  }
 }
}
 
// Punkt zeichnen
function drawPoint($x$y, &$p) {
 
$s '';
 
$usercount 0;
 
 
// Inhalt des Mouse-Over-DIVs
 
foreach($p AS $ort => $user) {
  
// Nicht der erste Ort für diesen Punkt? -> Zeilenumbruch
  
if($s$s .= '<br/><br/>';
  
  
// Ortsname
  
$s .="<h2>$ort</h2>";
  
  
// Usernamen
  
foreach($user AS $key => $name) {
   
$s.=($key?', ':' ').str_replace("'""\\'",$name);
   
$usercount++;
  }
 }
 
 
// Größe des Punktes ( css-class) anhand der Anzahl der User auf diesem Punkt festlegen
 
foreach($GLOBALS['UserCountClass'] as $dCount => $dClass) {
  if(
$usercount $dCount || $_GET['m'])
   
$cssClass $dClass;
 }
  
 
// Punkt ausgeben
 
echo '<a href="?l='.$x.','.$y.'" onMouseOut="h();" onMouseOver="s(this, \''.$s.'\');" class="'.$cssClass.'" style="left:'.($x*RASTER_SIZE).'; top:'.($y*RASTER_SIZE).'"></a>'."\n";
}
 
?>
__________________
Gruss Didi


---------------------------------------
...guckst Du in Didis Welt...


==============================
Erst wenn die letzte Tankstelle geschlossen,
die letzte Bohrinsel versenkt und der letzte Tropfen Sprit verbrannt sind,
werdet Ihr merken, daß man bei Greenpeace nachts kein Bier kaufen kann.

Geändert von didi (13.01.2007 um 15:11 Uhr).
didi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.01.2007, 23:09   Nach oben    #2
Xean
Erfahrener Benutzer
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 421
Standard

"Cannot redeclare drawpoint()" heißt, dass es die Methode drawpoint() schon gibt. D.h. in den dateien conf.php oder sql.class.php muss se entweder direkt oder durch include() diese methode schon geben.

wenn ich mich nicht irre, kannst du das Problem mit include_once() umgehen.
Ich hab aber keine ahnung, ob man das als "unschön" verpönt, oder ob das in ordnung ist....
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.01.2007, 23:21   Nach oben    #3
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Jau, die Funktion drawPoint() existiert bereits im Sichtbarkeitsbereich und kann somit kein zweites Mal deklariert werden.

Überprüfe mal sorgsam, ob du eventuell die Datei, die du oben gepostet hast (map.func.php), nicht eventuell mehrfach einbindest. Eventuell einfach mal ganz oben ein echo __FILE__ . '<br />'; einfügen.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.01.2007, 23:23   Nach oben    #4
didi
Neuer Benutzer
 
Benutzerbild von didi
 
Registriert seit: 14.01.2006
Ort: Datteln
Beiträge: 22
Standard

Hi, in der config habe ich diese methode nochmal... Das heisst ich muss statt
HTML-Code:
require_once('conf.php');
require_once('sql.class.php');
---
HTML-Code:
include_once('conf.php');
require_once('sql.class.php');
schreiben ?
@Ben danke das mache ich erstmal..

Gruss Didi
__________________
Gruss Didi


---------------------------------------
...guckst Du in Didis Welt...


==============================
Erst wenn die letzte Tankstelle geschlossen,
die letzte Bohrinsel versenkt und der letzte Tropfen Sprit verbrannt sind,
werdet Ihr merken, daß man bei Greenpeace nachts kein Bier kaufen kann.

Geändert von didi (11.01.2007 um 23:35 Uhr).
didi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.01.2007, 00:05   Nach oben    #5
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Hallo,
nein. include_once verhält sich von der Funktionalität her genau wie require_once.

Dadurch, dass du die Funktion schon in der conf.php schon mal hast, ist es klar, dass die Meldung kommt. Du musst dir ein include/require so vorstellen, dass der Inhalt der Datei, den du da einbindest, genau an der Stelle wo die Anweisung, in deinem Fall require_once, steht eingefügt wird.

Heißt also, dass du oben den Inhalt von conf.php einfügst, inkl. der Funktion drawPoint() und unten steht diese Funktion dann nochmal. Das kann ja nicht gehen.

Das Problem ist aber recht einfach zu lösen.
Sollten die Funktionen das gleiche machen, so entscheide dich für eine Datei. Haben sie unterschiedliche Aufgaben und heißen nur gleich, dann benenne mindestens eine der beiden Funktionen um.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.01.2007, 09:16   Nach oben    #6
didi
Neuer Benutzer
 
Benutzerbild von didi
 
Registriert seit: 14.01.2006
Ort: Datteln
Beiträge: 22
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Hallo,
nein. include_once verhält sich von der Funktionalität her genau wie require_once.

Dadurch, dass du die Funktion schon in der conf.php schon mal hast, ist es klar, dass die Meldung kommt. Du musst dir ein include/require so vorstellen, dass der Inhalt der Datei, den du da einbindest, genau an der Stelle wo die Anweisung, in deinem Fall require_once, steht eingefügt wird.

Heißt also, dass du oben den Inhalt von conf.php einfügst, inkl. der Funktion drawPoint() und unten steht diese Funktion dann nochmal. Das kann ja nicht gehen.

Das Problem ist aber recht einfach zu lösen.
Sollten die Funktionen das gleiche machen, so entscheide dich für eine Datei. Haben sie unterschiedliche Aufgaben und heißen nur gleich, dann benenne mindestens eine der beiden Funktionen um.

Grüße, Ben.
Hi,
Jau sie machen verschiedenes...ich habe jetzt die eine einfach mal drawpoint (ohne _ den hier genannt) und siehe da
Danke nochmal Ben

Gruss didi
__________________
Gruss Didi


---------------------------------------
...guckst Du in Didis Welt...


==============================
Erst wenn die letzte Tankstelle geschlossen,
die letzte Bohrinsel versenkt und der letzte Tropfen Sprit verbrannt sind,
werdet Ihr merken, daß man bei Greenpeace nachts kein Bier kaufen kann.
didi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.01.2007, 13:22   Nach oben    #7
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Dann hoffen wir mal, dass du der einzigste bist, der jemals mit dem Code arbeiten muss.

Und warum ist überhaupt in der Konfiguration eine Funktion namens drawPoint()? Nunja, ..
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.01.2007, 17:33   Nach oben    #8
didi
Neuer Benutzer
 
Benutzerbild von didi
 
Registriert seit: 14.01.2006
Ort: Datteln
Beiträge: 22
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Dann hoffen wir mal, dass du der einzigste bist, der jemals mit dem Code arbeiten muss.

Und warum ist überhaupt in der Konfiguration eine Funktion namens drawPoint()? Nunja, ..
Ja danke !! Jetzt bin wieder da wo ich nicht hinwollte. Warum ich die da habe ? Keine Ahnung. Die war da schon.

Ich hoffe das ich der einzige bin der damit arbeitet.. das wird ne Art Userkarte für ne kleine Com.
Was genau schwebt dir vor ? Bitte dann mal um Aufklärung

Gruss didi
__________________
Gruss Didi


---------------------------------------
...guckst Du in Didis Welt...


==============================
Erst wenn die letzte Tankstelle geschlossen,
die letzte Bohrinsel versenkt und der letzte Tropfen Sprit verbrannt sind,
werdet Ihr merken, daß man bei Greenpeace nachts kein Bier kaufen kann.
didi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.01.2007, 17:45   Nach oben    #9
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Hallo,
ähm. Ich kenne jetzt ja die Struktur des Quelltextes nicht, aber es ist ja so, dass der Name conf.php impliziert, dass dort die Konfiguration geladen, gespeichert, was auch immer wird. Auf jeden Fall was mit der Konfiguration!

Ich würde dort niemals nach der Funktion drawPoint() suchen. Warum auch? Die hat da nichts zu suchen.


Wie könnte man so etwas strukturieren? Pseudocode:

file.php
PHP-Code:
<?php

// Die Datei enthält Standardsachen, wie das Starten der Session, Fehlerlevel setzen, Konfiguration laden, ..
require_once('prepend.inc.php');


// Einbinden spezieller Funktionen
require_once(special_functions_for_this_file.inc.php);


// [..] Quelltext, der für diese Datei wichtig und speziell ist.
?>
prepend.inc.php
PHP-Code:
<?php

error_reporting
(E_ALL);

session_start();

// [..]

// Laden der Konfiguration
require_once('config.php');

// Einbinden "globaler" Funktionen, die eh überall gebraucht werden
require_once(functions_for_this_file.inc.php);

?>
Verstehste was ich meine?
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.01.2007, 17:54   Nach oben    #10
didi
Neuer Benutzer
 
Benutzerbild von didi
 
Registriert seit: 14.01.2006
Ort: Datteln
Beiträge: 22
Standard

Zitat:
Verstehste was ich meine?
Jepp, ich werde mir die "drei" nochmal zur Brust nehmen..

Gruss didi
__________________
Gruss Didi


---------------------------------------
...guckst Du in Didis Welt...


==============================
Erst wenn die letzte Tankstelle geschlossen,
die letzte Bohrinsel versenkt und der letzte Tropfen Sprit verbrannt sind,
werdet Ihr merken, daß man bei Greenpeace nachts kein Bier kaufen kann.
didi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.01.2007, 18:01   Nach oben    #12
Bleistift
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 288
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
nein. include_once verhält sich von der Funktionalität her genau wie require_once.
Das stimmt nicht (ganz).
Wenn ein Script, das mit require(_once) nicht geladen werden kann, bricht das Script mit einem "Fatal error" ab. Bei inlcude(_once) wird lediglich eine Warnung ausgegeben.
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.01.2007, 18:02   Nach oben    #13
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Jau, die Funktionalität ist aber die gleiche!
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.01.2007, 11:34   Nach oben    #14
didi
Neuer Benutzer
 
Benutzerbild von didi
 
Registriert seit: 14.01.2006
Ort: Datteln
Beiträge: 22
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Jau, die Funktionalität ist aber die gleiche!
Hi Hi die Funktionalität ist ja im Mom nicht gegeben

Gruss didi
__________________
Gruss Didi


---------------------------------------
...guckst Du in Didis Welt...


==============================
Erst wenn die letzte Tankstelle geschlossen,
die letzte Bohrinsel versenkt und der letzte Tropfen Sprit verbrannt sind,
werdet Ihr merken, daß man bei Greenpeace nachts kein Bier kaufen kann.
didi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten