php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.06.2006, 15:17  
Benutzer
 
Registriert seit: 23.08.2005
Beiträge: 45
Ministry
Standard mein script funktioniert nur manchmal ??

hi erstmal,

ich habe folgendes problem:
ich habe ein script, dass je nach usereingabe unterschiedliche tabellen abfragt und dann jeweils 20 datensätze pro seite ausgibt.

mein problem ist jedoch, dass das ganze nicht mit jeder tabelle funktioniert.
bei manchen tabellen bekomme ich pro seite immer nur einen datensatz angezeigt. also auf seite 1 den 1., auf seite 2 den 21. usw.

die tabellen sind alle gleich aufgebaut und wurden per script erstellt.

ich denke, dass ich mich wahrscheinlich wieder einmal nur selten blöde anstelle, finde aber einfach den fehler nicht.

hier mal der code ohne die ausgabe :
PHP-Code:
error_reporting(E_ALL);

$sort = (isset($sort)) ? abs((int)$sort) : 0;
if (
$sort == "0"){$orderby "film_release DESC";}
if (
$sort == "1"){$orderby "film_release ASC";}
if (
$sort == "2"){$orderby "film_titel ASC";}
if (
$sort == "3"){$orderby "film_titel DESC";}


    
$start = (isset($start)) ? abs((int)$start) : 0;
    
$limit 20;

    
$result=mysql_query("SELECT herst_kurz FROM herst WHERE herst_id = ".$_REQUEST['stu']."") or die (mysql_error());
    
$search $result;
    
