Thorsten: PHP - Abfrage von 16 feldern gleichzeitig...?

Hi @ all,

habe nen Problem! und zwar habe ich nen Fragebogen erstellt! 16 Fragen, d.h. 16 Felder in der Tabelle. (in der Tabelle befinden sich noch andere werte)

um eine einzelne zelle abzufragen habe ich diesen code verwendet:

<?
if($user_frage16 != NULL)
{
?>
    <tr>
     <td valign="top"><font class=text_0046D5><? echo $user_frage16; ?></font></td>
    </tr>
<?
}
?>

eine frage und eine antwort wird also erst dann angezeigt wenn die zelle mit inhalt gefüllt ist!

Nun habe ich das problem das wenn keine zelle der 16 ausgefüllt wurde, eine meldung kommen soll das bisher noch keine frage beantwortet wurde!

eigentlich kann man das ja mit einer ganz langen if() abfrage machen:

if($user_frage16 != NULL || $user_frage15 != NULL || ...)

nur wäre dann diese if abfrage über 16 felder lang!

nun wäre meine frage ob das so gut wäre, bzw. obs da noch eine andere lösung gäbe??

mfg Thorsten

  1. hi,

    Nun habe ich das problem das wenn keine zelle der 16 ausgefüllt wurde, eine meldung kommen soll das bisher noch keine frage beantwortet wurde!

    du könntest dir vor den abfragen einen zähler definieren, mit dem initialwert 16.
    bei jeder "leer"-abfrage, die zutrifft, ziehst du jetzt eins von diesem zähler ab.

    wenn der zähler dann am ende den wert null hat - tja, dann war wohl keine der fragen beantwortet ...

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. mmhh das hört sich ganz logisch an, hast du da evt. ein beispiel bin im thema php noch nie so bewandert!

      mfg thorsten

      1. Hm,
        also ich muss sagen ich verstehe dein ganzes Konzept noch nicht so ganz.

        Hast du da irgendwo Eingabefelder? und, was ist, wenn der Besucher deine Seite das erste mal betritt?
        Dann denke ich doch soll der Kommentar abgegeben werden? Oder wie verstehe ich das.
        Vielleicht kannst du einfach mal einen Link hinsetzen, damit wir uns das mal anschauen können.

        Gruß
        Martin

      2. hi,

        mmhh das hört sich ganz logisch an, hast du da evt. ein beispiel

        nein.
        das ist derart simpel, dass du es selbst umsetzen können solltest.
        _noch detailierter_ kann man es kaum noch beschreiben, ohne dir gleich den fertigen quellcode auf einem silbertablett zu servieren. dazu ist dieses forum aber nicht da.

        bin im thema php noch nie so bewandert!

        dann wandere halt erst mal ein bisschen ... hier ist deine wanderkarte: http://www.php.net/manual/de/

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. habe d'ehre

    <?
    if($user_frage16 != NULL)
    {
    ?>
        <tr>
         <td valign="top"><font class=text_0046D5><? echo $user_frage16; ?></font></td>
        </tr>
    <?
    }
    ?>

    nur wäre dann diese if abfrage über 16 felder lang!

    nun wäre meine frage ob das so gut wäre, bzw. obs da noch eine andere lösung gäbe??

    Frage/Antworten in ein Array packen und mit foreach abarbeiten.

    BTW: Was bezweckst Du mit <font class..> ;-)
    <td class...> waere korrekter.

    man liest sich
    Wilhelm

  3. Moin!

    <?
    if($user_frage16 != NULL)
    {
    ?>
        <tr>
         <td valign="top"><font class=text_0046D5><? echo $user_frage16; ?></font></td>
        </tr>
    <?
    }
    ?>

    Das geht aber besser:

    [1] Beim nächsten Update des Servers ist register_globals eventuell nicht mehr "on", Dann sit Dein Skript "tot".
    [2] Du hast üblen Spagetty-Code
    [3] Du trennst nicht odentlich zwischen Daten, Logik, Darstellung und Layout.

    Die Antwort auf Deine Frage: Du setzt ein Flag und gibst dem bei einer beantworteten Frage einen anderen Wert.

    <?
    $bolKeineFrageBeantwortet=true;
    $strTdRows='';

    ...

    for ($i=1; $i<17; $i++) {
       $strFeldName="user_frage".$i;
       if($_POST[$strFeldName] != NULL) {
         $bolKeineFrageBeantwortet=false;
         $_POST[$strFeldName]=htmlentities(strip_tags(trim($_POST[$strFeldName])));
         $strTdRows=."<tr><td valign='top' class='text_0046D5'>".$_POST[$strFeldName]".</td></tr>\n";
       }
    }

    if ($bolKeineFrageBeantwortet) {
          $strMsg="Du Dödel hast keine Frage beantwortet!"
       }

    ?>

    <table>
    <? echo $strTdRows; ?>
    <table>

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.