If Abfrage in einer While Schlife in einer Funktion auslagern
Simone
- php
Hallo ich habe ein Problem bzw. ich möchte mein Code sinnvoll verkürzen um in Zukunft nicht alles doppelt zu schreiben ich möchte in meiner while Schleife folgenden Code auslagern "if(strlen($row['ANSPRECHPARTNER']) > $max_string_laenge){ "...
Nur wenn ich das mache kommt keine Variable mehr an.
Also ich habe folgendes versucht den ganzen Code komplex in einer Funktion weiter oben im Code auszulagern
function Aufruf() { hier steht der Code } und dann habe in meiner while Schleife den alten Code durch den Aufruf Aufruf(); aufgerufen wenn ich das so mache bleiben alle table data leer.
Kann mir jemand helfen oder sagen was ich falsch mache? Gruß Simone
///////////////
echo $table_th;
while ($row = mysql_fetch_assoc($rs))
{
$data=Array();
$id = $row['ID'];
if(strlen($row['ANSPRECHPARTNER']) > $max_string_laenge)
{ $filter = strip_tags(substr($row['ANSPRECHPARTNER'],0,($max_string_laenge)));
$var_ansprechpartner = $filter.' ...'; }
else { $var_ansprechpartner = $row['ANSPRECHPARTNER']; }
$data["var_ansprechpartner"] = $var_ansprechpartner;
if(strlen($row['VORNAME']) > $max_string_laenge)
{ $filter = strip_tags(substr($row['VORNAME'],0,($max_string_laenge)));
$var_vorname = $filter.' ...'; }
else { $var_vorname = $row['VORNAME']; }
$data["var_vorname"] = $var_vorname;
if(strlen($row['NACHNAME']) > $max_string_laenge)
{ $filter = strip_tags(substr($row['NACHNAME'],0,($max_string_laenge)));
$var_nachname = $filter.' ...'; }
else { $var_nachname = $row['NACHNAME']; }
$data["var_nachname"] = $var_nachname;
if(strlen($row['ORT']) > $max_string_laenge)
{ $filter = strip_tags(substr($row['ORT'],0,($max_string_laenge)));
$var_ort = $filter.' ...'; }
else { $var_ort = $row['ORT']; }
$data["var_ort"] = $var_ort;
echo make_table_td($data);
} ?>
</table>
Hallo ich habe ein Problem bzw. ich möchte mein Code sinnvoll verkürzen um in Zukunft nicht alles doppelt zu schreiben ich möchte in meiner while Schleife folgenden Code auslagern "if(strlen($row['ANSPRECHPARTNER']) > $max_string_laenge){ "...
Nur wenn ich das mache kommt keine Variable mehr an.
Wie auslagern?
warum kommt keine Variabel an?
Wie rufst Du die Funktion auf?
Sorry aber Dein Quelltext ist nicht so richtig Zielführend!
Der funktioniert oder etwa nicht?
Welche Fehelr werden denn angezeigt?
TomIRL
Wie auslagern?
warum kommt keine Variabel an?
Wie rufst Du die Funktion auf?
Sorry aber Dein Quelltext ist nicht so richtig Zielführend!
Der funktioniert oder etwa nicht?
Welche Fehelr werden denn angezeigt?
Es wurde kein Fehler angezeigt das Script was ich da stehen habe funktioniert nur wenn ich es auslage kommt nichts. Das ist alles in meinem ersten posting zulesen
Hi Simone,
Du solltest Dir, der Übersicht wegen, einen sauberen Schreibstil (Code) angewöhnen. Schreibe z.B. die { und } in eigene Zeilen, dann blickst Du einfach besser durch.
Eine Verkürzung scheint hier sinnvoll und möglich. Du darfst aber nicht vergessen, dass Du die Variablen auch an die Funktion übergeben mußt, sofern diese nicht global sind. Vielleicht ist das schon Dein Problem und Du hast einfach nicht daran gedacht, Argumente zu übergeben oder global zu definieren.
MfG
Danny
Vielleicht ist das schon Dein Problem und Du hast einfach nicht
»»daran gedacht, Argumente zu übergeben oder global zu definieren.
Wie definiere ich denn meine Variable in der Funktion so das die Variable auch noch außerhalb der Funktion sichtbar ist?
Mit global $variable funktioniert es bei nicht.
Hi,
global zu definieren ist in Deinem Fall gar nicht nötig, siehe meine Antwort weiter oben.
Hi,
global zu definieren ist in Deinem Fall gar nicht nötig, siehe meine Antwort weiter oben.
Der Code ist richtig und funktioniert auch aber damit ich nicht so ein langen Rattenschwanz habe ich es zusammengepackt. Nun möchte ich den Code nur noch in einer Funktion auslagern aber wenn ich der Funktion die Variablen übergebe kommte es beim Funktionsaufruf zum Parse Error
ich schreibe folgendes:
function create_table_string($row['ANSPRECHPARTNER'], $max_string_laenge, $row['VORNAME'])
{
...
}
was ist denn da falsch? $row['ANSPRECHPARTNER'] ist die Variable die aus der Datenbank kommt.
da steckt ein syntaktischer Fehler drin.
function create_table_string($row['ANSPRECHPARTNER'], $max_string_laenge, $row['VORNAME'])
Du kannst hinter function als Argument kein assoziatives Array mit Schlüssel angeben, das geht nur wenn Du die Funktion aufrufst:
create_table_string($row['ANSPRECHPARTNER'], etc);
...
function create_table_string($ansprechpartner, etc.)
...
create_table_string($row['ANSPRECHPARTNER'], etc);
...
function create_table_string($ansprechpartner, etc.)
...
Das habe ich mir auch erst gedacht aber mit function create_table_string($ansprechpartner, etc.) geht es auch nicht obwohl ich zuvor die varibale in die $ansprechpartner geschrieben habe.
$ansprechpartner = $row['ANSPRECHPARTNER'];
Keine Ahnung wo der Fehler ist...
Sonst hat es immer funktioniert aber hier nicht
Mhmmmm, poste doch mal den aktuellen Stand, dann ist der Fehler bestimmt leicht zu finden.
hi,
Das habe ich mir auch erst gedacht aber mit function create_table_string($ansprechpartner, etc.) geht es auch nicht obwohl ich zuvor die varibale in die $ansprechpartner geschrieben habe.
$ansprechpartner = $row['ANSPRECHPARTNER'];
wer sagt, dass du letzteres machen sollst/musst?
du scheinst immer noch nicht verstanden zu haben, wie man variablen als aufrufparameter an funktionen uebergibt.
function create_table_string($ansprechpartner, etc.)
{
// in dieser funktion steht dir jetzt eine variable
// mit dem namen $ansprechpartner zur verfuegung,
// mit der du _innerhalb_ der funktion arbeiten kannst
}
aufrufen kannst du das ganze dann z.b. so:
$rueckgabeempfaenger = create_table_string($row['ANSPRECHPARTNER'], etc.);
gruss,
wahsaga
Hello,
function str_limit($instr, $len, $apx=" ...", $tags=true, $slashes="gpc")
{
## tags entfernen
if($tags)
{
$instr = strip_tags($instr);
}
## slashes entfernen
if(($slashes == "force") or
($slashes == "gpc" and get_magic_quotes_gpc()) or
($slashes == "run" and get_magic_quotes_runtime()) or
($slashes == "both" and (get_magic_quotes_gpc() or get_magic_quotes_runtime()))
{
$instr = stripslashes($instr);
}
## führende und anhängende Leerzeichen?
# $instr = trim($instr);
## Länge kappen
if($strlen($instr) > $len)
{
$instr = substr($instr,0$len).$apx; # apx steht für Appendix
}
return $instr;
}
echo $table_th;
while ($row = mysql_fetch_assoc($rs))
{
$data=Array();
$data[$id] = $row['ID'];
$data["var_ansprechpartner"] = str_limit($row['ANSPRECHPARTNER'],$max_string_laenge);
$data["var_vorname"] = str_limit($row['VORNAME'],$max_string_laenge);
$data["var_nachname"] = str_limit($row['NACHNAME']$var_nachname,$max_string_laenge);
$data["var_ort"] = str_limit($row['ORT'],$max_string_laenge);
echo make_table_td($data);
}
?>
</table>
<!--
Liebe Grüße aus http://www.braunschweig.de
Tom
while ( $row = mysql_fetch_assoc($rs) )
{
$id = $row['ID'];
$maxlen = $max_string_laenge;
$data = Array();
$data["var_ansprechpartner"] = get_field($row, 'ANSPRECHPARTNER', $maxlen);
$data["var_vorname"] = get_field($row, 'VORNAME', $maxlen);
$data["var_nachname"] = get_field($row, 'NACHNAME', $maxlen);
$data["var_ort"] = get_field($row, 'ORT', $maxlen);
echo make_table_td($data);
}
// ==============================================
function get_field($row, $field, $maxlen)
{
if (strlen($row[$field]) > $maxlen) // crop ?
{
$filter = strip_tags(substr($row[$field],0,($maxlen)));
$str = $str.' ...';
}
else
{
$str = $row[$field];
}
return $str;
}