fehler im program

Kampfwurst_Hugo

Neuling
Thread Starter
Mitglied seit
10.09.2005
Beiträge
626
Ort
Vlbg/Österreich
hallo

Ich habe folgendes problem.

Beim folgenden Script stimmt was nicht denn ich bekomme wenn ich neue artikel eintrage nur den Titel und den Coment angezeigt.

Nicht aber den Amount und den Place.

Wieso das?? Wo ist der Fehler??



<?php

// Systemeinstellungen

$id = "root";
$pw = "";
$host = "";
$database = "stock";
$table = "article";

// Einstellungen Ende

$conn_id = mysql_connect($host,$id,$pw);
mysql_select_db($database,$conn_id);

// Löscht einen Artikel aus der Datenbank
if ($action == "loeschen") {
mysql_query("delete from $table where nr = '$nr'");
$meldung = "Article is deleted";

// Aktualisiert einen Datensatz
} elseif($action == "save") {
mysql_query("update $table set title = '$title', amount = '$amount', content = '$content', place = '$place' where nr = '$nr'");
$meldung = "Article is updated";

// Fügt einen neuen Artikel hinzu
} elseif ($action == "neu") {
mysql_query("insert into $table (title,amount,content,place) VALUES ('$title','$amount','$content','$place')");
$meldung = "Article is added";

// Selektiert den ausgewählten Artikel zum Updaten
} elseif ($action == "update") {

$result = mysql_query("select * from $table where nr = '".$nr."'");
$title = mysql_result($result,0,"title");
$amount = mysql_result($result,0,"amount");
$content = mysql_result($result,0,"content");
$place = mysql_result($result,0,"place");


?>

<table>
<form action=<?php echo $PHP_SELF; ?> method=post>
<input type=hidden name=action value="save">
<input type=hidden name=nr VALUE="<? echo $nr ?>">
<tr>
<td height="26">titel</td>
<td><input type=text name="title" value="<? echo $title ?>"></td>
</tr><tr>
<td>amount</td>
<td><input type=text name="amount" value="<? echo $amount ?>"></td>
</tr><tr>
<td>content</td>
<td><textarea name="content"><? echo $content ?></textarea></td>
</tr><tr>
<td>place</td>
<td><textarea name="place"><? echo $place ?></textarea></td>
</tr><tr>
<td> </td>
<TD><input type=submit value="Article Update"></form></td>
</tr>
</table><p>

<?php

// Formular für ein neues Produkt
} elseif($action == "formneu") {

?>
<table>
<form action=<?php echo $PHP_SELF; ?> method=post>
<input type=hidden name=action value="neu">
<tr>
<td>TITLE</td>
<td><input type=text name="title"></td>
</tr><tr>
<td>Amount</td>
<td><input type=text name="amount"></td>
</tr><tr>
<td>Content</td>
<td><textarea name="content"></textarea></td>
</tr><tr>
<td>PLACE</td>
<td><textarea name="place"></textarea></td>
</tr><tr>
<td> </td>
<TD><input type=submit value="Add new Article"></form></td>
</tr>
</table><p>

<?php
// Gibt alle Datensätze aus der Datenbank aus.
} else {

if (!$meldung) $meldung = "Option<P>";
echo "$meldung";
echo "<ol><b>All Articles:</b> ";

$result = mysql_query("select * from $table");
if ($num = mysql_num_rows($result)){
// Ausgabe der Datensätze, wenn vorhanden
for($i=0;$i < $num; $i++)
{ $nr = mysql_result($result,$i,"nr");
$title = mysql_result($result,$i,"title");
$amount = mysql_result($result,$i,"amount");
$content = mysql_result($result,$i,"content");
$place = mysql_result($result,$i,"place");
echo "<li> $title - <A href=\"$PHP_SELF?nr=$nr&action=update\">Update</A>";
echo " - <a href=\"$PHP_SELF?nr=$nr&action=loeschen\">delete</a><br>$content</li>";
}
}
else echo "<li>There are no items in the Database<p>";
echo "</ol>";
}
echo "<p><a href=$PHP_SELF>Main Page</a>";
echo " - <a href=$PHP_SELF?action=formneu>New Article</a>";

?>


MFG CHRISTOPH
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
du gehoerst geschlagen fuer den code :P
spasz bei seite... erstmal formatierst du den code ordnerlich und tust ihn in [ PHP] [/PHP] tags damit er auch schön lesbar ist;)

