mysql_fetch_assoc mehrfach ausführbar?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mysql_fetch_assoc mehrfach ausführbar?

    Habe ein Problem mit mysql_fetch_assoc. Kann man diese Funktion mehrfach anwenden? Es funktioniert nämlich nicht bei mir. Hier mal der Code. Im Grunde funktioniert alles ganz gut bis auf die Funktion mysql_fetch_assoc in Zeile 28. Zeile 21 wird ordnungsgemäß ausgeführt, aber die nächste mysql_fetch_assoc-Funktion nicht mehr.


    Quellcode

    1. function block() {
    2. global $searchReplace;
    3. $block_lesen = 'SELECT * FROM tarife NATURAL JOIN preise WHERE block = "'.$_GET['block'].'" limit 2,3';
    4. $block_einlesen = mysql_query($block_lesen);
    5. $rows = mysql_fetch_assoc($block_einlesen);
    6. $tarif_lesen = 'SELECT * FROM tarife NATURAL JOIN preise WHERE block = "'.$_GET['block'].'"';
    7. $tarif_einlesen = mysql_query($tarif_lesen);
    8. $preise = '<div id="content"><div id="content_head"><div id="tarif_head">
    9. {image}<h1>{name}</h1><p>{description}</p>
    10. <h2>&euro; '.$preis.' *</h2><h4><a href="order.php?tarif={s_name}">Bestellen</a></h4>
    11. <div class="abr-floaten"></div></div></div><p>&nbsp;</p>
    12. <div id="content_body"><div id="tarif_body"><table cellpadding="0" cellspacing="0">';
    13. foreach ($rows as $key=>$value) {
    14. if (!is_null($value)) {
    15. switch ($key) {
    16. case 'basics':
    17. $preise .= '<tr><td colspan="4" abbr="Abschnitt"><p>Basics</p></td></tr>';
    18. break;
    19. case 'domains':
    20. $preise .= '<tr><td abbr="Listenpunkt"><p class="tooltip">Domains inklusive<span>{tp_domains}</span></p></td>';
    21. while($row = mysql_fetch_assoc($tarif_einlesen)) {
    22. $preise .= '<td abbr="Wert">'.$row['domains'].'</td>';
    23. }
    24. $preise .= '</tr>';
    25. break;
    26. case 'webspace':
    27. $preise .= '<tr><td abbr="Listenpunkt"><p class="tooltip">Webspace<span>{tp_webspace}</span></p></td>';
    28. while($row = mysql_fetch_assoc($tarif_einlesen)) {
    29. $preise .= '<td abbr="Wert">'.$row['webspace'].'</td>';
    30. }
    31. $preise .= '</tr>';
    32. break;
    33. }
    34. }
    35. }
    36. $preise .= '</table></div></div><p>&nbsp;</p><div id="content_footer">
    37. <div id="tarif_footer"><p>{p_footer}</p><p>{footer}</p></div></div></div>';
    38. $rows['preis11'] = $preise;
    39. $search = array_map(create_function('$x', 'return "{".$x."}";'), array_keys($rows));
    40. $replace = array_map(create_function('$x',
    41. 'if ($x == -99) return "<img src=\"images/ja.gif\" alt=\"Vorhanden\" width=\"16\" height=\"16\" />";
    42. elseif ($x == -1) return "unbegrenzt";
    43. else return $x;'), array_values($rows));
    44. $text = str_replace($search, $replace, $preise);
    45. $text = str_replace(array_keys($searchReplace), array_values($searchReplace), $text);
    46. return $text;
    47. }
    Alles anzeigen
  • Hallo,

    nur ein Vermutung, das die Variabel nach dem du sie ausgelesen hast geleert wird.
    Versuch das mal so, mit vorher speichern in ein Array.

    Das habe ich nicht getestet, also nur ein Ideen Ansatz :)

    Quellcode

    1. $qry = mysql_query(deineAbfrage);
    2. $result = array();
    3. while($result[] = mysql_fetch_assoc($qry));
    4. // jetzt hast du in $result das komplette datenbank-ergebnis drin.
    5. for($i=0,$m=count($result);$i<$m;$i++) {
    6. $row_produktanzahl = & $result[$i];
    7. // deine erste do-while-schleife
    8. }
    9. for($i=0,$m=count($result);$i<$m;$i++) {
    10. $row_produktanzahl = & $result[$i];
    11. // deine zweite do-while-schleife
    12. }
    Alles anzeigen
    :lol: :lol: