Array bei der Variablen Übergabe

Steglich

Steglich

Aktives Mitglied
Thread Starter
Dabei seit
30.05.2003
Beiträge
206
Reaktionspunkte
0
Anbei habe ich eine kleines php Skript, bei der ein array namens 'cats' übergeben werden soll. Leider funktioniert das aber nicht, obwohl ich den Umweg über die $_POST Methode genommen habe bei register globals auf off.
Hier das Skript
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/transitional.dtd">
   
<html>
<head>
    <title>Neuen Witz eingeben</title>
    
    <meta name="description" content="">
    <meta name="author" content="Thomas Steglich Email [email]info@thomas-steglich.de[/email]">
    <meta name="keyword" content="">
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <meta name="language" content="deutsch">

</head>
<body>

<?php
    $submit=$_POST["submit"];
    $joketext=$_POST["joketext"];
    $aid=$_POST["aid"];
    $cats=$_POST["cats[]"];

    if ($submit) : //Ein neuer Witz wurde mit dem Formular eingegeben
        if ($aid == "") {
            echo("<p>Sie m&uuml;ssen f&uuml;r diesen Witz einen Autor ".
                "ausw&auml;hlen. Klicken Sie im Browser auf 'Zur&uuml;ck' " .
                "und wählen Sie einen aus</p>");
            exit();
        }
        $dbcnx = mysql_connect("localhost", "root", "passwort");
        mysql_select_db("jokes");
        $sql = "INSERT INTO jokes SET
            joketext = '$joketext',
            jokedate = CURDATE(),
            AID = '$aid'";
        if (@mysql_query($sql)) {
            echo("<p>Neuer Witz hinzugef&uuml;gt</p>");
        } else {
            echo("<p>Fehler beim hinzuf&uuml;gen des Witzes: " .
                mysql_error() . "</p>");
        }
        
        $jid = mysql_insert_id();
        
        if ($cats == "") $cats = array();
        
        $numCats=0;
        
        foreach ($cats as $catID) {
            $sql = "INSERT IGNORE INTO jokelookup SET
                        JID = $jid,
                        CID = $catID";
            $ok = @mysql_query($sql);
            if ($ok) {
                $numCats++;
            } else {
                echo("<p> Fehler beim Einfügen in die Kategorie " .
                    " $catID: " . mysql_error() . "</p>");
            }
        }
?>
    <p>Witz wurde <?=$numCats?> Kategorien hinzugef&uuml;gt.</p>
    <p><a href="<?=$SELF_PHP?>">Noch einen Witz eingeben</a></p>
    <p><a href="jokes.php">Zur&uuml;ck zur Witz-Suche</a></p>
<?php
    else : 
        $dbcnx = mysql_connect("localhost", "root", "passwort");
        mysql_select_db("jokes");
        $authors = mysql_query("SELECT ID, Name FROM authors");
        $cats = mysql_query("SELECT ID, Name FROM categories");
    
?>
    <form action="<?=$PHP_SELF?>" method="post">
        <p>Neuen Witz eingeben:<br/>
        <textarea name="joketext" rows="15" cols="45" wrap></textarea>
        </p>
        <p>Autor:
        <select name="aid" size="1">
        <option selected value="">Bitte ausw&auml;hlen</option>
        <option value="">---------</option>
<?php
        while ($author = mysql_fetch_array($authors)) {
            $aid = $author["ID"];
            $aname = $author["Name"];
            echo("<option value='$aid'>$aname</option>\n");
        }
?>
        </select></p>
        <p>Folgenden Kategorien zuordnen:<br/>
<?php
        while ($cat = mysql_fetch_array($cats)) {
            $cid = $cat["ID"];
            $cname = htmlspecialchars($cat["Name"]);
            echo("<input type='checkbox' name='cats[]' value='$cid'>$cname<br/>\n");
        }
?>
        </p>
        <p><input type="submit" name="submit" value="Speichern"</p>
    </form>
<?php
    endif;
?>

</body>
</html>
 
Hallo Thomas,

da sind noch einige Fehler drin.

Generell musst Du, wenn Du eine Variable in einen HTML Code
einbinden möchtest, diese folgender Maßen realisieren:

PHP:
<?php echo $PHP_SELF; ?>

oder

PHP:
<?php echo $variable; ?>


Über $POST['cats[]'] sprichst Du eine Variabel mit dem Namen $cats[]
an, die per POST übergeben wurde. Die Klammern geben dabei nicht
wieder, dass es sich um ein Array handelt.


PS: Kann es sein, dass Du vorher in C programmiert hast?
 
Kurzform

Vielen Dank erst einmal. Jetzt funktioniert es.

Ich dachte halt, vor allem da es in meinem Buch so steht, dass
PHP:
<?=$numCats?>
eine Kurzform von
PHP:
<?php echo $numCats; ?>
ist. Naja war vielleicht früher einmal bei php <4.1.

Das mit C stimmt leider nicht.
 
Zurück
Oben Unten