while(
$row mysql_fetch_object($search))
{
    
$label $row->herst_kurz;
    
$resultID mysql_query('SELECT COUNT(film_titel) FROM '.$label.'');
    
$total    mysql_result($resultID,0);

    
$sql 'SELECT * FROM '.$label.' ORDER BY '.$orderby.' LIMIT '.$start.', '.$limit.'' or die (mysql_error());

    
$resultID mysql_query($sql);
    
$result mysql_query($sql) or exit('<pre>'.$sql.'</pre>'.mysql_error());
                                                
    if (!
mysql_num_rows($result))
        {
        echo 
'Ihre Suche ergab keine Ergebnisse';
            }    
    else
        { 
natürlich werden alle klammern wieder geschlossen.
ich habe hier halt erstmal nur den teil gepostet, den ich für den relevanten halte, da die ausgabe wohl eher nicht das problem darstellt. *denk*
wär toll, wenn mir jemand helfen könnte....

danke schonmal...
__________________
ich.com
sie.net
scha.de
Ministry ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.06.2006, 15:24  
Gast
 
Beiträge: n/a
Standard

Was soll das denn?
$resultID = mysql_query($sql);
$result = mysql_query($sql) or exit('<pre>'.$sql.'</pre>'.mysql_error());

Und wo kommt $sort und $start her? Vom Formular, bzw. URL? Dann programmierst du immer noch mit register_globals=on und das ist grauenhaft.

Ansonsten würde ich sagen:

Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

16.14. Warum soll ich nicht SELECT * schreiben?
http://www.php-faq.de/q/q-sql-select.html

Gruß
phpfan
 
Alt 17.06.2006, 20:23  
Benutzer
 
Registriert seit: 23.08.2005
Beiträge: 45
Ministry
Standard

soo...
nach ausgiebiger fehlersuche (debugger hat gar nichts gefunden) habe ich mein problem jetzt immerhin etwas eingegrenzt...
aber ich find den fehler einfach nicht...zumal es ja (wie oben schon geschrieben), mit einer "baugleichen" tabelle funktioniert...
PHP-Code:
<?php
echo '<table width="100%" border="0" cellpadding="6" cellspacing="0" align="left"><tr><td class="result">';
echo 
"Deine Suche ergab ",$total," Treffer.
Sortieren nach: "
;

###hier kommt mein $sort her
if ($sort == "0"){echo'<a href="'.$PHP_SELF.'?sort=1&dar=0&gen=0&stu='.$_REQUEST['stu'].'">
[img]gfx/1.gif[/img] Release</a> | <a href="'
.$PHP_SELF.'?sort=2&dar=0&gen=0&stu='.$_REQUEST['stu'].'">
[img]gfx/1.gif[/img] Titel</a> | <a href="'
.$PHP_SELF.'?sort=3&dar=0&gen=0&stu='.$_REQUEST['stu'].'">
[img]gfx/2.gif[/img] Titel</a>'
;}

### Die anderen 3 if-abfragen habe ich jetzt mal weggekürzt

echo"</td></tr><tr><td>";

     for(
$i=0$i<mysql_num_rows($result); $i++)  ###Die Abfrage dazu findet im oberen Post statt

    
{
       
$film[$i]=mysql_fetch_object($result);
    }

    for(
$i=0$i<mysql_num_rows($result); $i++)

    {
$part explode("-"$film[$i]->film_release3);
$date ''.$part[2].'.'.$part[1].'.'.$part[0].'';

#
# Hier beginnt mein Problem
#
echo '<table><tr><td>[img]acp/pics/'.$label.'/'.$film[$i]->film_pic.'[/img]film_pic.'',event)"
onMouseOut="closeThumbnail()">

[img]acp/pics/'
.$label.'/'.$film[$i]->film_pic_back.'[/img]film_pic_back.'',event)"
onMouseOut="closeThumbnail()"></td><td></td>'
;

echo 
"<td class=\"result\" width=\"100%\" border=\"0\" valign=\"top\">[b]",$film[$i]->film_titel

$res=mysql_query("SELECT herst_id, herst_name FROM herst WHERE herst_kurz = '".$film[$i]->film_herst_kurz."'"); 
$row mysql_fetch_array($res);

echo 
"[/b]
<a href=\"search.php?dar=0&gen=0&stu="
,$row['herst_id'],"\">",
$row['herst_name'],"</a>

Best.: "
,$film[$i]->film_best,"
Release-Date: "
,$date,"
"
;
echo 
"
Beschreibung:
"
;

if (
$film[$i]->film_text == "") {echo "Es wurde keine Beschreibung hinterlegt!";} else { echo $film[$i]->film_text;}

echo 
"

Genre: "
;

if(
$film[$i]->film_genre_1 == "0"){echo "Leider wurde kein Genre angegeben";} 
else { 
$result=mysql_query("SELECT genre_name FROM genre WHERE genre_id = '".$film[$i]->film_genre_1."'");
$row mysql_fetch_array($result);
echo 
" ",$row['genre_name'];}                                                    

echo 
"</td></tr></table></td></tr><tr><td><hr></td></tr><tr><td>";
    }
echo 
"</td></tr></table></td></tr><tr><td>";
?>
sorry, dass der code so ätzend ist...ich habe mich bemüht, ihn noch etwas "ansehnlicher" zu formatieren....

also...
mein problem ist, dass wenn tabelle 1 abgefragt wird, alles wunderbar dargestellt wird, bei tabelle 2 und 3 bekomme ich jedoch auf jeder seite immer nur den ersten datensatz abgezeigt ( bei 20 datensätzen pro seite bekomme ich also datensatz 1, 21, 41 usw. angezeigt).

tabelle 4 funktioniert dann wieder....

ich bin ratlos....
über "echo" bekomm ich alle datensätze angezeigt...
wenns am code liegt....wieso funktioniert es dann bei manchen tabellen??
__________________
ich.com
sie.net
scha.de
Ministry ist offline  
Alt 17.06.2006, 20:29  
Gast
 
Beiträge: n/a
Standard

Ich sehe immer noch kein error_reporting(E_ALL) in dem Script. Und meine Frage hast du auch noch nicht beantwortet.
Zitat:
ich habe mich bemüht, ihn noch etwas "ansehnlicher" zu formatieren....
Setzen, sechs! Das sieht immer noch grauenhaft aus. Zeilenumbrüche, Einrücken und auch ein paar Leerzeichen im Quellcode würden die Sache lesbar machen. Und hast du dir mal den HTML-Code angesehen, den der Browser verarbeiten muss. Dass der nicht das weiße Fähnchen schwingt, ist schon verwunderlich.

Gruß
phpfan
 
Alt 17.06.2006, 20:55  
Benutzer
 
Registriert seit: 23.08.2005
Beiträge: 45
Ministry
Standard

öhem...error_reporting(E_ALL) ist doch schon im oberen teil drin...gaaaanz oben...

$sort und $start hol ich mir tatsächlich über die url...

wobei ich ehrlich gesagt nicht unbedingt denke, dass register_globals schuld am meinem problem ist...und auch nicht, dass ich manchmal "unsichere" variablen nutze...

was die formatierung angeht...naja...in kate sieht das gar nich sooo schlimm aus, wie hier^^
naja..die zeilenlänge ist allerdings etwas "hart" *zugeb*

also... error_reporting ist an, die variablen alle gefüllt.... solange ich einfach nur echo $variable abrufe klappt es bei allen tabellen.

sobald ich jedoch den part von zeile 30 - 54 aus Post 2 wieder einfüge geht der ärger los....
tabelle 1 = 390 datensätze klappt
tabelle 2 = 21 datensätze fehler
tabelle 3 = 18 datensätze fehler
tabelle 4 = 72 datensätze klappt
tabelle 5 = 40 datensätze fehler

mag sein, dass ich ein chaot bin, was meinen code betrifft....
aber trotzdem sollte er meiner meinung nach entweder funktionieren oder eben nicht...
aber mal so, mal so, dass will mir nicht in den kopf....
__________________
ich.com
sie.net
scha.de
Ministry ist offline  
Alt 17.06.2006, 23:45  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Ministry
soo...
nach ausgiebiger fehlersuche (debugger hat gar nichts gefunden)
Der Debugger ist der PHP Parser, dessen Fehlermeldungen im Browser/Client angezeigt werden (wenn man will).

Da Dein Script zuviel HTML-Schnodder enthält und man auch u/o deshalb deshalb den Algorithmus nicht erkennt, sinkt die Lust der Helfer, zu helfen, rapide ab. Dazu kommt noch, daß man bei Deinem Script nicht mehr die Quelle einzelner Variablen ermitteln kann, weil Du sinnfreierweise register_globals auf On gestellt hast.

btw: dieses Thema lese ich nur, weil phpfan, den ich schätze, was dazu geschrieben hat.
 
Alt 17.06.2006, 23:45  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Ministry
soo...
nach ausgiebiger fehlersuche (debugger hat gar nichts gefunden)
Der Debugger ist der PHP Parser, dessen Fehlermeldungen im Browser/Client angezeigt werden (wenn man will).

Da Dein Script zuviel HTML-Schnodder enthält und man auch u/o deshalb den Algorithmus nicht erkennt, sinkt die Lust der Helfer, zu helfen, rapide ab. Dazu kommt noch, daß man bei Deinem Script nicht mehr die Quelle einzelner Variablen ermitteln kann, weil Du sinnfreierweise register_globals auf On gestellt hast.

btw: dieses Thema lese ich nur, weil phpfan, den ich schätze, was dazu geschrieben hat.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Script funktioniert nicht richtig -> fehlermeldungen PHP Tipps 2005-2 2 12.09.2005 11:29
chmoden von Verzeichnis das von php script verwendet wird? PHP Tipps 2005-2 2 04.08.2005 10:15
Kontakrformular funktioniert nur zum Teil PHP Tipps 2005-2 12 18.07.2005 11:24
script funktioniert nicht. PHP Tipps 2005-2 24 05.07.2005 15:51
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
smiley script funktioniert nicht!? HTML, Usability und Barrierefreiheit 3 01.05.2005 17:55
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
Frage: Warum funktioniert dieses PHP/MySQL Script nicht? Datenbanken 9 22.04.2005 06:35
[Erledigt] python script mit php aufrufen... PHP-Fortgeschrittene 1 17.11.2004 17:11
PHP Script aus PHP aufrufen Stümper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04
Header Location funktioniert nicht PHP Tipps 2004 10 12.08.2004 17:11
Script funktioniert nicht PHP Tipps 2004 4 13.06.2004 12:41


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.