[MYSQL/PHP] Datensatz ncht nehmen, falls schon existiert

piano

Mitglied
Hallo,
ich habe zu meinem Problem schon so manches Thema gefunden, aber irgendwie werde ich daraus nicht schlau...
Also:
Ich habe 2 Tabellen
1. alle - id | name | kat | sl | we
2. plan - gid | mo | di | mi | do | fr | sa | so

Aus der Tabelle "alle" hole ich zufällig Datensätze heraus und trage die ids in "plan" unter den Wochentagen ein.
Ich möchte jedoch, dass die Zufälligkeit sich darauf beschränkt, nur Datensätze aus "alle" zu nehmen, bei denen die id noch nicht in irgendeiner Spalte (außer gid) in "plan" existiert.
Jedoch habe ich keine Ahnung wie ich das machen soll :(
Vllt hatte jmd schonmal dasselbe Problem &/od kann mir helfen?
Viele Grüße, piano
 
arbeite doch mit einer while-Schleife
also
PHP:
while ($row = mysql_fetch_array($deinquery, $deinconnect))
{
if ($row[1] != $eintrag)
{
//eintragen
}
else echo 'Existiert schon'
}
 
hmmm....meine Schleife sieht jetzt so aus

PHP:
while ($row = mysql_fetch_assoc($result1) AND $start1 <= 4 AND $row5 = mysql_fetch_row($result5)) {
	
		if ($row5[1] != $row['id'] AND $row5[2] != $row['id'] AND $row5[3] != $row['id'] AND $row5[4] != $row['id'] AND $row5[5] != $row['id'] AND $row5[6] != $row['id'] AND $row5[7] != $row['id']) {
		    echo "<tr> <td>$wochentag[$start1]</td> <td>$row[name]</td> <td>$row[schule]</td> <td>$row[we]</td> <td>$row[kat]</td></tr>";
		}
		else {
			echo "existiert bereits";
		}
		
        $sql3 = "UPDATE plan SET $wochentag2[$start1]='$row[id]' WHERE gid='$gid'";
        $result3 = mysql_query($sql3);
        $start1++;
    }

aber irgendwie zeigt der nix an?!

Und weiteres Problem:
statt dem echo in else müsste dann ein Eintrag eingetragen werden, der nocch nicht existiert...

mmh...vllt könnte man auch Einträge suchen, die noch nicht existieren und daraus den plan erstellen? So, als ganze andere Möglichkeit...

---edit---
Habs jetzt auch schon mit LEFT JOIN probiert, hab aber auch ka, wie ich da weitermachen soll...funktioniert einfach nicht *verzweifel*
 
Zuletzt bearbeitet:
PHP:
    $sql1 = "SELECT id FROM gerichte";
    $result1 = mysql_query($sql1);
	$array_dat1=mysql_fetch_array($result1);
	
	$sql5 = "SELECT p1, p2, p3, p4, p5 FROM plaene";
    $result5 = mysql_query($sql5);
	$array_dat2 = mysql_fetch_array($result5);
	
	$vergleich = array_diff($array_dat1, $array_dat2);
	echo "$vergleich";

Ich habs jetzt mit array_diff ausprobiert, aber er zeigt mir nichts an. Ich denk mal, dass es daran liegen könnte, dass er nicht alle Daten in den arrays gespeichert hat? Muss ich das noch nicht mit einer Schleife machen? Wenn ja, vllt könnte mir jmd den Code geben oder erklären, denn bei mir hat bis jetzt noch gar nichts was ich probiert habe genützt.

weiterer Versuch

PHP:
while($row1 = mysql_fetch_assoc($result1) AND $row5 = mysql_fetch_assoc($result5)){
		$row1_neu = $row1['id'];

		$row5_neu = $row5['p1'];
		$row5_neu .= $row5['p2'];
		$row5_neu .= $row5['p3'];
		$row5_neu .= $row5['p4'];
		$row5_neu .= $row5['p5'];
	}
	
		$vergleich = array_diff($array_dat1, $array_dat2);
		$nicht_ent = array_diff($row1_neu, $row5_neu);
		echo "$vergleich ";
	print_r($vergleich);
		echo "  vergleich<br>";
	print_r($row1_neu);
		echo "  row1_neu<br>";
	print_r($row5_neu);
		echo "  row5_neu<br>";
	print_r($nicht_ent);
		echo "  nicht_ent<br>";

gibt mir aus

Array ( [0] => 1 [id] => 1 ) vergleich
9 row1_neu
7071727374 row5_neu (Anm.:Werte der Zeile mit der id7 = letzte Zeile)
nicht_ent
 
Zuletzt bearbeitet:
Hmm
mal schaun ^ ^

Ersteinmal:
Schreibe statt AND lieber &&
Ist moderner ;)

Hast du $start1 vorher deklariert
also $start1 = 0; `?
 
erstmal danke
$start1 = 0; : ja, hab ich.
bei AND war ich mir nich sicher, kann man das denn auch in sql-Abfragen nutzen? Meist hab ich das ja genutzt, aber bei sql Abfragen wusst ichs halt nicht und hab dann einfach überall AND genommen
 
Was mir auch noch auffällt

Bei mysql_fetch_array musst du in der Klammer einmal den query angeben
also z.B. $result1 und dann ein , und die Variable, wo du Verbindung aufnimmst,
z.B $connect
wenn $connect = ('localhost', 'login', 'passwort');

verstanden?
 
schon. aber das muss man doch nich machen, oder?
bin jetzt hats auch immer so get, und dass wird mein Problem doch nich lösen...
 
Zurück