dann packst du alle werte wie zb type=text in anführungszeichen das da so ausschaut: type="text"


und dann wäre noch toll zu wissen, von welchem datentyp die jeweiligen spalten in deiner datenbank sind.
 
Ich sehe erstmal keinen Fehler. Steht in der Datenbank der Datensatz richtig drin? Also einfach mal mit PHPmyadmin oder was auch immer du zur verfügung hast nachschaun.
 
Hast du das irgendwo schon hochgeladen, dass man sich das mal anschaun kann. Ich habe 1. keine Ahnung wir üderhaupt irgendwas anderes außer dem letzten Else Block ausgeführt werden soll, da eigentlich $_POST('Action') irgendwo stehen müsste. $Action wird nirgends befüllt und ist immer NULL. Somit kann nur der letzte Else Block ausgeführt werden. 2. Ist in dem besagten Else Block zwar alut Kommentar die Rede von einer Ausgabe aber da wird lediglich Nummer und Content ausgegeben. Der Rest wird in Variablen gespeichert und nicht mehr angefasst.

Kannst mich aber gerne vom Gegenteil überzeugen. Hab PHP schon ne weile nicht mehr Programmiert.
 
du gehoerst geschlagen fuer den code :P
spasz bei seite... erstmal formatierst du den code ordnerlich und tust ihn in [ PHP] [/PHP] tags damit er auch schön lesbar ist;)

dann packst du alle werte wie zb type=text in anführungszeichen das da so ausschaut: type="text" [..]

Das würd ich zu aller erst machen bevor ich mich auf die eigentliche Fehlersuche mache.
 
Lesbar ist der Code. Leider ist er im Forum nicht mehr eingerückt aber ich find die Leerzeilen und Kommentare schon sehr Vorbildlich. Von daher sehe ich keine Notwendigkeit daran noch was zu ändern. Die Anführungsstriche sind jetzt nicht so weltbewegend. Da finde ich aneinandergequetschten Quellcode viel schlimmer.

Und was ist nun. Ich will wissen ob mit dem $_POST recht habe oder ob es bei mir doch schon zu lange her ist und ich zu viel vergessen habe.
 
@ little skunk
das mit dem $_POST['action'] kommt drauf an ob in der php.ini die option register_globals on oder eben nicht ist. Im Fall, dass sie on ist. Registriert er alle array keys die per get post oder sonst was kommen, auch als normale variable.
 
Dann sind wir wieder am Anfang. Also lad die Seite mal irgendwo hoch so das wir sie bewundern können. Vieleicht hilft das bei der Fehlersuche.
 
nein es wuerde voellig reichen wenn er den code noch mal neu einfügt und diesmal
PHP:
 [ /PHP] tags drumm her rum macht, dann behaelt er auch die formatierung.
 
Heya, wenn ich mich nicht irre, stimmt das, was Little_Skunk geschrieben hat.

PHP:
if ($num = mysql_num_rows($result)){
// Ausgabe der Datensätze, wenn vorhanden
  for($i=0;$i < $num; $i++){
    $nr = mysql_result($result,$i,"nr");
    $title = mysql_result($result,$i,"title");
    $amount = mysql_result($result,$i,"amount");
    $content = mysql_result($result,$i,"content");
    $place = mysql_result($result,$i,"place");
    echo "<li> $title - <A href=\"$PHP_SELF?nr=$nr&action=update\">Update</A>";
    echo " - <a href=\"$PHP_SELF?nr=$nr&action=loeschen\">delete</a><br>$content</li>";
  }
}

Du gibst nur in der Liste die Variablen $title und $content aus. $place und $amount werden nirgends verwendet? ;)
 
Zuletzt bearbeitet:
Stimmt schon aber das ist nicht sein Problem. Er zeigt da ja einen Link an und wenn man den anklickt, dann taucht erst sein Problem auf. Also wenn action=update.

Ich ging nur fälschlicherweise davon aus, dass es $_POST('action') sein müsste, damit die anderen IFs überhaupt greifen.
 
Zuletzt bearbeitet:
hier shconmal grob ueberarbeitet:
PHP:
<?php

// Systemeinstellungen

$id         = "root";
$pw         = "";
$host         = "";
$database     = "stock";
$table         = "article";

// Einstellungen Ende

$conn_id = mysql_connect($host,$id,$pw) or die(mysql_error());
mysql_select_db($database,$conn_id);


