Zum Inhalt springen

[PHP] Variablen übergabe funktioniert nicht


Empfohlene Beiträge

Hallo zusammen,

ich hab ein riesen Problen.

Hoffe mir kann mal wieder jemand helfen.

Problem:

Auf Seite 1 erstelle ich acht gleiche Eingabefelder über eine WHILE-Schleife.

Jetzt möchte ich mit klick auf den Submit-Button "Update" die Daten an

Seite 2 übergeben. Das funktioniert auch so weit, bis auf die zwei Textfelder.

Hab bei Googel schon zu lange gesucht und keine Lösung gefunden.

Ist wirklich dringen. Hoffe mir kann hier jemand helfen.

Gruß

TripleD

--------------------------------------------------------------------------

CODE

Ich habe zwei Seiten:

Seite 1


<form action="<? echo 'index.php?site=scripts/s_artikel&grpid='.$grpid; ?>" method="post" enctype="multipart/form-data">
<table border="0">
<?
$i = "0";
while($i < "8")
{
?>
<tr>
<!-- LINKE SPALTE -->
<td>
<table border="0" class="tab">
<tr>
<td valign="top">
Artikel:
<? echo $i; ?>
<br>
<br>
<div align="center">
<? echo '<input type="submit" name="update" value="Update">'; ?>
</div>
</td>
<td valign="top" align="left">
<?
$art = mysql_query("SELECT * FROM ".$T_ART." WHERE artid = ".$i." AND grpid = ".$_GET['grpid']);
$artdat = mysql_fetch_assoc($art);

if($artdat['artid'] != $i)
{
/* Gruppen- und Artikel-ID einfügen */
mysql_query("INSERT INTO ".$T_ART." (grpid, artid) VALUES ('$grpid', '$i')");

/* Artikel Kurzbeschreibung */
echo '<input type="text" name="akb" value="'.$artdat['kurz'].'" size="43"><br>';

/* Artikel Langebeschreibung */
echo '<textarea cols="32" rows="5" name="alb">'.$artdat['lang'].'</textarea><br>';

/* Auswahl neues Bild */
echo '<input type="file" name="bild[]" size="25"><br>';
/* Auswahl bestehendes Bild */
echo '<select name="bild_exist[]">';
$dir = "./images/pics/";
$handle = opendir($dir);

echo '<option value="">-- Bilderauswahl --</option>\n';
while($file = readdir ($handle))
{
if($file != "." && $file != "..")
{
echo '<option value="'.$file.'">'.$file.'</option>\n';
}
}
closedir($handle);
echo '</select>';
}
else
{
/* Artikel Kurzbeschreibung */
echo '<input type="text" name="akb" value="'.$artdat['kurz'].'" size="43"><br>';

/* Artikel Langebeschreibung */
echo '<textarea cols="32" rows="5" name="alb">'.$artdat['lang'].'</textarea><br>';

/* Auswahl neues Bild */
echo '<input type="file" name="bild[]" size="25"><br>';
/* Auswahl bestehendes Bild */
if($artdat['bild'] != "")
{
echo '<select name="bild_exist[]">';
$dir = "./images/pics/";
$handle = opendir($dir);

echo '<option value="'.$artdat['bild'].'">'.$artdat['bild'].'</option>\n';
echo '<option value="">-- Bilderauswahl --</option>\n';
echo '<option value="">Kein Bild</option>\n';
while($file = readdir ($handle))
{
if($file != "." && $file != ".." && $file != $artdat['bild'])
{
echo '<option value="'.$file.'">'.$file.'</option>\n';
}
}
closedir($handle);
echo '</select>';
}
else
{
echo '<select name="bild_exist[]">';
$dir = "./images/pics/";
$handle = opendir($dir);

echo '<option value="">-- Bilderauswahl --</option>\n';
echo '<option value="">Kein Bild</option>\n';
while($file = readdir ($handle))
{
if($file != "." && $file != "..")
{
echo '<option value="'.$file.'">'.$file.'</option>\n';
}
}
closedir($handle);
echo '</select>';
}
}
?>
</td>
<td width="180" align="center" valign="middle">
<?
/* Bild */
if($artdat['bild'] != "")
{
echo '<img src="images/pics/'.$artdat['bild'].'" alt="Bild" >';
}
else
{
echo 'Kein Bild vorhanden';
}
?>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
[/PHP]

[b]Seite 2[/b]

[PHP]
$dstPath = "./images/pics/";

/* Neue Bilder */
if (is_array($_FILES['bild']['tmp_name']))
{
foreach ($_FILES['bild']['tmp_name'] as $fkey=>$fval)
{
if (is_File($fval))
{
$dstFName = $_FILES['bild']['name'][$fkey];
$dstFPath = realpath($dstPath)."/".$dstFName;

if (move_uploaded_file($fval,$dstFPath))
{
mysql_query("UPDATE ".$T_ART." SET kurz='$akb', lang='$alb', bild='$dstFName' WHERE grpid = ".$grpid." AND artid=".$fkey);

header('Location: index.php?site=artikel&grpid='.$grpid);
}
}
}
}

/* Existierende Bilder */
if (is_array($_POST['bild_exist']))
{
foreach ($_POST['bild_exist'] as $fkey=>$fval)
{
foreach($_GET['akb'] as $akbk=>$akbv)
{
foreach($_POST['alb'] as $albk=>$albv)
{
echo "Exestierendes Bild<br>";
echo "==================<br>";
echo 'Kurzbeschreibung-ID: '.$akbk.'<br>';

//header('Location: index.php?site=artikel&grpid='.$grpid);
}
echo 'Kurzbeschreibung - Request: '.$_REQUEST['akb'].'<br>';
echo 'Kurzbeschreibung - Post: '.$_POST['akb'].'<br>';
echo 'Kurzbeschreibung - Get: '.$_GET['akb'].'<br>';
echo "---------------------------<br>";
echo 'Langbeschreibung-ID: '.$albk.'<br>';
echo 'Kurzbeschreibung - Request: '.$_REQUEST['alb'].'<br>';
echo 'Kurzbeschreibung - Post: '.$_POST['alb'].'<br>';
echo 'Kurzbeschreibung - Get: '.$_GET['alb'].'<br><br>';

//mysql_query("UPDATE ".$T_ART." SET kurz='$akb', lang='$alb', bild='$fval' WHERE grpid = ".$grpid." AND artid=".$fkey);
}
}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn ich das richtig sehe....dein Code ist etwas unübersichtlich, hast du eine Nameskollision.

... name="alb" ..., wenn du davon mehrere hast, solltest es name="alb[]" heißen.

mittels print_r($_POST); print_r($_GET); unsw. kannst du dir auch anzeigen lassen, was alles/wie kommt..

ein paar Kritiken / Tips ^^:

-

du verwendest teilweise <? .. ?> und teilweise echo ... "";

ich würde empfehlen nur echo zu benutzen...schon aus gewohnheit :) später könnte es Probleme mit solcheN Konstellationen geben.

-

mal benutzt du für String ' ... ', mal "...". Ich bin nicht ganz sicher, aber soweit ich weis sollte "..." verwendet werden. Wenn du innerhalb eines Strings ein " zeichnen willst, geht das mit \"

aber dazu können die anderen hier ja noch was sagen :)

