• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] SQL/PHP -> Fehlersuche

Transformator

New member
Der Fehler :

Code:
Fatal error: Cannot redeclare generateSelectedPflanze() (previously declared in C:\xampp\htdocs\Pflanzliste - Kopie\index.php:175) in C:\xampp\htdocs\Pflanzliste - Kopie\index.php on line 175

Funfact : es wird 2mal gesagt das der fehler in Zeile 175 ist :D

http://pastebin.com/YRRxG2ub

ach und die klammer von der while schleife wir zugemacht
 
OH Feher gefunden :D
ne funktion sollte man echt nicht in ner while schleife erstellen :D
oder zumindest mit einem
Code:
if(!function_exists())
versehen :D

Weil die Frage so kurz wahr mach ich ne anhangsfrage !

Why wird bei diesem Select (er ist sowohl input als auch output für meinen Script) nicht die richtige option gewählt ???

Code : http://pastebin.com/Zbj45Jej
 
Ich hab' keine Ahnung, was du genau von uns wissen willst. Von welcher Option redest du?

PS: dein Skript hat einige Fehler. So wird jedesmal, wenn man sich die Seite anzeigen lässt, ein neuer Eintrag erstellt (oder es kommt eine PHP Fehlermeldung - je nachdem, wie du PHP eingestellt hast).
Zusätzlich sind deine geschachtelten ifs am Anfang komplett unnötig - die kannst du alle zu einem Zusammenfassen.
Dann solltest du dich dringend mit autoincrease in MySQL beschäftigen - damit erzeugt man üblicher Weise die nächste ID.
Weiter sind Zuweisungen in einem if oder where schlechter Stil und können ganz schnell zu Fehlern führen.

PPS: Das:
if(preg_match('/MSIE/i',$_SERVER['HTTP_USER_AGENT']) && !preg_match('/Opera/i',$_SERVER['HTTP_USER_AGENT']))
{
echo "GOD ONTIME SAID: GOOOO AWWWAYYY YOU **** IE USER !";
}
ist wirklich extrem schlechter Stil, schlechter Umgangston und funktioniert beim IE11 auch nicht mehr...
 
zu kkapsner :
NEIN es wird nicht bei jedem seitenaufruf ein Eintrag erzeugt ! und einen Fehler gibt es auch nicht !
autoincase so hieß das :D (Google spuckt bei Mysql id hochzählen nichts richtiges aus)

Code:
if(!function_exists("generateSelectedPflanze")) {
		function generateSelectedPflanze($row) {
			$pliste = getPliste();
			$return = "";
			while($thisrow = mysql_fetch_object($pliste)) {
				$selectPflanze = selectPflanze($row[3], $thisrow->name);
				$name = $thisrow->name;
				$return .= '<option ' . $selectPflanze . '>' . $name . '</option>\n';
			}
			return $return;
		}
	}
	if(!function_exists("generateSelectedPflanzeLast")) {
		function generateSelectedPflanzeLast() {
			$pliste = getPliste();
			$return = "";
			while($thisrow = mysql_fetch_object($pliste)) {
				$name = $thisrow->name;
				$return .= '<option>' . $name . '</option>\n';
			}
			return $return;
		}
	}

du meinst das ?
Ja ich habe zuerst nicht daran gedacht $row zu übergeben :D
deswegen steht die funktion da !
Ich hab sie vergessen da wieder wegzunehmen :D

Ach die IF abfragen am anfang :D liegt daran das ich nicht
weiß wie man in sublime text 3 das zeile umbrechen deaktivert !

Trotzdem Danke !

zu Julian :

zu1: kann ich nicht
zu2: Mit ein wenig überarbeitung ...

Trotzdem NICHT danke Julian !
 
NEIN es wird nicht bei jedem seitenaufruf ein Eintrag erzeugt ! und einen Fehler gibt es auch nicht !
Wenn $_POST["create"] nicht besetzt ist (was es bei einem ersten Besuch oder wenn man nur betrachten will ist) ist das erste if falsch und das else mit dem INSERT wird ausgeführt... außer du verwendest doch einen etwas anderen Code...
autoincase so hieß das :D (Google spuckt bei Mysql id hochzählen nichts richtiges aus)
Es heißt auto increment... https://dev.mysql.com/doc/refman/5.1/de/example-auto-increment.html
du meinst das ?
Ja ich habe zuerst nicht daran gedacht $row zu übergeben :D
deswegen steht die funktion da !
Ich hab sie vergessen da wieder wegzunehmen :D
:confused: Von was redest du?

Ach die IF abfragen am anfang :D liegt daran das ich nicht
weiß wie man in sublime text 3 das zeile umbrechen deaktivert !
Äh... was hat das mit Code zu tun? PHP behandelt Zeilenumbrüche wie Leerzeichen in normalen Code...
 
Tatsächlich (das mit $_POST["create"])
auch wenn er das irgendwie nicht ausführt :D
Code:
} else if(isset($_POST["id"])){

Ich meinte :
Code:
<meta charset="uft-8">
<link rel="stylesheet" href="style.css">
<div id="all">
	<?php
	$i = 0;
	while ($row = MYSQL_FETCH_ROW($result)) {
	if(!function_exists("generateSelectedPflanze")) {
		function generateSelectedPflanze($row) {
			$pliste = getPliste();
			$return = "";
			while($thisrow = mysql_fetch_object($pliste)) {
				$selectPflanze = selectPflanze($row[3], $thisrow->name);
				$name = $thisrow->name;
				$return .= '<option ' . $selectPflanze . '>' . $name . '</option>\n';
			}
			return $return;
		}
	}
	if(!function_exists("generateSelectedPflanzeLast")) {
		function generateSelectedPflanzeLast() {
			$pliste = getPliste();
			$return = "";
			while($thisrow = mysql_fetch_object($pliste)) {
				$name = $thisrow->name;
				$return .= '<option>' . $name . '</option>\n';
			}
			return $return;
		}
	}

	$i = $i + 1;
	echo '
	<form method="post" action="">
	<table
Die Funktionen schreib ich jetzt an den Anfang.

Ach Ja mit dem Code hat das nichts zu tun ...
Da gebe ich dir vollkommen recht !
allerdings ist es in meinem Editor einfach schwerer zu verstehen.
Tja manchmal setze ich auch auf Lesbarkeit :p

PS: Chrome hat mir geholfen ! jetzt vielleicht ein paar Rechtschreibf3hler weniger :p
 
Gibt es auch ne Funktion in PhpMyAdmin mit der man das im nachhinein einstellen kann oder gar mit SQL-Script aktivieren kann
Das geht in PhpMyAdmin recht bequem: geh' in deiner Tabelle auf die "Struktur"-Ansicht und bearbeite dann die Spalte, die den auto increment bekommen soll (muss ein Integer und Primary Key sein). In dem Formular dann kannst du es dann einfach aktivieren.
 
Bitte - gern geschehen.

Bei mir steht da ausgeschrieben AUTO_INCREMENT... hast wahrscheinlich eine andere Version.

Aber ist dein Problem jetzt gelöst? Und wenn nicht: beschreib' es bitte mal ganz detailliert.
 
Zurück
Oben