Array bei der Variablen Übergabe

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Steglich, 04.06.2004.

  1. Steglich

    Steglich Thread Starter MacUser Mitglied

    Beiträge:
    206
    Zustimmungen:
    0
    MacUser seit:
    30.05.2003
    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>
     
  2. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    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?
     
  3. Steglich

    Steglich Thread Starter MacUser Mitglied

    Beiträge:
    206
    Zustimmungen:
    0
    MacUser seit:
    30.05.2003
    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.
     
Die Seite wird geladen...