-

mal überlegt das eine oder andere in Funktionen zu kapseln ? würde es übersichtlicher machen, denke ich :)

ich hoffe ich konnte helfen

Link zu diesem Kommentar
Auf anderen Seiten teilen

-

mal benutzt du für String ' ... ', mal "...". Ich bin nicht ganz sicher, aber soweit ich weis sollte "..." verwendet werden. Wenn du innerhalb eines Strings ein " zeichnen willst, geht das mit \"

aber dazu können die anderen hier ja noch was sagen :)

jo dazu will ich auch was sagen.

ob du nun "..." oder '...' nimmst, hängt davon ab, was du willst.

Strings in Anführungszeichen werden nämlich geparsed, so dass dort auch Variablen eingefügt werden können.

Bei Hochkommas ist das nicht der Fall.

Am besten zeigt das ein Beispiel:


<?
$var = 20;
echo 'Ich bin $var Jahre alt';
echo "Ich bin $var Jahre alt";
?>
[/PHP]

Die ausgabe sieht dann so aus:

[code] Ich bin $var Jahre alt Ich bin 20 Jahre alt [/code]

Link zu diesem Kommentar
Auf anderen Seiten teilen

zum Thema :

du hast 2 mal einen Namen wie bild_exist[] und bild[] ohne $ gemacht

ausserdem verwendest du den submit namen auf sich wiederholende namen, das geht so nicht. du mußt den $i Zaehler in den namen einbauen, dmait er weiss was du absendest. daher würde ich auch das Form mit in die while schleife packen.

mysql_query("UPDATE ".$T_ART." SET kurz='$akb', lang='$alb', bild='$dstFName' WHERE grpid = ".$grpid." AND artid=".$fkey); 

und die darfst du keine variablen in single quotes packen ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich baue mir zuerst den query zusammen wie z.b. hier :


$update_query = "UPDATE comunio_dfb set spieler1_pkt=";

  $update_query .=$_POST["spieler1_pkt_$hochzaehler"];

  $update_query .=", spieler2_pkt=";

  $update_query .=$_POST["spieler2_pkt_$hochzaehler"];

  $update_query .=", spiel_gespielt=1";

  $update_query .=" where spieler1_name='";

  $update_query .=$_POST["spieler1_name_$hochzaehler"];

  $update_query .="' AND spieler2_name='";

  $update_query .=$_POST["spieler2_name_$hochzaehler"];

  $update_query .="'";

dann mysql_query($update_query) ;

in einfachen quotes gibt es keine variable !

das $ zeichen kommt natürlich vor den namen der variable, woden sonst

Link zu diesem Kommentar
Auf anderen Seiten teilen

auf der ersten Seite, aber du hast noch überblick wo du was geschrieben hast, oder war dies ein copy+paste-extremeprogging :rolleyes: ?

auf der zweiten seite hast du ja $_POST["bild_exist"]

wobei ich mir denke, dass man den falschen wert nimmt, wenn man eine varaible als array() deklariert $variable[] und dann $variable ins update packt.

du mußt scho angeben, welches element im array er den nehmen soll

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...