Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Artikel [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Artikel


 
jOhnny knOx
25-04-2003, 23:28 
 
Mit folgendem Befehl möchte ich einen Artikel hinzufügen:


mysql_query("INSERT INTO $tab_art (catid, titel, artikel, time) VALUES ('$cat_id', '$titel', '$artikel', '$zeit')");

echo "\$cat_id = $cat_id";


Hierbei gebe ich zum Check noch die ID der Kategorie des Artikel an. Und hier liegt auch mein Problem, $catid aber nicht ausgegeben. Der Code vor dem lautet wie folgt:


$types = mysql_query("SELECT * FROM $tab_artcat ORDER BY name");

echo "<select name='catid'>";
while ($cat = mysql_fetch_array($types)) {

$cat_id = "$cat[id]";
echo "<option>$cat[name]</option>";

}

 
Realmaker
25-04-2003, 23:38 
 
ich würd ein $types = mysql_query("SELECT * FROM $tab_artcat ORDER BY name") or die(mysql_error()); versuchen

 
jOhnny knOx
25-04-2003, 23:44 
 
Keine Fehler...

 
Realmaker
25-04-2003, 23:46 
 
dann würd ich das mal versuchen:$cat_id = "$cat[id]";
//wird zu:
$cat_id = $cat['id'];

 
jOhnny knOx
25-04-2003, 23:50 
 
Geht leider nicht.

 
Realmaker
25-04-2003, 23:53 
 
und das?:echo '<option>'.$cat['name'].'</option>';
Hast du es eingestellt das du alle Fehlermeldungen angezeigt bekommst?
mach die abfrage mal im PHP-myadmin und guck was er dir ausgibt und ob das auch alles richtig ist

 
jOhnny knOx
26-04-2003, 00:11 
 
Das funktioniert auch nicht. Und Fehler gibt es auch nicht, irgendwie wird nur die Variable $cat_id nicht definiert.

Ich möchte mal den Aufbau meines Codes zeigen, vielleicht hilft das ja weiter.


elseif ($_GET['action']=='admin' and $_GET['article']=='add') {

if ($add) {

// Angabencheck

if ($titel == "") { echo "Titel fehlt."; }

elseif ($artikel == "") { echo "Artikel fehlt."; }

else {

// Wenn es keine Fehler und alle Angaben gibt:

$zeit=time();

mysql_query("INSERT INTO $tab_art (catid, titel, artikel, time) VALUES ('$cat_id', '$titel', '$artikel', '$zeit')");

echo "Artikel erstellt. \$cat_id = $cat_id"; }

} else {

// Hier ist nun die Standardanzeige:

echo "<table width='100%' border='0' cellpadding='3' cellspacing='1'>
<form action='?action=admin&article=add' method='post'>
<tr bgcolor='$tcolor2'><td>Type:</td><td>";

$types = mysql_query("SELECT * FROM $tab_artcat ORDER BY name");

echo "<select name='catid'>";
while ($cat = mysql_fetch_array($types)) {

$cat_id = "$cat[id]";
echo "<option>$cat[name]</option>";

}
echo "</select>";

echo "</td></tr>

<tr bgcolor='$tcolor3'><td>Title:</td><td><input type='titel' size='30' name='titel'></td></tr>
<tr bgcolor='$tcolor2'><td>Article:</td><td><textarea name='artikel' cols='30' rows='6'></textarea></td></tr>

<tr><td></td><td><input name='add' type='submit' value='add article'></tr></td>
</form>
</table>"; }

 
Realmaker
26-04-2003, 12:55 
 
mach mal vor der while schleife testweise ein if(empty($cat['id'])) echo '$cat[\\\'id\\\'] ist leer';

er soll mir die \\'s anzeigen :mad:

 
jOhnny knOx
26-04-2003, 13:59 
 
Naja vor der while Schleife ist $cat[id] ja noch leer und ich wüsste nicht was das vor der Schleife bewirken sollte. Ich bräuchte eine Möglichkeit die $cat[id] in den <select>-tag einzubinden, damit die id bezüglich den namen ausgelesen wird, starte ich aber die while schleife vor dem Select werden pro Kategorie die gefunden wird ein Select-Tag erstellt.

 
TobiaZ
26-04-2003, 14:28 
 
wo soll das catid hin? in den select tag, oder in den option-tag?

 
jOhnny knOx
26-04-2003, 14:37 
 
in den select tag

 
TobiaZ
26-04-2003, 14:43 
 
Dann hast du es also anscheinend immer noch nicht begriffen... (mach mir langsam echt gedanken)

pass auf

1. tag mit var
2. definition der var

wie willst du also (wiedermal) eine variable benutzen, die erst später definiert wird?!?!?!

also machs wie du es beim letzten mal gelöst hast...

 
jOhnny knOx
26-04-2003, 14:46 
 
Ja, aber es wird doch standardgemäß logischer Weise immer der Code der am Ende Steht, also:

} else {

// Hier ist nun die Standardanzeige:

echo "<table width='100%' border='0' cellpadding='3' cellspacing='1'>
<form action='?action=admin&article=add' method='post'>
<tr bgcolor='$tcolor2'><td>Type:</td><td>";

$types = mysql_query("SELECT * FROM $tab_artcat ORDER BY name");

echo "<select name='catid'>";
while ($cat = mysql_fetch_array($types)) {

$cat_id = "$cat[id]";
echo "<option>$cat[name]</option>";

}
echo "</select>";

echo "</td></tr>

<tr bgcolor='$tcolor3'><td>Title:</td><td><input type='titel' size='30' name='titel'></td></tr>
<tr bgcolor='$tcolor2'><td>Article:</td><td><textarea name='artikel' cols='30' rows='6'></textarea></td></tr>

<tr><td></td><td><input name='add' type='submit' value='add article'></tr></td>
</form>
</table>"; }

angezeigt und hier werden die Variablen ja auch definiert. Wenn man nun auf das input "add" klickt wird alles neugelesen oder wie ?

 
TobiaZ
26-04-2003, 14:51 
 
ich versteh dich nicht...

 
jOhnny knOx
26-04-2003, 14:55 
 
Die beim allerersten Mal, beim Aufrufen der Seite, ja die ersten If's im Code nicht der Fall sein kann, da man noch nicht auf das Input geklickt hat, kommt doch der Code der am Schluss steht, wobei doch die Variablen definiert werden, richtig ?

Wenn man nun auf Input "add" klickt wird da die Datei neu gelesen ?

 
TobiaZ
26-04-2003, 15:16 
 
aber dann sind logischerweise auch alle Variablen (außer Post) weg. Du müsstest die also per hidden oder session übergeben.

 
jOhnny knOx
27-04-2003, 03:09 
 
wie würde das denn gehen mit dem hidden input die $cat[id] zu bekommen ?

 
TobiaZ
27-04-2003, 11:33 
 
ja, du machst halt n hidden field wo die id drin steht. fertig!

 
jOhnny knOx
27-04-2003, 20:41 
 
Ich hab' es so probiert:


echo "<input name='$cat_id' type='hidden' value='$cat_id'>";


Das geht aber nicht. Ich verstehe nicht wie das gehen soll eine id einem Namen der Dateneinträge zuzuweisen, weil das while kommt doch erst nach dem <select>-tag und da muss doch die ID des Namens stehen, oder ?

 
TobiaZ
27-04-2003, 21:08 
 
wie wärs mit name="cat_id"

 
jOhnny knOx
28-04-2003, 15:43 
 
Frage: Wie weise ich denn einem Datensatz eine ID in dem <select>/<option>-Tag zu, wenn doch das while nach dem select kommt ?

 
wahsaga
28-04-2003, 16:03 
 
die <option>-tags werden innerhalb der while-schleife geschrieben (alles andere macht ja auch gar keinen sinn).
und in die option-tags gehört auch die ID mit rein.

 
jOhnny knOx
28-04-2003, 16:10 
 
Und wie das, wenn da nur für

<option>$cat[name]</option>

Platz ist ?

 
mrhappiness
28-04-2003, 16:12 
 
dann mach statt echo "<option>$cat[name]</option>"; eben einecho '<option value="'.$cat['id'].'">'.$cat['name'].'</option>'; :mad:

da is nämlich soviel platz wie du brauchst...

 
jOhnny knOx
28-04-2003, 16:35 
 
Dann versteh ich aber nicht warum da nen hidden field hinkommen soll ...

 
mrhappiness
28-04-2003, 16:37 
 
vielleicht weil sich so mancher hier geringfügigst undeutlich ausdrückt? ;)

 
jOhnny knOx
28-04-2003, 16:39 
 
Es sollte doch nachdem ich dem ganzen Code gepostet habe jedem klar sein, dass da einfach ein value in den option-tag reinmuss.

 
wahsaga
28-04-2003, 16:49 
 
Original geschrieben von jOhnny knOx
Es sollte doch nachdem ich dem ganzen Code gepostet habe jedem klar sein, dass da einfach ein value in den option-tag reinmuss.
das sollte jemandem der halbwegs HTML beherrscht aber auch klar sein ohne dass er hier überhaupt nachfragen muss.

 
jOhnny knOx
28-04-2003, 17:50 
 
Könnte ich den folgenden Code so umstruktutieren, dass "$cat[id]" (was am ende des Codes steht) vor dem INSERT INTO (was in der Mitte des Codes steht) definiert wird ? Denn ich möchte keine Fehler- oder Korrektheitsanzeige unterhalb des Form Tags, sondern durch den Form Tag ersetzen. Wie wäre das möglich ?

elseif ($_GET['action']=='admin' and $_GET['article']=='add') {

if ($add) {

// Angabencheck

if ($titel == "") { echo "Titel fehlt."; }

elseif ($artikel == "") { echo "Artikel fehlt."; }

else {

// Wenn es keine Fehler und alle Angaben gibt:

$zeit=time();

mysql_query("INSERT INTO $tab_art (catid, titel, artikel, time) VALUES ('$cat_id', '$titel', '$artikel', '$zeit')");

echo "Artikel erstellt. \$cat_id = $cat_id"; }

} else {

// Hier ist nun die Standardanzeige:

echo "<table width='100%' border='0' cellpadding='3' cellspacing='1'>
<form action='?action=admin&article=add' method='post'>
<tr bgcolor='$tcolor2'><td>Type:</td><td>";

$types = mysql_query("SELECT * FROM $tab_artcat ORDER BY name");

echo "<select name='catid'>";
while ($cat = mysql_fetch_array($types)) { echo "<option value='$cat[id]'>$cat[name]</option>"; }
echo "</select>";

echo "</td></tr>

<tr bgcolor='$tcolor3'><td>Title:</td><td><input type='titel' size='30' name='titel'></td></tr>
<tr bgcolor='$tcolor2'><td>Article:</td><td><textarea name='artikel' cols='30' rows='6'></textarea></td></tr>

<tr><td></td><td><input name='add' type='submit' value='add article'></tr></td>
</form>
</table>"; }

 
TobiaZ
28-04-2003, 17:50 
 
Muss echt sagen, dass ich bei deinen Problemen manschmal nicht mehr mitkomme...

 
wahsaga
28-04-2003, 17:53 
 
also ein bisschen gedanken um die ablauflogik deines scriptes kannst du dir doch wohl mal selber machen, oder...?

 
jOhnny knOx
28-04-2003, 18:11 
 
Ich weiss nicht nach welchem "Schema" ich das anstellen könnte, dass der ganze Formtag bei jedem Klick aufs Input Feld verschwinden würde, bei Fehler- oder Korrektheit ...

 
TobiaZ
28-04-2003, 18:48 
 
wie wärs mit if isset $_POST

 
mrhappiness
28-04-2003, 19:56 
 
Parse error: parse error, unexpected T_ISSET, expecting '(' ...
:D

 
TobiaZ
28-04-2003, 20:53 
 
verar*** mich nicht! :D

 
mrhappiness
28-04-2003, 20:55 
 
tu ich nich, dein code funzt echt nich *fg*

 
TobiaZ
28-04-2003, 21:11 
 
ich wollt nicht alles vorsagen

 
jOhnny knOx
29-04-2003, 07:13 
 
Gehts vielleicht genauer ?

 
wahsaga
29-04-2003, 11:27 
 
Original geschrieben von jOhnny knOx
Gehts vielleicht genauer ?
nein, verdammt.

nimm dir das handbuch, nimm dir ein tutorial, und dann sie mal selber zu, dass du was auf die reihe bekommst.

 
TobiaZ
29-04-2003, 13:10 
 
soll ich dir die klammern auch noch geben?
()
Und damit du alles hast, geb ich dir den auch noch:
;

:D:D:D
das wars jetzt aber!!!

Langsam überlege ich echt, ob das das richtige für dich ist. IdR. machen wir Newbees hier ziemlich schnell fit...

 
mrhappiness
29-04-2003, 13:12 
 
was hab ich gesagt?Original geschrieben von mrhappiness
Parse error: parse error, unexpected T_ISSET, expecting '(' ...
:D

 
TobiaZ
29-04-2003, 14:26 
 
Wie gesagt, wollte nicht alles vorweg nehmen.

aber gibs zu, du hast das selbe problem und hast es getestet... :D

 
mrhappiness
29-04-2003, 14:28 
 
nicht alles vorwegnehmen is ja ok, aber mit den infos von dir kann man ja nix anfangen oder?!

etwas mehr muss da schon kommen; einfach nur 1-2 stichwörter hinschmeißen ist völlig unzureichend, da kommt doch kein normaler mensch mit klar;) (hab ich vergessen)

und: nein, ich hatte das problem nich :D

 
jOhnny knOx
30-04-2003, 20:54 
 
Kann es jemand vielleicht etwas ausführlich erklären und nicht in einem kurzen Satz fassen, wo ich es sowieso nicht verstehen werde. Ich möchte ja nicht das ihr unbedingt hier alles vorcodet, sondern lediglich das Schema/Prinzip bzw. die Logik damit das funktioniert. Danke ...

 
wahsaga
01-05-2003, 00:00 
 
schon fünf seiten, und immer noch nicht verstanden...?


wie war jetzt nochmal genau die frage?

 
jOhnny knOx
01-05-2003, 13:31 
 
Original geschrieben von jOhnny knOx
Könnte ich den folgenden Code so umstruktutieren, dass "$cat[id]" (was am ende des Codes steht) vor dem INSERT INTO (was in der Mitte des Codes steht) definiert wird ? Denn ich möchte keine Fehler- oder Korrektheitsanzeige unterhalb des Form Tags, sondern durch den Form Tag ersetzen. Wie wäre das möglich ?

elseif ($_GET['action']=='admin' and $_GET['article']=='add') {

if ($add) {

// Angabencheck

if ($titel == "") { echo "Titel fehlt."; }

elseif ($artikel == "") { echo "Artikel fehlt."; }

else {

// Wenn es keine Fehler und alle Angaben gibt:

$zeit=time();

mysql_query("INSERT INTO $tab_art (catid, titel, artikel, time) VALUES ('$cat_id', '$titel', '$artikel', '$zeit')");

echo "Artikel erstellt. \$cat_id = $cat_id"; }

} else {

// Hier ist nun die Standardanzeige:

echo "<table width='100%' border='0' cellpadding='3' cellspacing='1'>
<form action='?action=admin&article=add' method='post'>
<tr bgcolor='$tcolor2'><td>Type:</td><td>";

$types = mysql_query("SELECT * FROM $tab_artcat ORDER BY name");

echo "<select name='catid'>";
while ($cat = mysql_fetch_array($types)) { echo "<option value='$cat[id]'>$cat[name]</option>"; }
echo "</select>";

echo "</td></tr>

<tr bgcolor='$tcolor3'><td>Title:</td><td><input type='titel' size='30' name='titel'></td></tr>
<tr bgcolor='$tcolor2'><td>Article:</td><td><textarea name='artikel' cols='30' rows='6'></textarea></td></tr>

<tr><td></td><td><input name='add' type='submit' value='add article'></tr></td>
</form>
</table>"; }

Das heisst im Einfachem:

Formtag am Anfang des Codes, dennoch bei Fehler- und Bestätigungsmeldung verschwinden lassen

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:21 Uhr.