Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

folgendes Problem

$sql= "SELECT `id` FROM `attribute` WHERE `id` = '$inhalt'";

$query=mysql_query($sql);

while($res=mysql_fetch_array($query))

{

if ($res["id"] != $inhalt)

{

echo "HALLO";

$sql_insert = "INSERT INTO `attribute` (`id`) VALUES ('$inhalt')";

mysql_query($sql_insert);

}

}

mein Problem liegt 99% in der zeile

if ($res["id"] != $inhalt)

er spring aus dem IF raus auch wenn die frage stimmt

wenn ich dort nicht auf ungleichheit sondern auf gleichheit prüfe gehts!!!!

aber dann müsste der sql_insert in ein else aber dort springt er auch nicht rein.....

Ich bin mit meinem PHP am ende .....

Geschrieben

Ich bin mit meinem PHP am ende .....

Ich auch :confused:


$sql= "SELECT `id` FROM `attribute` WHERE `id` = '$inhalt'";
$query=mysql_query($sql);


while($res=mysql_fetch_array($query))
{
if ($res["id"] != $inhalt)
{
echo "HALLO";
$sql_insert = "INSERT INTO `attribute` (`id`) VALUES ('$inhalt')";
mysql_query($sql_insert);
}
}
[/php]

Du frägst aus der Datenbank alle Attribute IDs mit der id X ab. Dann gehst du dein Ergebnis durch, und wenn eine ID nicht X ist, dann fügst du sie neu ein. Hallo?

Aber so langsam glaub ich zu verstehen was du willst. ID nur dann anlegen, wenn noch nicht vorhanden...

[php]
$sql= "SELECT `id` FROM `attribute` WHERE `id` = '$inhalt'";
$result=mysql_query($sql);

if (!(mysql_fetch_field($result) > 0))
{
echo "HALLO";
$sql_insert = "INSERT INTO `attribute` (`id`) VALUES ('$inhalt')";
mysql_query($sql_insert);
}

Davon ausgehen, dass ID der primary key ist. Es kann dann eh maximal 1 mal die ID X vorkommen. Die ID fängt bei 1 an (normale AutoInc ID bei MySQL). Wenn die zurückgegebene ID nicht > 0 ist, dann gibt es noch keine ID X. (Nichts gefunden auch)

EDIT:

Grade gemerkt, AutoInc passt ja hier gar nicht :D Aber egal. Sollte dennoch so in der Art klappen.

Geschrieben

Ich versteh nicht was du da coden möchtest. Erst liest du alles aus wo id und $inhalt gleich sind und anschliessend machst du etwas wenn sie sich unterscheiden. Ist doch klar das das nie eintrifft.

Geschrieben

Richtig, ich will prüfen ob ID vorhanden, wenn nicht neu anlegen

hallo war nur test ob er überhaupt rein läuft ;)

mich wundert es nur, dass er wenn es == heist reinläuft und bei != bockts ihn net

Geschrieben

Hallo,

evtl stimmen die Typen vom Datenfeld und deiner PHP Var nicht

Du kannst mal mit "===" prüfen, das berücksichtigt auch den Datentyp. Aber ich verstehe leider auch nicht was Du da genau machen willst. Du willst einfach eine neue ID vergeben, wenn sie vorhanden ist eine andere vergeben?

Also entweder machst Du so lange ein "INSERT IGNORE" bis Du mit einem nachfolgenden "SELECT" Deine ID findest, oder warum schaust Du nicht zuerst nach, ob die ID schon vergeben ist (ResultRows >= 1) und ermittelst eine neue und beginnst das "Spiel" von neuem? Wenn Du die ID "berechnest" und sie mehrfach vorkommen, sollte dann ist irgendwas in Deinem Modell nicht okay, denn die ID sollte ja unique sein.

Vielleicht kannst Du uns ein paar mehr Informationen zu dem Problem geben

HTH Phil

Geschrieben
mich wundert es nur, dass er wenn es == heist reinläuft und bei != bockts ihn net

Also: Du wählst einen Satz aus der DB, der die id 5 hat. Dann läufst du dein Ergebnis durch und prüfst ob die id 5 ist. Da alle ids == 5 sind, läuft er natürlich da rein. Da aber nie eine id != 5 ist, springt er auch nie da rein.

Und das mysql_fetch_field ist bei mir im Beispiel oben übrigens total falsch. Wir arbeiten hier immer mit einer Klasse zum Zugriff auf MySQL und da haben wir so eine Funktion. Ich hab das hier verwechselt.

Geschrieben
Wenn Du die ID "berechnest" und sie mehrfach vorkommen, sollte dann ist irgendwas in Deinem Modell nicht okay, denn die ID sollte ja unique sein.

Vielleicht kannst Du uns ein paar mehr Informationen zu dem Problem geben

Ich berechne die ID ja nicht nach der ich suche, die wird von mir in ein textfeld geschrieben, das ist dann $inhalt . Dann soll er in der DB suchen ob es die ID schon gibt wenn es sie gibt macht er erst mal nix und wenn es sie nicht gibt soll er sie anlegen, und zwar mit dem Wert der textfeldes bzw. $inhalt

Das die ID Unique sein sollte ist ja klar..... aber der benutzer der die mögliche ID in das Textfeld schreibt weis ja nicht ob sie schon vorhanden ist....

Meine Aufgabe war/ist:

ich habe z.B. 10 Handys jedes Handy hat eine Seriennummer und zur jeder Seriennummer bzw. Handy gibt es unterschiedliche Eigenschaften.

Diese Eigenschaften soll man per eingabe der Seriennummer (in meinem prog die ID) angezeigt bekommen.

Wenn ich jetzt aber ein 11tes Handy kaufe gibt es diese Seriennummer noch nicht in der DB, also gebe ich sie trotzdem genau so in das Textfeld ein und sie wird in die DB geschrieben.

!! Jetzt aber bitte nicht umschweifen auf die anzeige der eigenschaften und so das war ja nicht die frage ;) !!

Geschrieben

Dann hast du den falschen Ansatz in deinem Beispiel gewählt. Weil wenn die Seriennummer nicht vorhanden ist bekommst du natürlich auch keinen Datensatz zurück den du mit deinem fetch_array auswerten kannst. Schau dir mal die Funktion mysql_num_rows an. Dann kannst du schauen ob es überhaupt ein Ergebnis gibt und wenn nicht fügst du ein. Alternativ kannst du auch anstelle von dem select id ein select count(id) nehmen. Dann bekommst du sofern die ID eindeutig ist entweder 0 oder 1 zurück und kannst die dann mit deinem fetch_array auswerten.

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...