WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Einen Datensatz mit mehreren Artikeln vernüpfen? » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
von brali
Bitte?

nix Baustelle! funzt wunderbar!
bis auf die eine Stelle die aber, wie ich bereits sagte nun funktioniert.

Grüße und danke!
von Austin Powers
ich fummel mich grad durch deinen Quelltext. noch viel Baustelle häe.
versuchs anstelle von Zeile 23 bis 31 mal mit
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9:
unset (query);
foreach ( $_POST['mitarbeiter'] as $mitarbeiter) {
   query=. "insert into vb_verweis (mitarbeiterid, dienstleistungid) values ('$mitarbeiter','$id');";
   }
$result = mysql_query($query);
mysql_free_result($result);
unset ($query);

P.S.: was macht mid in vb_dienste?
vb_verweis verknüpft doch mitarbeiter und dienste.
Da ist ziemlich der Wurm drinn
von brali
Hi Austin, THX für deine Mühe.

Hier der ganze Quelltext und die änderungen die ich gemacht habe damit es nun funktioniert.

Das <form> war im übrigen schon okay, ich habe nur einen very doofen denkfehler innegehabt.

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 
78: 
79: 
80: 
81: 
82: 
83: 
84: 
85: 
86: 
87: 
88: 
89: 
90: 
91: 
92: 
93: 
94: 
95: 
96: 
97: 
98: 
99: 
100: 
101: 
102: 
103: 
104: 
105: 
106: 
107: 
108: 
109: 
110: 
111: 
112: 
113: 
114: 
115: 
116: 
117: 
118: 
119: 
120: 
121: 
122: 
123: 
124: 
125: 
126: 
127: 
128: 
129: 
130: 
131: 
132: 
133: 
134: 
135: 
136: 
137: 
138: 
139: 
140: 
141: 
142: 
143: 
144: 
145: 
146: 
147: 
148: 
149: 
150: 
151: 
152: 
153: 
154: 
155: 
156:
<?
include_once  "includes/meta.php";


		
// Datensatz updaten in der DB
if($_REQUEST[edit]=='true' and $_REQUEST[update]=='true') {
  $db->query("update vb_dienste set beschreibung='$_REQUEST[beschreibung]', artikel='$_REQUEST[artikel]' where did='$_REQUEST[did]'");
  
  echo "<div class='text'>Dienstleistung wurde editiert<br><br>";
}


// Datensätze löschen
if($_REQUEST[edit]=='true' and $_REQUEST['delete']=='true') { 
    $db->query("delete from vb_dienste where did='$_REQUEST[did]'");
  echo "<div class='text'>Die Dienstleistung wurde gelöscht.<br><br>\n";
}
// Datensatz in DB speichern
if($_REQUEST[add]=='true' and $_REQUEST[insert]=='true') {
$db->query("insert into vb_dienste (mid, beschreibung, artikel) values ('$mitarbeiter','$_REQUEST[beschreibung]','$_REQUEST[artikel]')");
$id = mysql_insert_id();

if (count($_POST['mitarbeiter'])>0)
		$mitarbeiterer = implode($_POST['mitarbeiter'],"&mitarbeiter[]=");
		
for ($i=0; $i<count($_POST['mitarbeiter']); $i++) { 
$mitarbeiter = $_POST['mitarbeiter'][$i];
$db->query("insert IGNORE into vb_verweis (mitarbeiterid, dienstleistungid) values ('$mitarbeiter','$id')"); 
 
}
}
echo "<div class='text'>Die Dienstleistung wurde angelegt.<br><br>\n";


//Datensatz anlegen
if($_REQUEST[add]=='true' and $_REQUEST[insert]=='false') {
?>
<form name="formular" action="dansehen.php?add=true&insert=true" method="post">
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#cccccc">
<td>

<table width="100%" border="0" cellspacing="1" cellpadding="3">
<tr bgcolor="#9FB1D4">
  <td colspan="2"><b>Dienstleistung einfügen</b></td>
</tr>
     <tr bgcolor="#ffffff">
		<td class="fieldname">Mitarbeiterzugehörigkeit</td>
		<td><select name="mitarbeiter[]" size="6" multiple>
<?
$result = mysql_query("SELECT * FROM vb_mitarbeiter order by mid ASC ");
echo mysql_error();
while ($ausgabe = mysql_fetch_array($result)) { ?>
	<option value="<?echo $ausgabe["mid"]?>"<?if (is_array($mitarbeiter) AND in_array($ausgabe["mid"],$mitarbeiter)) {echo " SELECTED";}?>><?echo $ausgabe['vorname'].' '.$ausgabe['nachname'] ?></option>
<?
}
?>
</select>
</td>
	</tr>
	<tr bgcolor="#ffffff">
		<td class="fieldname">Dienstleistungsbeschreibung (max 255 zeichen)</td>
		<td><input type="text" name="beschreibung" size="35" value="" class="textfield"></td>
	</tr>
	<tr bgcolor="#ffffff">
		<td class="fieldname">Beschreibung</td>
		<td><textarea name="artikel" rows="10" cols="45" class="textfield"></textarea></td>
	</tr>
	 <tr bgcolor="#ffffff">
		<td class="fieldname"></td>
		<td><input type="submit" value="Mitarbeiter speichern" class="button_submit"></td>
	</tr>
</table>

</td>
</tr>
</table>
</form>
<?
}

