mySQL Abfrage in Funktion

zarWolga

Grünschnabel
Hi,

ich hoffe Ihr könnt mir helfen.
Aus einer Datenbank werden die Antworten geholt.
Nun möchte ich die Spalte (Antwort_2) mit dem Ergebnis (Ja) zählen und in Prozenten an der Gesamt Anzahl ausweisen. Soweit so gut

Dieses funktioniert wunderbar:
PHP:
$a='Ja';
$b='Antwort_2';
$b = mysql_query("select $b, count(*) from $TableUmfrage WHERE $b='$a' group by $b", $connect);
while ($gesamt = mysql_fetch_row($b)){$x=$gesamt[1];}
$prozent= round(($x/$menge)*100);
echo "<br \><b>Frage 2. <br \>".$Frage_2."</b><br \>".$x." Personen ".$prozent."% antworteten mit $a.";

wenn ich aber diese Abfrage in einer Funktion unterbringen will:

PHP:
function prozent($a,$b){
		$b = mysql_query("select '$b', count(*) from '$TableUmfrage' WHERE '$b' = '$a' group by '$b' ", $connect);
		while ($gesamt = mysql_fetch_row($b)){$x=$gesamt[1];}
		$prozent= round(($x/$menge)*100);
		echo $prozent;
}
prozent('Ja','Antwort_2');

bekomme ich ein: Warning: "mysql_query(): supplied argument is not a valid MySQL-Link"
Fehler.

$b = mysql_query("select '$b', count(*) from '$TableUmfrage' WHERE '$b' = '$a' group by '$b' ", $connect);

Ich denke mal, dass ich die Variablen falsch escape. Ich habe schon viele Variationen probiert, komme aber nicht weiter.

Vielleicht kann mir da einer helfen oder nen link geben wo ich genaueres finde.

VIELEN DANK schon mal.
zarWolga
 
Bei deiner ersten Version uebergibst du mysql_query einen Verbindungshandle namens $connect. In deiner funktion existiert jedoch kein Verbindungshandle $connect, also musst du den mit an die Funktion uebergeben.

http://de.php.net/variables.scope ist eventuell eine sinnvolle Lektuere fuer dich.
 
Zuletzt bearbeitet:
Weiters hast du eine Variable in der Funktion die keinen Wert hat.
$TableUmfrage ="" daher stimmt dann auch der Sql befehl nicht mehr weil er keine Tabelle als angabe bekommt.

Mfg Splasch
 
Hey super!

habe jetzt Dank euch:

Code:
function prozent($a,$b){
		global $connect;
		global $TableUmfrage;
		$b = mysql_query("SELECT '$b', COUNT(*) FROM '$TableUmfrage' WHERE '$b' = '$a' GROUP BY '$b' ", $connect);
		while ($gesamt = mysql_fetch_row($b)){$x=$gesamt[1];}
		$prozent= round(($x/$menge)*100);
		echo $prozent;
}

einfach die Variablen in globale gewandelt, bekomme aber nun

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result

in while
Code:
($gesamt = mysql_fetch_row($b)){$x=$gesamt[1];}
angezeigt.

Denke ich habe $a noch falsch maskiert, es wird also ein falscher Wert übergeben.

zarWolga
 
PHP:
"SELECT '$b', COUNT(*) FROM '$TableUmfrage' WHERE '$b' = '$a' GROUP BY '$b' "

Dein Query ist falsch.
In SQL werden einfache Anführungszeichen für Inputdaten benutzt, du willst hier aber ein Feld angeben, also musst du `` benutzen.

Probier es mal so:

PHP:
"SELECT `$b`, COUNT(*) 
FROM `$TableUmfrage`
WHERE `$b` = '$a'
GROUP BY `$b`"

Eine Ausgabe von [phpf]mysql_error[/phpf] könnte dir ggf. auch weiterhelfen.
 
Ihr seid SUPER :)

Nun klappt's!

PHP:
function prozent($a,$b){
		global $connect;
		global $TableUmfrage;
		global $menge;
		$c = mysql_query("SELECT `$b`, COUNT(*) FROM `$TableUmfrage` WHERE `$b` = '$a' GROUP BY `$b` ", $connect);
		echo "<br /><b> - ".$TableUmfrage."</b>";
		while ($gesamt = mysql_fetch_row($c)){$x=$gesamt[1];}
		$prozent= round(($x/$menge)*100,2);
		echo $prozent;
}
prozent('Ja','Antwort_2');


THX
 
Zurück