probleme mit einem Array

dempf

Mitglied
Nun ich habe vollgendes script:
PHP:
function holePartys()
     {
  	global $link;
  	$query .= "Select * FROM partys";
  	$ergebnis = mysql_query( $query);
  	echo "<table border=0>\n";
  	while ( $datensatz = mysql_fetch_array( $ergebnis ) )
  	{
  	echo "<tr>\n";
 	echo "<td><a href=\" viewparty.php?party_id=$datensatz[id]\" class='sf3'>$datensatz[party]</a>".holeAnzahlpics( $datensatz[id] )."</td>";
  	echo "</tr>\n";
  	}
  	echo"</table>\n";
  	if ( ! $ergebnis )
  		die ( "holePartys fatal error: ".mysql_error() );
  	$ret = array();
  	while ( $row = mysql_fetch_array( $ergebnis ) )
  		array_push( $ret, $row );
  	return $ret;
  	}
  	
  function holeAnzahlpics( $id )
     {
  	global $link;
  	$query  = "SELECT * FROM pics WHERE party_id='$id'";
  	$ergebnis = mysql_query( $query, $link );
  	$anzl_reihen = mysql_num_rows( $ergebnis );
  	print "($anzl_reihen) Bilder";
  	if ( ! $ergebnis )
  		die ( "holeAnzahlpics fatal error: ".mysql_error() );
  	$ret = array();
  	while ( $row = mysql_fetch_array( $ergebnis ) )
  		array_push( $ret, $row );
  	return $ret;
  	}
  	
  holePartys();

nun das problem ist, das "holeAnzahlpics( $datensatz[id] )" nicht klappt.

es wirt so ausgegeben:

(5) Bilder (2) Bilder usw.
fest1Array
fest2Array
usw.

es sollte aber so sein:

fest1(5) Bilder
fest2(2) Bilder

was muss ich verändern?

gruss Dempf
 
moin!
also das is vllt ein Durcheinander bei dir...
Also... einmal hast du $link im mysql_query vergessen, das war das erste was mir aufgefallen ist.

Das muss aber nicht zwangsweise das Problem sein, da du ja, wie es aussieht, trotzdem eine mysql ausgabe bekommst.
das problem liegt an einer ganz anderen stelle...
und zwar gibst du mit print in der holeAnzahlpics() immer
Code:
print "($anzl_reihen) Bilder";
aus, allerdings ist dein return ( und zwar das was du in deinen Table schreibst ) etwas anderes.
Code:
$ret = array();
Da der print nicht in den Table geschrieben sondern einfach "unten rangehängt" wird kommt deine "komische" Ausgabe zustande.

Hoffe ich konnte helfen,
mfg,

tiischa

 
Zuletzt bearbeitet:
Code:
   function holeAnzahlpics( $id )
  	 {
  	  global $link;
  	  $query  = "SELECT * FROM pics WHERE party_id='$id'";
  	  $ergebnis = mysql_query( $query, $link );
  	  $anzl_reihen = mysql_num_rows( $ergebnis );
  	  return "($anzl_reihen) Bilder";
  	  }

Das müsste, wenn du keine MYSQL-Fehler hast usw... nun, in verbindung mit holePartys() folgende ausgabe erstellen:

<a href="irgendwas1">Party1</a> (x) Bilder
<a href="irgendwas2">Party2</a> (y) Bilder
<a href="irgendwas3">Party3</a> (z) Bilder

Ich weiß zwar nich wofür du das $ret in der holeAnzahlpics() benutzen wolltest, aber meiner ansicht nach ist das dort überflüssig.

du kannst den Code übrigends auch noch verkürzen indem du anstatt:
Code:
   	  $ret = array();
  	  while ( $row = mysql_fetch_array( $ergebnis ) )
  		  array_push( $ret, $row );
  	  return $ret;

diesen Code in deine holePartys() schreibst:

Code:
   	  while ( $row = mysql_fetch_array( $ergebnis ) )
  		  $ret[] = $row;
  	  return $ret;

es handelt sich zwar nur um eine Zeile, allerdings finde ich es übersichtlicher und du brauchst keine PHP-Funktion extra aufrufen.

Wenn ich wieder am Ziel vorbei geschossen bin, dann bin ich entweder total schräg heute drauf oder du solltest besser beschreiben was du genau möchtest/brauchst.
Hoffe ich hab diesmal geholfen,
mfg,
Tiischa
 
nun vielen dank Tiischa,

habe es nun zawr so gemacht:
PHP:
function holeAnzahlpics( $id )
 {
    $anzahl = 0;
    $query  = "SELECT count(party_id) FROM pics WHERE party_id='$id'";
    $result = mysql_query( $query) or die ( "holeAnzahlpics fatal error: ".mysql_error() );
 
    $anzahl = mysql_result($result, 0);
 
    return $anzahl;
 }

dies kann ich aber gebrauchen:


while ( $row = mysql_fetch_array( $ergebnis ) )
$ret[] = $row;
return
$ret;


gruss Dempf
 
@dempf: Lern erstmal was ein Array ist bevor du postest.

Allgemein wäre es gut für dich, wenn du dich weiterbilden würdest. Auch in Sachen normalität!
 
Zurück