Probleme nach Update

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Benutzeravatar
Thomas-RCV
Former team member
Beiträge: 786
Registriert: 1. Aug 2011, 15:06

Re: Probleme nach Update

Beitrag von Thomas-RCV »

Pronlem behoben?
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Re: Probleme nach Update

Beitrag von Gerhard0964 »

Nein, nur blöd ausgedrückt! Ich wollte die Datei hochladen, aber der Server hat sich gewehrt und hinter allem einen Angriff gesehen. Jetzt habe ich es aber geschafft.! Der Code ist im Vorletzten Posting.
Benutzeravatar
fasse
Administrator
Beiträge: 6170
Registriert: 12. Nov 2005, 16:06

Re: Probleme nach Update

Beitrag von fasse »

Gerhard0964 hat geschrieben:Ich habe jetzt überall

Code: Alles auswählen

mysql_
ausgebaut. So wie es hier beschrieben ist
Hallo Gerhard,

wo ist denn das beschrieben? Das mysql_ musst du schon da lassen. Die Funktion query kennt php nicht, mysql_query schon.

Der Codeschnipsel von Thomas enthielt noch einen Fehler. Probier es mal hiermit:

Code: Alles auswählen

$user = new User($gDb, $gProfileFields,  $row['usr_id']);
Gruß
Fasse
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Re: Probleme nach Update

Beitrag von Gerhard0964 »

Hallo Fasse,

hier ist beschrieben, dass mysql_ weg muss:

http://www.admidio.org/dokuwiki/doku.ph ... iffsklasse

OK, ich habe es wieder eingebaut, dann kam der Fehler:

Code: Alles auswählen

Fatal error: Call to undefined method DBMySQL::mysql_query() in /homepages/6/d137089371/htdocs/php/statistik_vsk_neu.php on line 170
Da stand:

Code: Alles auswählen

$result = $gDb->mysql_query($sql);
Nachdem ich mysql_ wieder in Zeile 170 und 172 ausgebaut habe, erhielt ich dies:

Code: Alles auswählen

Fußball:
Insgesamt: 0
Frauen: 0
Männer: 0
Durchschnittsalter: 0 Jahre
Durchschnittsalter Frauen: 0 Jahre
Durchschnittsalter Männer: 0 Jahre
Jüngstes Mitglied: 13
Ältestes Mitglied: 13
Sieht schon ganz gut aus, nur die "0" stört. Da standen bisher Zahlen.