switch($_POST['action']){
    case 'loeschen': 
        mysql_query("DELETE FROM ".$table." WHERE nr = '".$nr."';") or die(mysql_error());
        $meldung = "Article is deleted";
        break;
        
    case 'save':
        mysql_query("UPDATE ".$table." SET title = '".$title."', amount = '".$amount."', content = '".$content."', place = '".$place."' where nr = '".$nr."'") or die(mysql_error());
        $meldung = "Article is updated";
        break;
    
    case 'neu':
        mysql_query("INSERT INTO ".$table." (title,amount,content,place) VALUES ('".$title."','".$amount."','".$content."','".$place."')") or die(mysql_error());
        $meldung = "Article is added";
        break;
    case 'update':
        $result = mysql_query('SELECT * FROM '.$table.' WHERE nr = "'.$nr.'"');
        $row = mysql_fetch_assoc($result);
        ?>
            <form action="<?php echo $PHP_SELF; ?>" method="post">
            <input type="hidden" name="action" value="save">
            <input type="hidden" name=nr VALUE="<? echo $nr ?>">    
            <table>
                <tr>
                    <td height="26">titel</td>
                    <td><input type="text" name="title" value="<? echo $row['title'] ?>"></td>
                </tr>
                <tr>
                    <td>amount</td>
                    <td><input type="text" name="amount" value="<? echo $row['amount'] ?>"></td>
                </tr>
                <tr>
                    <td>content</td>
                    <td><textarea name="content"><? echo $row['content'] ?></textarea></td>
                </tr>
                <tr>
                    <td>place</td>
                    <td><textarea name="place"><? echo $row['place'] ?></textarea></td>
                </tr>
                <tr>
                    <td> </td>
                    <td><input type="submit" value="Article Update"></form></td>
                </tr>
            </table>
        
        <?php
        break;
        
    case 'formneu': ?>
        <form action=<?php echo $PHP_SELF; ?> method=post>
        <input type="hidden" name="action" value="neu">
        <table>
            <tr>
                <td>TITLE</td>
                <td><input type="text" name="title"></td>
            </tr>
            <tr>
                <td>Amount</td>
                <td><input type="text" name="amount"></td>
            </tr>
            <tr>
                <td>Content</td>
                <td><textarea name="content"></textarea></td>
            </tr>
            <tr>
                <td>PLACE</td>
                <td><textarea name="place"></textarea></td>
            </tr>
            <tr>
                <td> </td>
                <td><input type="submit" value="Add new Article"></form></td>
            </tr>
        </table>

<?php    
        break;
    default: 
        if (!$meldung) $meldung = "Option<P>";
        echo "$meldung";
        echo "<ol><b>All Articles:</b> ";
        $result = mysql_query("SELECT * FROM ".$table.";");
        if ($num = mysql_num_rows($result)){
            // Ausgabe der Datensätze, wenn vorhanden
            while($row = mysql_fetch_assoc($result)){
                echo "<li> ".$row['title']." - <A href=\"$PHP_SELF?nr=".$row['nr']."&action=update\">Update</A>";
                echo " - <a href=\"$PHP_SELF?nr=".$row['nr']."&action=loeschen\">delete</a><br>".$row['content']."</li>";
            }
        }else{
            echo "<li>There are no items in the Database<p>";
        }
        echo "</ol>";
    }
    echo "<p><a href=$PHP_SELF>Main Page</a>";
    echo " - <a href=$PHP_SELF?action=formneu>New Article</a>";

?>
Hinzugefügter Post:
ach als kleinen tip, misch deutsch und englisch nicht ;) sondern machs einheitlich... ich sag nur save vs loeschen
 
Zuletzt bearbeitet:
Dann sei aber auch Konsequent und lösch die Variablen in der letzten While schleifen. Da steht immer noch $nr und so weiter. Hat mich sowieso gestört, da ich auch die Arrays von PHP bevorzuge^^
 
hatte ich glatt vergessen zu löschen ;)
 
irgendwie geht mit dem Code von Nascar nichts mehr da muss was falsch sein

Ich kann werder löschen noch was updaten noch einen neuen Datensatz anlegen

Mein Problem ist das eben die 2 Datensätze nicht angezeigt werden. Alles andere geht. Er legt sie auch in der Datenbank an nur die ausgabe geht nicht.
 
Zuletzt bearbeitet:
du ich hab den code auch nicht getestet, ich hab das auf arbeit vorhin schnell so hingeproggt. natuerlich ohne fehler korrektur.

es wäre auch mal cool wenn du uns nen db dump zukommen lassen wuerdest
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh