luckyluke
Goto Top

Per PHP Inhalt, Datensatz kopieren und anderer ID zuweisen

Guten Morgen,

ich habe vor eine Komforteigenschaft in mein Intranet-Datenbankmodul einzubauen.
Hierbei handelt es sich um eine Produktdatenbank, die Parameterwerte beinhaltet. Da manche Produkte bis auf zwei Werte unterschiedlich sind, möchte ich folgende Komfortfunktion implementieren:
- Produkt auswählen --> Inhalte kopieren --> 2tes Produkt auswählen --> Inhalte einfügen
Theoretisch ist dies einfach. Die Inhalte müssen in ein Array geschrieben werden und dann anschließend bspw. über eine Foreach-Schleife ausgelesen und der jeweiligen ID zugewiesen werden.
Ich habe mal im Manual recherchiert und nach einem Duplicate-Befehl gesucht, jedoch vergebens bzw. nicht bei mir anwendbar.
Hat jemand von euch eine ähnliche Funktion bereits versucht?
Denkanstöße sind herzlich willkommen, denn es gibt viele Wege, wie man dies lösen kann.

Gruß, Lucky.

Content-Key: 85743

Url: https://administrator.de/contentid/85743

Printed on: April 23, 2024 at 19:04 o'clock

Member: BennyR
BennyR May 08, 2008 at 07:35:33 (UTC)
Goto Top
Ich bin mir nicht sicher ob ich dein Problem richtig verstehe aber vielleicht hilft dir das:

INSERT INTO produkt_param (`id`,`produkt_id`,`wert`) SELECT NULL,neue_produkt_id=xxx,wert FROM produkt_param WHERE produkt_id = kopiere_von_dieser_id;

Zur Erklärung:
NULL weil du wahrscheinlich den primary key `id` automatisch setzt.

Sonst macht der Befehl folgendes:
Er erstellt für jeden Datensatz einer id `kopiere_von_dieser_id` einen neuen Datensatz mit der Produkt ID mit dem Wert 'xxx'
Member: LuckyLuke
LuckyLuke May 14, 2008 at 07:19:03 (UTC)
Goto Top
Moin BennyR,

danke für deinen Beitrag. Habe inzwischen eine eigene Version probiert zu erstellen.
Auf der ersten Seite wird das zu kopierende Produkt und das leere Produkt, dass die gleichen Werte enthalten soll, ausgewählt.
So siehts im Code aus:

Datei 1

<?
$res=mysql_db_query("datenbank_edv",   "SELECT prdNr, prdZusatz, gefuellt, id FROM edv_produkte ORDER BY prdNr");  
while($row=mysql_fetch_array($res,MYSQL_NUM))
{
    $pr_nrn=$row;
	$pr_nrn_zu=$row[1];
	$pr_fertig=$row[2];
	$pr_id=$row[3];
	
	
	if(isset($_GET['copy_produkt']) && $_GET['copy_produkt']==$row.$row[1])  
	{
		$zeige_copy_produkt=$row;
	}
}


echo '  
<select name="copy_produkt" onchange="document.produktwahl.submit()">  
<option value="-1">Bitte wählen</option><option value="-1"></option>';  
$test=0;
	for($z=0;$z<count($pr_nrn);$z++)
    {
        if(isset($_GET['copy_produkt']) && $_GET['copy_produkt']==$pr_nrn[$z].$pr_nrn_zu[$z])  
        {
			if($test!=$pr_nrn[$z].$pr_nrn_zu[$z])
	        {
                echo '<option value="'.$pr_nrn[$z].$pr_nrn_zu[$z].'" selected>'.$pr_nrn[$z].$pr_nrn_zu[$z].'</option>';  
            }
		}
		
		else
        {
			if($test!=$pr_nrn[$z].$pr_nrn_zu[$z])
			{
				if($pr_fertig[$z]=="1")  
				{
					echo '<option value="'.$pr_nrn[$z].$pr_nrn_zu[$z].'" style="background: #B9C5E3">'.$pr_nrn[$z].$pr_nrn_zu[$z].'</option>';  
				}
				else
				{
					echo '<option value="'.$pr_nrn[$z].$pr_nrn_zu[$z].'">'.$pr_nrn[$z].$pr_nrn_zu[$z].'</option>';  
				}
			}
		}
		$test=$pr_nrn[$z].$pr_nrn_zu[$z];
    }
echo '</select></form>';  

if(isset($zeige_copy_produkt))
{		
	echo'<input type="hidden" name="prd_nr" value="'.$_GET['copy_produkt'].'">';  
	echo'Klicken Sie auf "<strong>Werte übernehmen</strong>" damit das Produkt '.$_GET['copy_produkt'].' gefüllt werden kann.';  
	echo'<br /><br />';  
	echo '<input type="submit" name="copy" value="Werte übernehmen" />';  
}
?>

Datei 2

<?
error_reporting(E_ALL);
// Verbindungsdaten zur Datenbank und deren Datenbanktabellen \\
	require("../../../db.inc.php");  
// ********************************************************** \\										

//var_dump($_POST['produkt_1']); 
$prd_1 = $_POST['produkt_1'];  
$prd_2 = $_POST['produkt_2'];  


if(isset($_POST['copy']))  
{
	if($prd_1=="-1")  
	{
		echo "<strong>Bitte wählen Sie das Produkt aus, dessen Parameterwerte kopiert werden sollen!</strong><br>";  
	}
	else
	{
		$query = "SELECT prdid, parameterwert FROM prd_parawert WHERE prd_parawert.prdid='".$prd_1."'";  
		$result= mysql_query($query) or die (mysql_error());
		while($row_1=mysql_fetch_array($result,MYSQL_ASSOC))
		{	
			if($prd_2=="-1")  
			{
				echo "<br><strong>Bitte wählen Sie das Produkt aus, in das die Parameterwerte kopiert werden sollen!</strong>";  
			}
		}
			$query = "SELECT prdid, parameterwert FROM prd_parawert WHERE prd_parawert.prdid='".$prd_2."'";  
			$result=mysql_query($query) or die (mysql_error()); 
			while($row_2=mysql_fetch_array($result,MYSQL_ASSOC)) 
			{
				$query_in = "INSERT INTO prd_parawert ($row_2[parameterwert])  
								SELECT $row_1[parameterwert] FROM prd.parawert WHERE $row_1[prdid] = $row_2[prdid]";  
				$result=mysql_query($query_in); 
				echo "<br><br><strong>Kopiervorgang beendet.</strong>";  
			}
	}
}
?>

Problem
**
Es gibt weder eine Fehlermeldung noch eine Aktion in der Datenbank.
Wo könnte der Wurm liegen?


Gruß, Luke.