:( :( :(
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Re: Probleme nach Update

Beitrag von Gerhard0964 »

So, schaut mal hier:

http://vsk-germania.de/index.php/mitgli ... istik.html

Die Abfragen an sich laufen wieder. Leider alle mit demselben Ergebnis. :( :( :(

Ich habe überall mysql_query und mysql_fetch_array in query und fetch_array geändert.

Sonst nur noch das fehlende $ bei $user = new User($gDb, $gProfileFields, $row['usr_id']); eingefügt.
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Re: Probleme nach Update

Beitrag von Gerhard0964 »

Kann mir niemand sagen, warum ich kein Ergebnis mehr erhalte?
Benutzeravatar
fasse
Administrator
Beiträge: 6170
Registriert: 12. Nov 2005, 16:06

Re: Probleme nach Update

Beitrag von fasse »

Hallo Gerhard,

in keinem Codebeispiel findet sich u.a. folgende Stelle:

Code: Alles auswählen

$sql = 'SELECT count( `mem_rol_id` )as mitglieder FROM `adm_members` WHERE `mem_rol_id` = \'2\'';
           $result = query ($sql) OR die (mysql_error());
           $data = fetch_object ($result);
Wenn du hier ohne unsere Klasse $gDb arbeitest, dann muss das mysql_ davor. Wenn du mit unserer Klasse $gDb arbeitest, dann muss (wie dokumentiert) das mysql_ entfernt werden, allerdings dann auch die Klasse benutzen. Dein Codeschnipsel sähe dann folgendermaßen aus:

Code: Alles auswählen

$sql = 'SELECT count( `mem_rol_id` )as mitglieder FROM `adm_members` WHERE `mem_rol_id` = \'2\'';
           $result = $gDb->query ($sql) OR die ($gDb->db_error());
           $data = $gDb->fetch_object ($result);
Gruß
Fasse
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Re: Probleme nach Update

Beitrag von Gerhard0964 »

Hallo Fasse,

also ich tu mir da schwer das zu verstehen. Woran erkenne ich, ob ich mit oder ohne Klasse arbeite? Und woher weiß ich, wenn ich mit der Klasse arbeite, wo ich was wie ändern muss?

Ich bin da halt extremer Amateur mit SQL und PHP. Mit dem Alten kam ich einigermaßen zurecht. Leider ist mein bisheriger Helfer nicht mehr so greifbar für mich.

Ich sag daher schon mal vielen Dank für jede Art von Hilfe.

GRuß
Gerhard
Gerhard0964
Beiträge: 129
Registriert: 15. Dez 2007, 17:53

Re: Probleme nach Update

Beitrag von Gerhard0964 »

Hallo Fasse,

OK, Teil eins klappt. Die "einfachen" Ergebnisse habe ich. Warum funktioniert aber das hier nicht:

Code: Alles auswählen

<?php
include_once($_SERVER['DOCUMENT_ROOT']. "/admidio/adm_program/system/common.php");

$anzahl_mitglieder = 0;
$anzahl_maenner = 0;
$anzahl_frauen = 0;
$alter_mitglieder = 0;
$alter_maenner = 0;
$alter_frauen = 0;
$juengster = 200;
$aeltester = 0;

function Geburtstag($gebdat)
{
   $tag = substr($gebdat,8,2);
   $monat = substr($gebdat,5,2);
   $jahr = substr($gebdat,0,4);

   $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
   $gb = mktime(0,0,0,$monat,$tag,$jahr);
   $alter = intval(($jetzt - $gb) / (3600 * 24 * 365));

   return $alter;
}

$sql = "SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
      FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
      LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
      AND row1id1.usd_usf_id = 1
      LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
      AND row4id2.usd_usf_id = 2
      LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
      AND row7id10.usd_usf_id = 10
      LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
      AND row10id11.usd_usf_id = 11
      WHERE rol_id in (6)
      AND rol_valid = 1
      AND rol_cat_id = cat_id
      AND cat_org_id = 1
      AND mem_rol_id = rol_id
      AND mem_begin <= '".DATE_NOW."'
      AND mem_end    > '".DATE_NOW."' 
      AND mem_usr_id = usr_id
      AND usr_valid = 1
      ORDER BY row1id1.usd_value ASC";

$result = $gDb->query($sql);

while($row = $gDb->fetch_array($result))
{
   $user = new User($gDb, $gProfileFields,  $row['usr_id']);

   // Anzahl und Alter der Männer / Frauen
   $geschlecht = $user->getValue("Geschlecht");
   $geburtstag = Geburtstag($user->getValue("Geburtstag"));
   if($geschlecht == 1)
   {
      $anzahl_maenner++;
      $alter_maenner = $alter_maenner+$geburtstag;

   }
   else if($geschlecht == 2)
   {
      $anzahl_frauen++;
      $alter_frauen = $alter_frauen+$geburtstag;
   }else{
      $anzahl_sonstige++;
      $alter_sonstige = $alter_sonstige+$geburtstag;
   }
   if($geburtstag > $aeltester)
   {
      $aeltester = $geburtstag;
   }
   if($geburtstag < $juengster)
   {
      $juengster = $geburtstag;
   }
}

echo "Insgesamt: <b>". ($anzahl_frauen+$anzahl_maenner);
echo "</b><br>";
echo "Frauen: <b>". $anzahl_frauen;
echo "</b><br>";
echo "M&auml;nner: <b>". $anzahl_maenner;
echo "</b><br>";
echo "Durchschnittsalter: <b>". round((($alter_maenner+$alter_frauen)/($anzahl_frauen+$anzahl_maenner)),0);
echo "</b> Jahre <br>";
echo "Durchschnittsalter Frauen: <b>". round(($alter_frauen/$anzahl_frauen),0);
echo "</b> Jahre <br>";
echo "Durchschnittsalter M&auml;nner: <b>". round(($alter_maenner/$anzahl_maenner),0);
echo "</b> Jahre <br>";
echo "J&uuml;ngstes Mitglied: <b>". $juengster;
echo "</b><br>";
echo "&Auml;ltestes Mitglied: <b>". $aeltester;
echo "</b><br><p>";

?>
Da kommt dies raus:
Fußball:
Insgesamt: 0
Frauen: 0
Männer: 0
Durchschnittsalter: 0 Jahre
Durchschnittsalter Frauen: 0 Jahre
Durchschnittsalter Männer: 0 Jahre
Jüngstes Mitglied: 43
Ältestes Mitglied: 43
Ich habe die Funktion auch schon abgeändert und aus $gb $gDb gemacht

Code: Alles auswählen

unction Geburtstag($gebdat)
{
   $tag = substr($gebdat,8,2);
   $monat = substr($gebdat,5,2);
   $jahr = substr($gebdat,0,4);

   $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
   $gDb = mktime(0,0,0,$monat,$tag,$jahr);
   $alter = intval(($jetzt - $gDb) / (3600 * 24 * 365));

   return $alter;
}
Alles was sich ändert ist das Alter der Mitglieder. Von 43 in 13 Jahre.

Gruß
Gerhard
Antworten