REDNose Geschrieben 30. Juli 2007 Teilen Geschrieben 30. Juli 2007 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 ..... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 30. Juli 2007 Teilen Geschrieben 30. Juli 2007 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 Aber egal. Sollte dennoch so in der Art klappen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Carnie Geschrieben 30. Juli 2007 Teilen Geschrieben 30. Juli 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
REDNose Geschrieben 30. Juli 2007 Autor Teilen Geschrieben 30. Juli 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 30. Juli 2007 Teilen Geschrieben 30. Juli 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 30. Juli 2007 Teilen Geschrieben 30. Juli 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
REDNose Geschrieben 31. Juli 2007 Autor Teilen Geschrieben 31. Juli 2007 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 !! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Carnie Geschrieben 31. Juli 2007 Teilen Geschrieben 31. Juli 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
REDNose Geschrieben 31. Juli 2007 Autor Teilen Geschrieben 31. Juli 2007 Oke... ich probiere das mal aus Thx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
REDNose Geschrieben 31. Juli 2007 Autor Teilen Geschrieben 31. Juli 2007 ich habs jezz mit mysql_num_rows gemacht....und es geht THX Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.