Portal > Foren > PHP > PHP-Programmierung > Frage zu diese funktion
Antwort
 
Themen-Optionen
Alt 11.01.2007, 22:50 Nach oben    #1
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
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 426
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
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
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
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
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
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
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
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
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
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
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
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
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, 17:54 Nach oben    #11
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Bei Fragen .. is klar, ne?
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, 18:01 Nach oben    #12
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 298
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
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
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
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
Alt 13.01.2007, 14:44 Nach oben    #15
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Doch. inlucde, wie auch require binden eine Datei ein. Der Unterschied liegt nur im Verhalten, wenn die Datei nicht existiert.

Bei dir wird die Datei bzw. werden die Dateien ja eingebunden. Du hast nur anscheinend eine konfuse Struktur bzw. dein ursprüngliches Problem bezog sich ja auch die Benennung zweier Funktionen.

Aber das gehört ja eigentlich gar nicht mehr hier her. Soll aber als Klarstellung noch hinten angehängt werden.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] thumbnails erstellen - kleine Funktion Jann Hendrik Tutorials 2 16.01.2008 10:38
[PHP] Zeitformate, Datum und Co Jann Hendrik Tutorials 0 05.12.2006 18:48
[SUCHE] Funktion erstellen Jan Gesuche 5 30.10.2006 10:09
[PHP] FTP-Funktionen in PHP nutzen MrNiceGuy Tutorials 0 24.05.2006 14:18
unobtrusive JS: 1 funktion auf mehrere elemente pichfl JavaScript und AJAX 2 26.02.2006 17:45


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:18 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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 33 34 35 36 37 38 39 40 41 42 43 44