php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 19-02-2008, 09:51
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von skys
denn daraus erkenne ich, wofür n, n.a, a etc stehen. das hatte ich bei asp2php leider nicht verstanden :
ich denke, dann müßte das stimmen, sofern
- tabelle a = tabmitgl
- tabelle b = tabanzeig
Das kann ja nicht sein, in deinem Beispiel und in allen andern hier geht es nur um eine Tabelle. Und die Abfrage von asp2php würde dann so
PHP-Code:
SELECT 
    n
.ktnr
    
n.name,    
    
n.zeit 
FROM  
(
    
SELECT 
        ktnr

        
name
        
zeit 
    FROM
        tab 
    ORDER BY
        zeit DESC
    LIMIT 5

ORDER BY 
    n
.zeit ASC
heissen. Einfach so zur Erklärung: Zuerst wird die innere Abfrage abgesetzt, und dann aus diesem Resultat noch die äussere.
__________________
Gruss
H2O

Geändert von H2O (19-02-2008 um 10:00 Uhr)
Mit Zitat antworten
  #17 (permalink)  
Alt 19-02-2008, 10:21
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von wentz
Schrott ist meine Lösung keines wegs mit etwas überlegen sollte er daraus auch die ersten 5 oder 10 Selectieren können!
Zitat:
Original geschrieben von Skrok
Ich denke schon, bzw. ich weiss gar nicht was ihr da macht. An ne Anzahl von Datensätzen kömm ich auch einfacher .....
OffTopic:

immer diese Noobs mit ihrem Halbwissen ... wie wär's mit Lesen lernen, denn wer lesen kann ist klar im Vorteil
Mit Zitat antworten
  #18 (permalink)  
Alt 19-02-2008, 10:29
Skrok
 Registrierter Benutzer
Links : Onlinestatus : Skrok ist offline
Registriert seit: Aug 2002
Beiträge: 197
Skrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von asp2php
OffTopic:

immer diese Noobs mit ihrem Halbwissen ... wie wär's mit Lesen lernen, denn wer lesen kann ist klar im Vorteil
Ähpffff :P Noobs mit Halbwissen ... :P ... ich bin halt gerne Noob ... sagt mein chef auch immer *g*
Mit Zitat antworten
  #19 (permalink)  
Alt 19-02-2008, 11:15
jonas01
 Registrierter Benutzer
Links : Onlinestatus : jonas01 ist offline
Registriert seit: Feb 2005
Beiträge: 114
jonas01 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Warum so umständlich....

Hol Dir die letzten X Beiträge mit "DESC" aus der Tabelle.
Schreibe die Ergebnismenge in ein Array und sortier das danach einfach ASC nach "id".
(Ich unterstelle nun einfach mal, dass die höchste ID auch der neueste Eintrag ist)

Da Deine zu sortierende Ergebnismenge überschaubar ist wird das wohl die schnellste Methode sein....
Mit Zitat antworten
  #20 (permalink)  
Alt 19-02-2008, 11:18
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Die Datenbank macht das mit den genannten Queries bereits für dich, wahrscheinlich auch um einiges Fixer!
Mit Zitat antworten
  #21 (permalink)  
Alt 20-02-2008, 05:08
skys
 Newbie
Links : Onlinestatus : skys ist offline
Registriert seit: Nov 2007
Ort: D
Beiträge: 69
skys ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo,

@ skrok,
tröstlich, daß noch jemand nicht versteht, was hier teilweise steht.
auch wenn dein beispiel evtl nicht die lösung zu meiner frage wäre, würde ich dich gerne später mal noch dazu fragen, um deinen code zu verstehen.

@ all zur erinnerung:
ich bin nicht fit in php und das heißt, ich kann euch nicht auf eurem niveau des php-wissens abholen, sondern bin darauf angewiesen, daß ihr mich auf meinem niveau des php-wissens abholen könnt.

@ jonas01
Zitat:
Hol Dir die letzten X Beiträge mit "DESC" aus der Tabelle. Schreibe die Ergebnismenge in ein Array und sortier das danach einfach ASC nach "id".
danke, das war vom deutsch her verständlich - aber umsetzen in php kann ich es nicht, da ich mit arrays bisher noch kaum erfahrungen habe.

@ H2O
Zitat:
Das kann ja nicht sein, in deinem Beispiel und in allen andern hier geht es nur um eine Tabelle.
bei mir auch – ich wunderte mich, da ich den eindruck hatte, bei euch ginge es um zwei.

Zitat:
Einfach so zur Erklärung: Zuerst wird die innere Abfrage abgesetzt, und dann aus diesem Resultat noch die äussere.
das habe ich jetzt verstanden, danke. auch für dein beispiel.

PHP-Code:
SELECT 
    n
.ktnr
    
n.name,    
    
n.zeit 
FROM  
(
    
SELECT 
        ktnr

        
name
        
zeit 
    FROM
        tab 
    ORDER BY
        zeit DESC
    LIMIT 5

ORDER BY 
    n
.zeit ASC
habe dieses versucht umzusetzen (also ein subselect bei nur einer tabelle), aber bekomme nur eine weiße seite :

PHP-Code:
<?php
include("incl.php");

$abfrage mysql_query "SELECT tabA.ktonr, tabA.name, tabA.zeit
FROM  ( SELECT ktonr, name, zeit 
FROM tabA ORDER BY zeit DESC LIMIT 5 ) tabA 
ORDER BY tabA.zeit ASC"
;

$ergebnis mysql_query($abfrage);

?>

<div align="center"><b>Tabelle</b></div>
<br>

<table width="100%">
<tr>
 <td width="20%">KtoNr</td>
 <td width="50%">Name</td>
 <td width="30%">Zeit</td>
</tr>
</table>
<hr noshade size="1">

<?php
while ($row mysql_fetch_object($ergebnis)
{
?>

<table width="100%">
<tr>
 <td width="20%">
 <?php
 
echo $row->ktonr;
 
?>
 </td>
 <td width="50%">
 <?php
 
echo $row->name;
 
?>
 </td>
 <td width="30%">
 <?php
 
echo date("d.m.Y - H:i a"$row->zeit);
 
?>
 </td>
</tr>
</table>

<?php

}
@
mysql_close($connect);
?>
nur warum ?

viele grüße, skys
Mit Zitat antworten
  #22 (permalink)  
Alt 20-02-2008, 08:12
Skrok
 Registrierter Benutzer
Links : Onlinestatus : Skrok ist offline
Registriert seit: Aug 2002
Beiträge: 197
Skrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mach mal

PHP-Code:
$ergebnis mysql_query($abfrage)or die(mysql_error()); 
und schau mal obs ne Fehlermeldung gibt.

Gruß
Jan
Mit Zitat antworten
  #23 (permalink)  
Alt 20-02-2008, 09:41
skys
 Newbie
Links : Onlinestatus : skys ist offline
Registriert seit: Nov 2007
Ort: D
Beiträge: 69
skys ist zur Zeit noch ein unbeschriebenes Blatt
Standard

leider keine fehlermeldung, aber trotzdem danke, weil nicht dran gedacht hatte
Mit Zitat antworten
  #24 (permalink)  
Alt 20-02-2008, 10:00
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Eigentlich müsste das gehen. Der Alias tabA ist allerdings etwas unglücklich gewählt, da er gleich ist, wie der Tabellenname. Es spielt zwar nicht wirklich eine Rolle, aber jeder andere Name wäre weniger verwirrend und wenn es nur xx ist.
PHP-Code:
SELECT 
    ktonr
,
    
name
    
zeit
FROM  

    
SELECT 
        ktonr

        
name
        
zeit 
    FROM 
        tabA 
    ORDER BY 
        zeit DESC 
    LIMIT 5 
xx
ORDER BY 
    zeit ASC 
Um das zu testen kopierst du zuerst mal die innere Abfrage ins SQL-Feld von PHPMyAdmin und schaust, was ausgegeben wird. Anschliessend machst du das Gleiche mit der ganzen Abfrage.
Und den Hinweis von Skrok solltest du bei allen Abfragen berücksichtigen.
Das ist übrigens nicht mein Beispiel, sondern jenes von asp2php . Dasjenige mit meiner Abfrage habe ich ja schon früher konkretisiert. Aber ich glaube, diese ist einfacher.
__________________
Gruss
H2O
Mit Zitat antworten
  #25 (permalink)  
Alt 20-02-2008, 10:14
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$abfrage mysql_query "SELECT tabA..."
Das mysql_query gehört hier nicht hin!

Setzt mal an den Beginn deiner Datei:
PHP-Code:
error_reportingE_ALL );
ini_set'display_errors''On' ); 
dann solltest du sicher ein paar Fehlermeldungen sehen!
Mit Zitat antworten
  #26 (permalink)  
Alt 20-02-2008, 10:27
skys
 Newbie
Links : Onlinestatus : skys ist offline
Registriert seit: Nov 2007
Ort: D
Beiträge: 69
skys ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dankeeeeee

erstmal : per sql klappt beides problemlos

aber das viel entscheidendere :
ich hatte es die ganze zeit ganz anders verstanden, teils dachte ich, die variablen müßten tabellennamen sein oder etwas bestimmtes, was ich eben nicht wußte.


dämpfer dennoch : per php-datei, erhalte ich nur eine weiße seite, trotz error reporting etc. das ist der code :

PHP-Code:
<?php
error_reporting
E_ALL );
ini_set'display_errors''On' );

