Mehrere Queries in einem Modul

Gesperrt
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Mehrere Queries in einem Modul

Beitrag von phpchris »

Hallo alle zusammen...

Ich schreibe gerade an einem Modul, bei dem es notwendig ist, mehrere Queries auszuführen.
Kann es sein, dass ich innerhalb eines Modules nur einmal

Code: Alles auswählen

$db->query($query);
ausführen und dann in der While-Schleife auf die Werte zugreifen kann?

Muss ich zwei Instanzen der Klasse bilden, um 2 Queries abzufeuern?
Das kann ich mir nicht vorstellen, da ich ansonsten sicherlich 5-6 Instanzen in diesem Modul brauchen werde...
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

du hast ne while schleife wie hier

Code: Alles auswählen

$db->query($query);

while ($db->next_record()) {

}
und möchtest innerhalb dieser schleife ein weiteres query ausführen benötigst du eine andere db instanz... sonst wird die while schleife abgebrochen...

führst du mehrere querys hintereinander aus benötigst du keine andere instanz... (wenn du die felder halt nicht benötigst...)
*** make your own tools (wishlist :: thx)
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag von phpchris »

Ich lese am Anfang des Skriptes Einstellungen aus:

Code: Alles auswählen

$setting_query = "SELECT name, value FROM ".$cfg['tab']['ankauf_settings'];
$db->query($setting_query);
while($db->next_record())
{
  $_settings_name = $db->f('name');
  $settings[$_settings_name] = $db->f('value');
}
Weiter unten möchte ich Einträge auslesen:

Code: Alles auswählen

    $timeframe_from   = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d")-($between*7),   date("Y")));
    $timeframe_to     = date('Y-m-d');

    $_active_query = "SELECT `id`, `title` FROM ".$cfg['tab']['ankauf_eintraege']. "
                     WHERE `user`='".$user_id."' AND `datum` BETWEEN '".$timeframe_from."' AND '".$timeframe_to."'
                     AND `is_granted`='1'";
                     
    $db->query($_active_query);
    while($db->next_record())
    {
      $_edit_html .= "<tr><td><a href='".$sess->url()."&action=view_entry&id=".$db->f('id').
                     "' class='ankauf_link'>".$db->f('title')."</a></td></tr>\n";
    }
phpMyAdmin findet mit dem ausgegebenen Query Resultate, aber mein Modul nicht.

Vielleicht eine Idee?
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

schau mal ins errorlog und lass dir sicherheitshalber das SQL-Statement mal ausgeben...
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ich würde mir die queries nochmals genau ansehen

eventuell mittels echo ausgeben und in der while schleife vielleicht auch noch ein echo "irgendwas"; reingeben...

vielleicht hast dich bei der variablen ausgabe auch einfach nur verschrieben... -> $_edit_html

etc..... da kann ich aber nur raten...

grundsätzlich funkt das aber ohne probleme

ich hab da mal ein kleines script für nen ganz anderen zweck geschrieben, aber es ist klein genug damit die verschachtelungen ersichtlich werden...

Code: Alles auswählen

<p>SHOW AREAS...</p>

<?php

$db = new Db_Contenido;
$db2 = new Db_Contenido;
$db3 = new Db_Contenido;

$sql = "SELECT * FROM ".$cfg["tab"]["area"]." WHERE parent_id = '0'";

$db->query($sql);
while($db->next_record()) {
  echo "<b>".$db->f("name")."</b> - ".$db->f("idarea")."<br>";
  $sql = "SELECT * FROM ".$cfg["tab"]["actions"]." WHERE idarea = '".$db->f("idarea")."'";
  $db3->query($sql);
  while($db3->next_record()) {
      echo "".$db3->f("name")." - ".$db3->f("idaction")."<br>";
  }

  $sql = "SELECT * FROM ".$cfg["tab"]["area"]." WHERE parent_id = '".$db->f("name")."'";
  $db2->query($sql);
  while($db2->next_record()) {
      echo "--<b>".$db2->f("name")."</b> - ".$db2->f("idarea")."<br>";
      $sql = "SELECT * FROM ".$cfg["tab"]["actions"]." WHERE idarea = '".$db2->f("idarea")."'";
      $db3->query($sql);
      while($db3->next_record()) {
          echo "&nbsp;&nbsp;".$db3->f("name")." - ".$db3->f("idaction")."<br>";
      }
  }
}

?> 
*** make your own tools (wishlist :: thx)
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag von phpchris »

Danke erstmal für die Antworten.

Das SQL-Statement, dass er ausgibt:

Code: Alles auswählen

SELECT e.id, e.title, k.desc FROM con_ankauf_eintraege e INNER JOIN con_ankauf_kategorien k ON e.category=k.id WHERE e.user='9' AND e.datum BETWEEN '2005-06-09' AND '2005-08-04' AND e.is_granted='1'
Im errorlog ist kein Eintrag...

Wenn ich im while ein echo schreibe, gibt er es nicht aus.
Ich denke also, dass ein leeres Resultset zurückkomt, obwohl im phpMyAdmin bekomme ich 2 Ergebnisse...
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag von phpchris »

Halt...


Ich nehme alles zurück!

Falsche Datenbank, in der Datenbank, in der ich bin, ist das Resultset wirklich leer :oops: ...
Der Post ist ein Fall für den Müll, sorry!
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ein fall für den müll ? nein

wenn die frage wieder mal auftauchen sollte kann man auf dieses posting verweisen...
*** make your own tools (wishlist :: thx)
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag von phpchris »

Oder so :wink:

Trotzdem Danke...
Gesperrt