// Alle Datensätze ausgeben
if($_REQUEST[edit]=='true' and $_REQUEST[editform]=='true') {
$res = $db->query("select * from vb_dienste where did='$_REQUEST[did]'");
$row = $db->fetch_array($res);
?>
<form name="formular" action="dansehen.php?edit=true&update=true&did=<?=$_REQUEST[did]?>" enctype="multipart/form-data" method="post">
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#cccccc">
<td>

<table width="100%" border="0" cellspacing="1" cellpadding="3">
<tr bgcolor="#9FB1D4">
  <td colspan="2"><b>Dienstleistung editieren</b></td>
</tr>
  	<tr bgcolor="#ffffff">
		<td class="fieldname">Dienstleistungsbeschreibung (255zeichen)</td>
		<td><input type="text" name="beschreibung" size="35" value="<?=$row[beschreibung]?>" class="textfield"></td>
	</tr>
	<tr bgcolor="#ffffff">
		<td class="fieldname">Beschreibung (HTML erlaubt)</td>
		<td><textarea rows="10" cols="45" class="textfield"><?=$row[artikel]?></textarea></td>
	</tr>
	 <tr bgcolor="#ffffff">
		<td class="fieldname"></td>
		<td><input type="submit" value="speichern" class="button_submit"></td>
	</tr>
       
	</tr>
</table>
</td>
</tr>
</table>
</form>
<?
}
?>
&raquo;  <a href="dansehen.php?add=true&insert=false">Neue Dienstleistung erfassen</a><br>
<br>
<br>
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#cccccc">
<td>

<table width="100%" border="0" cellspacing="1" cellpadding="3">
<tr bgcolor="#9FB1D4">
  <td><b>Dienste</b></td>
  <td align="center" colspan="2" width="30"><b>Optionen</b></td>
  </tr>
  
  

<?
// alle Datensätze auslesen  
	$res = $db->query("select * from vb_dienste order by beschreibung asc");
	while($row=$db->fetch_array($res)) {
    
    
  
    echo "<tr bgcolor=\"#ffffff\">\n";
	echo "<td>$row[beschreibung]</td>\n";
	echo "<td align=\"center\"><a href=\"dansehen.php?edit=true&editform=true&did=$row[did]\"><img alt='Bearbeiten' src='img/edit.gif' border='0'></a></td><td align=\"center\"><a href=\"javascript:sicher('dansehen.php?edit=true&delete=true&did=$row[did]')\"><img alt='Löschen' src='img/trash.gif' border='0'></a></td>\n";
	echo "</tr>\n";
}
?>
</table>
</td>
</tr>
</table>

<?
include_once "includes/footer.php";

?>
von Austin Powers
brali schrieb am 03.05.2006 08:46
Guten morgen zusammen..

Danke, Dir auch.

..
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10:
if($_REQUEST[add]=='true' and $_REQUEST[insert]=='true') { 
if (count($REQUEST[mitarbeiter])>0) 
      $kategorienstr = implode($REQUEST[mitarbeiter],"&Mitarbeiter[]="); 
$db->query("insert into vb_dienste (mid, beschreibung, artikel) values ('$_REQUEST[mitarbeiter]','$_REQUEST[beschreibung]','$_REQUEST[artikel]')"); 
$id = mysql_insert_id(); 
for ($i=0; $i<count($_REQUEST[mitarbeiter]); $i++) { 
$db->query("insert into vb_verweis (mitarbeiterid, dienstleistungid) values ('$_REQUEST[mitarbeiter][$i]','$id')"); 
} 
echo "<div class='text'>Die Dienstleistung wurde angelegt.<br><br>\n"; 
}

Leider schreibt er immer nur einen Datensatz in die DB, so das auch immer nur ein Mitarbeiter mit dieser Dienstleistung verknüpft ist.

Ich würde mal schätzen da ist nur ein Mitarbeiterdatensatz übertragen.
Fehler im formular?
P.S.: Nacfolgend schreibe ich in das Zitat

Und hier eine Änderung -> wenn ich es so ändere (ich weiß nciht sehr glücklich das ganze), dann wirft er mir allen 4 mal in die Datenbank:

1: 
2: 
3: 
4: 
5: 
6: 
7:
// Datensatz in DB speichern 
for ($i=0; $i<count($_REQUEST['mitarbeiter']); $i++) { //macht etwas mit allen gesendeten Datensätzen
      foreach ($_REQUEST['mitarbeiter'] as $mitarbeiter) { // und nocheinmal, also sinnlos
            $db->query("insert IGNORE into vb_verweis (mitarbeiterid, dienstleistungid) values ('$mitarbeiter','$id')"); 
      } 
} 


Da hast Du doppelt gemoppelt. Nimm die for () schleife raus und lass foreach.
Schau dir den HTML Quelltext deines formulares an der ist wahrscheinlich falsch. (da ist bestimmt ein </form> wo es nicht hingehört)
Aber ohne mehr quelltext kann ich nichts sagen
von brali
Wenn ich aus dem zweiten beispiel den eintrag in die DB so ändere:



1: 
2: 
3:
for ($i=0; $i<count($_REQUEST['mitarbeiter']); $i++) { 
foreach ($_REQUEST['mitarbeiter'] as $mitarbeiter) { 
$db->query("insert IGNORE into vb_verweis (mitarbeiterid, dienstleistungid) values ('$mitarbeiter[$i]','$id')"); 


$mitarbeiter[$i] einfüge, schreibt er mir zwar meine makierten datensätze in die DB aber auch 2 leere, weil ich 4 mögliche Auswahlkriterien habe.

ich blicke nichtmehr durch

Nach oben