include(
"incl.php");

$abfrage "SELECT ktonr, name, zeit FROM 
( SELECT ktonr, name, zeit FROM taba ORDER BY zeit DESC LIMIT 5 ) 
xx ORDER BY zeit ASC"
;

$ergebnis mysql_query($abfrage)or die(mysql_error());
?>

<body>
<div align="center"><b>Tabelle</b></div>
<br>

<table width="100%">
<tr>
 <td width="20%">KtoNr</td>
 <td width="50%">Name</td>
 <td width="30%">Zeit</td>
</tr>
</table>
<hr noshade size="1">

<?php
while ($row mysql_fetch_object($ergebnis)
{
?>

<table width="100%">
<tr>
 <td width="20%">
 <?php
 
echo $row->ktonr;
 
?>
 </td>
 <td width="50%">
 <?php
 
echo $row->name;
 
?>
 </td>
 <td width="30%">
 <?php
 
echo date("d.m.Y - H:i a"$row->zeit);
 
?>
 </td>
</tr>
</table>
</body>

<?php
}
@
mysql_close($connect);
?>
noch eine frage für später :
kann ich ini_set( 'display_errors', 'On' ); genauso auch wieder off setzen : ini_set( 'display_errors', 'Off' ); ?

immerhin mal wieder ein lichtblick
Mit Zitat antworten
  #27 (permalink)  
Alt 20-02-2008, 10:33
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
kann ich ini_set( 'display_errors', 'On' ); genauso auch wieder off setzen : ini_set( 'display_errors', 'Off' ); ?
Jep, das kannst du machen!

Du wirst dein Skript ein wenig debuggen müssen. Den Code teilweise auskommentieren und mit Testausgaben nach der Stelle suchen, wo das Skript nichts mehr tut!
Mit Zitat antworten
  #28 (permalink)  
Alt 22-02-2008, 07:26
skys
 Newbie
Links : Onlinestatus : skys ist offline
Registriert seit: Nov 2007
Ort: D
Beiträge: 69
skys ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo,

nochmal eine kleine nachfrage zu
ini_set( 'display_errors', 'On' ); bzw ini_set( 'display_errors', 'Off' );

inwiefern ist das hinsichtlich der sicherheit relevant ?
ich meine mal gelesen zu haben, daß off besser sei, damit nicht jeder bei einem fehler auch gleich alle informationen aufgetischt bekommt, noch dazu evtl solche, die ihn gar nix angehen.

stimmt das so oder wie siehts damit aus ?

viele grüße, skys
Mit Zitat antworten
  #29 (permalink)  
Alt 22-02-2008, 09:06
jonas01
 Registrierter Benutzer
Links : Onlinestatus : jonas01 ist offline
Registriert seit: Feb 2005
Beiträge: 114
jonas01 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von skys

@ jonas01

danke, das war vom deutsch her verständlich - aber umsetzen in php kann ich es nicht, da ich mit arrays bisher noch kaum erfahrungen habe.
Hi!

So habe ich das ungefähr gemeint....


PHP-Code:
<?
$sql
="SELECT id,spalte_a,spalte_b,spalte_c FROM tabelle ORDER BY id DESC LIMIT 0,15";
$res=mysql_query($sql)or die(mysql_error());
while(
$row=mysql_fetch_array($res)){
    
$id_arr[]=$row['id'];
    
$spaltea_arr[]=$row['spalte_a'];
    
$spalteb_arr[]=$row['spalte_b'];
    
$spaltec_arr[]=$row['spalte_c'];
}
/* Nun sind die Werte im Array... das Array können wir nun "rückwärts ausgeben".

*/

$backcount_start=count($id_arr)-1// Wird immer, sofern mindestens 15 Datensätze vorhanden, 14 ergeben.

while($backcount_start>=0){
    echo 
$id_arr[$backcount_start]."<br>";
    echo 
$spaltea_arr[$backcount_start]."<br>";
    echo 
$spalteb_arr[$backcount_start]."<br>";
    echo 
$spaltec_arr[$backcount_start]."<br>";
    
    
$backcount_start--; // Schleife wird exakt 15mal durchlaufen
    
    
}

?>
Mit Zitat antworten
  #30 (permalink)  
Alt 23-02-2008, 07:13
skys
 Newbie
Links : Onlinestatus : skys ist offline
Registriert seit: Nov 2007
Ort: D
Beiträge: 69
skys ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi jonas01,

vielen dank ! (aber da wäre ich längst nicht drauf gekommen)

und vor allem : es funktioniert
sogar fehlermeldungen bekam ich dieses mal, weil ich etwas kleines vergessen hatte

nun versuche ich es noch zu begreifen für ein evtl nächstes mal.

$row=mysql_fetch_array($res)
ist das so also der normalfall, wie ich ein array übergebe ?

$id_arr[]=$row['id'];
weshalb wird eigentlich immer row für so viele variablen genommen ?
nur, weil es zeile heißt ? (dachte anfangs mal, es müßte row heißen)

warum passiert nichts, wenn ich das back weglasse ?
ich hätte gedacht, dann würde es vielleicht wieder andersrum sortieren :
PHP-Code:
$backcount_start=count($id_arr)-1// Wird immer, sofern mindestens 15 Datensätze vorhanden, 14 ergeben.

while($backcount_start>=0){
    echo 
$id_arr[$backcount_start]."<br>";
    echo 
$spaltea_arr[$backcount_start]."<br>";
    echo 
$spalteb_arr[$backcount_start]."<br>";
    echo 
$spaltec_arr[$backcount_start]."<br>";
    
    
$backcount_start--; 
im php manual steht nur etwas über count, aber backcount_start ist schon ein feststehender begriff, oder ?

$backcount_start>=0 nur, weil die id bei 1 anfängt zu zähen oder ?
dh die erste LIMIT-parameter 0 hat mit der schlußendlichen aufzählung eigentlich gar nichts mehr zu tun (sondern eben nur mit der ersten sortierung) ?
und die while-schleife bewegt sich nur innerhalb der LIMIT-angaben, eben dem zuvor abgerufenen query *laut denk*

$backcount_start--; // Schleife wird exakt 15mal durchlaufen
-- ist also genau x-mal durchlaufen.
demnach könnte man hier auch etwas wie zb nur 8x durchlaufen angeben ?
wie müßte das heißen ? $backcount_start 8; anscheinend nicht.

dank dir sehr für deine arbeit

viele grüße, skys
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:12 Uhr.