PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Problem mit array_shift und array_pop! (http://www.selfphp.de/forum/showthread.php?t=23724)

held_der_arbeit 03.11.2010 16:21:26

Problem mit array_shift und array_pop!
 
Hey Leute,
ich hab ein wahrscheinlich leicht zu lösendes Problem bei dem ich aber dennoch nicht mehr weiterweis..:(
ich möchte den ersten wert eines array vom letzten wert abziehen und dachte daß das doch mit array_shift und array_pop bzw end() funktionieren sollte.
leider gibt er mir, egal welche form ich nutze, immer nur den ersten wert aus bzw gar keinen.
hier das skript: (nur das wesentliche)


$abfrage="SELECT `E-Total` AS e FROM messdaten_sbc WHERE Datum LIKE '2009-01-%% %%:%%:%%' AND Anlagen_ID=1";

$query=mysql_query($abfrage) or die (mysql_error());

$row=mysql_fetch_array($query);

$anfang = array_shift($row);
$ende = array_pop($row);
$ergebnis = $ende - $anfang;
echo $ergebnis;


Auch wenn ich eine whileschleife benutze funktioniert es nicht.
wäre über ein wenig Hilfestellung sehr erfreut,
gruesse

DokuLeseHemmung 03.11.2010 16:25:29

AW: Problem mit array_shift und array_pop!
 
PHP-Code:

$anfang array_shift($row); // in $row steht nur ein Wert und der wird auhc gelifert.
$ende array_pop($row); // hier ist row schon längst leer 


held_der_arbeit 04.11.2010 08:22:28

AW: Problem mit array_shift und array_pop!
 
guten morgen,

noch mal zum thema array_shift/pop..
ich hab es wie gesagt auch mit einer while loop versucht aber bin zu keinem brauchbaren ergebnis gekommen. Ich bekomme es nicht mal hin, das mir der start und endwert vom array angegeben wird..

$query=mysql_query($abfrage) or die (mysql_error());
while ($row=mysql_fetch_array($query))
{
$anfang= array_shift($row);
echo $anfang;
$ende = array_pop($row);
echo $ende;
}

klappt nicht, wo ist mein denkfehler?

wie würde der richtige code aussehen?
mfg

held_der_arbeit 04.11.2010 09:10:47

AW: Problem mit array_shift und array_pop!
 
alles klar,
so klappts:

$abfrage="SELECT min(`E-Total`) AS emin,max(`E-Total`) AS emax FROM messdaten_sbc WHERE Datum LIKE '2009-%%-%% %%:%%:%

%'AND Anlagen_ID=1";
$query=mysql_query($abfrage) or die (mysql_error());

while ($row=mysql_fetch_row($query))

{

$anfang= $row[0];
$ende= $row[1];
$e_tot = $ende - $anfang;
echo $e_tot;
}


gruss

cortex 04.11.2010 14:00:32

AW: Problem mit array_shift und array_pop!
 
nutze die forentags zur darstellung von quellcodes; die wenigsten hier haben lust, sich irgendein unformatiertes "geschmiere" reinzuziehen.

cx

held_der_arbeit 04.11.2010 16:15:37

AW: Problem mit array_shift und array_pop!
 
hallo leute,
diesmal hängts woanders aber das problem ist im grunde ähnlich denke ich.

Also ich versuche euch mal mei problem zu schildern:
ich habe eine Tabelle messdaten_sbc in der im im abstand von 15 min seit Jahren daten gespeichert werden, z.B Energieertrag in kWh.(von einer PV-Anlage)also alle 15 minuten wird der Zählerstand gespeichert.

Jetzt gibts mehrere von diesen Anlagen in verschiedenen Gebieten plz, dafür gibts ne andere tabelle , auch mit den ausrichtungen der anlagen.

ich möchte jetzt das mir , wenn ich ein Datum und eine postleitzahl eingebe das mir alle anlagen gezeigt werden in dem gebiet stehen und die Energie , die in dem entsprechenden angegebenen Zeitraum (Jahr,monat,tag) gewandelt wurde.

mein herangehen war:



PHP-Code:

$abfrage="SELECT min(`E-Total`) AS emin,max(`E-Total`) AS 

emax,plant,kwp,ausrichtung,neigung,modul  FROM  messdaten_sbc INNER JOIN plants_2 ON 

plants_2.id=messdaten_sbc.Anlagen_ID WHERE messdaten_sbc.Datum LIKE '2008-08-11 %%:%%:%%' 

AND plants_2.plz='14337'";
$query=mysql_query($abfrage) or die (mysql_error());

    while ($row=mysql_fetch_row($query))

    {
    

    $anfang= $row[0];
    echo $anfang;?><br><?php

    $ende
=   $row[1];
    echo 
$ende;?><br><?php
    
    $e_tot 
$ende $anfang;

    echo 
$row[2];?><br><?php
    
echo "kwp:".$row[3]."    installierte Leistung";?><br><?php
    
echo "ausrichtung:".$row[4];?><br><?php
    
echo "neigung:".$row[5];?><br><?php
    
echo "modul :".$row[6];?><br><?php
    
echo "kWh :".$e_tot;?><br><?php

    $E_rel
=$e_tot/$row[3];
    echo 
"kWh/kwp:".$E_rel;

    }

klappt soweit ganz gut, nur das mir nur EINE anlage ausgegeben wird.

Ich vermute das ihr mehr infos braucht, aber ich dachte mir das php-profis auf anhieb einen fehler finden.
Würde mich freuen!

mfg

Xor 06.11.2010 15:05:16

AW: Problem mit array_shift und array_pop!
 
Würde mich nicht als Profi behaupten, Fehler finde ich allerdings genug! (PHP-HTML-Codetrennung, Lesbarkeit, Wartbarkeit....)
Aber all das wird dir wahrscheinlich nicht bei deinem funktionellen Problem helfen...

Versuch es zumindest mal einzugrenzen, indem du z.B. mit einem Client die MySQL-Query auf dem Datenbankserver ausführst um zu schauen, ob dir denn auch nur eine Ergebnis-Zeile ausgegeben wird.

Wenn nicht --> Fehler im PHP-Code.
Wenn schon --> Query überdenken!

PS: Wie kommst du drauf dass es am selben Fehler hängt, wenn du fast nur die Query verändert hast?

held_der_arbeit 08.11.2010 15:37:11

AW: Problem mit array_shift und array_pop!
 
guten tag,
@ xor: es liegt am query..

also ich weis vieleicht warum ich nur ein datensatz bekomme, und zwar:

aus der tabelle plants_2 stehen die abgefrageten daten alle in einer zeile, in der tabelle messdaten müssen die daten emin und emax erst noch in den dem kriterium(Datum) entsprechenden datensätzen gesucht werden.Hier die tabellen:

plants_2:
plant|plz|ausrichtung|neigung|modul|id
------|---|-------------|---------|-------|----
bla |12|-----34-----|----20---|poly--| 1


messdaten_sbc:
id|plants_2_id|Datum|E-Total
--|-------------|--------|---------
1-|----1-------|12.03..|133---- <----emin
.
.
.
99|-----1-----|12.03..| 354 <-----emax

würde man das problem mit zwei whileschleifen und zwei abfragen hinkriegen oder muss man die tabelle weiter normalisieren?
wahrscheinlich gibts ne einfache lösung...aber ich bin halt noch ein newbie:(


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:56:27 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.