• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Falsche ausgabe

Status
Für weitere Antworten geschlossen.

Gimli

Mitglied
Erstmal der Code:

PHP:
$query = "SELECT * FROM cols";
    $rsl = mysql_query($query);
    while($cn=mysql_fetch_object($rsl)) {
        $boxname = $cn->boxname; // Boxname wird definiert
        $text = format($cn->text); // Inhalt der Box wird definiert
        $typ = $cn->typ; // Typ wird definiert (norm für normale Box, z.B. online für ein Extra
        
        $query2 = "SELECT * FROM extras"; // $query für auslesen der installierten extras.
        $rsl2 = mysql_query($query2); // $rsl (Result) der Query
        while($st=mysql_fetch_object($rsl2)) { // while shleife zum durchgehen aller Extras
            $typname = $st->name; // Typname auslesen und definieren
            $disabled = $st->disabled; // Auslesen ob das Extra aktiviert oder Deaktiviert ist
            
            if($typname == $typ) { // Stimmt der Typname mit dem Typ der Box überein?
                $text .= "<br><br>"; // Wenn ja dann zwei neue Zeilen dem Text hinzufügen
                if($disabled == 1) { // Ist das Extra deaktiviert?
                    $text .= "Deaktiviert!"; // Wenn ja dann 'Deaktiviert' dem Text hinzufügen
                }
                else $text .= "test"; // Andernfalls funktion für Extra starten
            }
            elseif($typ == "norm") $text .= "<br>"; //Andernfalls prüfe ob der Boxtyp der Typ 'norm' ist. // Wenn ja neue Zeile zum Text hinzufügen
            else $text = "<br><br>Die angegebe Erweiterung existiert nicht"; // Andernfalls Den String als Text definieren
            unset($disabled,$typname);
        }
        $boxes .= '<div class="left_top"></div>
                   <div class="left_mid"><h1>'.$boxname.'</h1>
                   <p>'.$text.'</p>
                   </div>
                   <div class="left_bot"></div>
                  ';
        unset($text,$disabled,$typname);
    }
Warum giebt er immer nur 'Die angegegbene Erweiterung existiert nicht' aus, obwohl sie existiert? Mach ich was falsch?

Ich hoffe der Code ist gut beschrieben und mir kann jemand antworten.

Kann mir keiner helfen?
 
Zuletzt bearbeitet:
also ich versteh ja eig so gut wie garnix von php, aber wo wird da überhaupt was ausgegeben. da wird ja immer nur $text definiert. theoretisch jedoch müsste der code klappen, sofern die daten in der db richtig sind. kannste die mal bitte kopieren??
 
das steht da aba nich mehr im code drin, oda??? aba zur beruhigung... ich hab auch so ein problem. kannst ja ma in meinen logout thread gucken
 
hab mal etwas aufgeräumt. Ich hasse unübersichtlichen Code
PHP:
<?php
function trigger() {
	trigger_error("[".mysql_errno()."] ".mysql_error(), E_USER_ERROR);
}
$boxes = "";
$rsl = mysql_query("SELECT * FROM cols") or trigger();
while($cn = mysql_fetch_object($rsl)) {
    $text = format($cn->text);
    $rsl2 = mysql_query("SELECT * FROM extras") or trigger();
    while($st = mysql_fetch_object($rsl2)) {
    	if($st->name == $cn->typ) {
        	$text .= "<br><br>";
            $text .= ($disabled) ? "Deaktiviert" : "test";
        }
        else {
        	$text .= ($cn->typ == "norm") ? $text .= "<br>" : "<br><br>Die angegebene Erweiterung existiert nicht";
		}
	}
    $boxes .= 
    <<<EOF
    <div class="left_top"></div>
    <div class="left_mid"><h1>{$cn->boxname}</h1>
    <p>{$text}</p>
    </div>
    <div class="left_bot"></div>
    EOF;
}
?>

Schaumal ob die Logik so stimmt, und dann mach ein paar Testausgaben, dann soltest du den Fehler spätestens entdecken.
Da ich nicht weiß welche Daten von wo wie da rein kommen, kann ich dir in Punkto Logik des Programms nicht weiterhelfen.
 
möchte dich jetzt nicht berichtigen aber ich glaube das du bei einem heredoc keine anderen zeichen außer einem semikolon in der zeile mit dem end identifyer haben darfst ^^
 
ich habs jetzt gelöst:
PHP:
function get_boxes($s) {
    $query = "SELECT * FROM cols";
    $rsl = mysql_query($query);
    while($cn=mysql_fetch_object($rsl)) {
        $boxname = $cn->boxname; // Boxname wird definiert
        $text = format($cn->text); // Inhalt der Box wird definiert
        $boxtyp = $cn->typ;
        
        $query2 = "SELECT * FROM extras WHERE name = '".$boxtyp."'"; // $query für auslesen der installierten extras.
        $rsl2 = mysql_query($query2); // $rsl (Result) der Query
        while($st=mysql_fetch_object($rsl2)) { // while shleife zum durchgehen aller Extras
            $disabled = $st->disabled; // Auslesen ob das Extra aktiviert oder Deaktiviert ist
            
            $text .= "<br><br>"; // Wenn ja dann zwei neue Zeilen dem Text hinzufügen
            if($disabled == 1) { // Ist das Extra deaktiviert?
                $text .= "Deaktiviert!"; // Wenn ja dann 'Deaktiviert' dem Text hinzufügen
            }
            else {
                $text .= get_extra($st->name); // Andernfalls funktion für Extra starten
            }
            $xy = 1;
            unset($disabled,$typname);
        }
        if($xy == 0) {
            if($cn->typ == "norm") {
                // Nichts soll passieren
            }
            else {
                $text .= "<br><br>Extra ist nicht installiert!";
            }
        }
        else {
            //
        }
        $boxes .= '<div class="box_top"></div>
                   <div class="box_mid"><h1>'.$boxname.'</h1>
                   <p>'.$text.'</p>
                   </div>
                   <div class="box_bot"></div>
                  ';
        unset($text,$disabled,$typname,$xy);
    }
    echo $boxes;
}
 
mal eben zum design, man verschachtelt solche querys nicht, sowas buffert man, oder führt vorerst aus. mysql muss nicht immer damit gequält werden wenn du die daten schon hast.
 
doch, es muss immer neu abgefragt werden, da sich der Typ immer ändert (die Query somit auch)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben