kostenloser Webspace werbefrei: lima-city


mysql INSERT mit IF Bedingung ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    anlagegeld

    anlagegeld hat kostenlosen Webspace.

    Hallo

    ich habe eine tabelle mit url, titel, bechreibung, etc
    User sollen neue Links vorschlagen können

    wie prüfe ich am besten, ob neue URL (und/oder neuer Titel) bereits in der Tabelle ist
    um keine doppelten Einträge zu bekommen ?

    gibt es sowas wie eine IF Bedingung für INSERT Befehl
    ... nur eintragen wenn url nicht in Tabelle und wenn titel nicht in Tabelle

    geht das auch direkt im INSERT Befehl ?

    INSERT INTO tab_name (feldname1, feldname2, feldname3) 
    VALUES (wert1, wert2, wert3) 
    IF ( ... nur wenn feldname1 noch nirgends den Wert wert1 hat ) 
    AND IF  ( ... nur wenn feldname2 noch nirgends den Wert wert2 hat )


    ... aber wie ? ... geht das überhaupt, quasi innerhalb INSERT ne Abfrage ob schon vorhanden ?
    wenn ja, bitte ein Beispiel, Danke !

    oder muss ich vor dem INSERT eine Abfrage machen ?

    SELECT url, titel FROM ... WHERE (url = '$neu_url' OR titel = '$neu_titel')

    und dann mit ...
    if (mysql_num_rows($query) > 0) { /* schon vorhanden */ } else { /* .... ok ... INSERT ...*/ }
    also vor dem INSERT prüfen ???
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ja, du hast recht.



    $abfrage = mysql_query("SELECT spalte FROM tabelle WHRER link = '$link_vom_user'");
    $reihen = mysql_num_rows($abfrage);
    if($reihen == 0){
       mysql_query("INSERT -----");
    }else{
      echo "Bereits dabei, der Link.";
    }


    mysql_num_rows
    Zählt die Reihen vom angegebenen Query.

    Und du hast ja ich nehme jetzt mal an die Variable
    $_POST['link'] = $link_vom_user;


    Und du wählst alles von der tabelle aus, welches den Link vom User beinhaltet, und die If-Abfrage frägt halt wenn die Anzahl 0 ist, dann einfügen, wenn nicht(dann ist ja bereits ein Eintrag vorhanden), dann soll er sagen "Bereits dabei, der Link.".

    Beitrag zuletzt geändert: 29.10.2011 17:04:56 von geilerheiler
  4. Autor dieses Themas

    anlagegeld

    anlagegeld hat kostenlosen Webspace.

    ok, also muss ich doch die Abfrage vorher machen

    und ist das richtig, für ... url ODER titel ist vorhanden

    WHERE (url = '$neu_url' OR titel = '$neu_titel')


    oder muss ich da zwei Abfragen machen, je eine für url und eine für titel ?

  5. Kommt drauf an, vielleicht macht einer, ich weiß ja nicht was dein Script macht, aber
    titel = Online-Kaufhaus link = http://ebay.de
    und der andere macht es so
    titel = Online-Kaufhaus link = http://amazon.de


    Das sind ja zwei verschiedene Links.

    Ansonsten machste einfach so:

    "SELECT url,titel FROM tabelle WHERE url = '$url_user' AND titel = '$titel_user'"


    oder eben einfach nur so:

    "SELECT url FROM tabelle WHERE url = '$url_user'"




  6. Geht auch ohne zwei Abfragen und ist in einer Abfrage sogar performanter in den meisten Fällen.
    http://sql.1keydata.com/de/sql-unterabfrage.php

    Mit Unterabfragen und der WHERE Klausel geht das recht einfach. Es gibt auch andere wege, aber das ist die leichteste. ;)



    Edit:
    Achso. Eine DBS interne Lösung wäre einen Primärschlüssel aus den beiden Werten bestehend zu definieren. Wenn ein gleiches Paar nocheinmal eingetragenw erden solls treikt dann das DBS und lehnt den Eintrag ab.


    Edit2: Gut. Dann ignoriert das und macht es so... Selber schuld. :3

    Beitrag zuletzt geändert: 30.10.2011 1:23:09 von adrians
  7. Autor dieses Themas

    anlagegeld

    anlagegeld hat kostenlosen Webspace.

    geilerheiler schrieb:
    Kommt drauf an, vielleicht macht einer, ich weiß ja nicht was dein Script macht, aber
    titel = Online-Kaufhaus link = http://ebay.de
    und der andere macht es so
    titel = Online-Kaufhaus link = http://amazon.de


    Das sind ja zwei verschiedene Links.


    ja, aber ich will die Titel für Rewrite zu einer Einzel-Seite je Eintrag verwenden
    da kann ich keine zwei gleichen Titel gebrauchen, oder ich muss bei mehrfachen noch ne Art Zähler bauen

    geilerheiler schrieb:
    Ansonsten machste einfach so:
    "SELECT url,titel FROM tabelle WHERE url = '$url_user' AND titel = '$titel_user'"



    naja, dann ist aber die Bedingung AND so, dass nur bei titel UND url schon da
    es soll aber auch dann wenn nur eins von beiden schon da ist ein Ergebnis liefern
    also doch eher OR ...

    oder ichmach die Spalten mit UNIQUE Index und dann INSERT mit IGNORE ...
    macht das vielleicht mehr Sinn ?






    Beitrag zuletzt geändert: 29.10.2011 19:16:22 von anlagegeld
  8. anlagegeld schrieb:
    geilerheiler schrieb:
    Kommt drauf an, vielleicht macht einer, ich weiß ja nicht was dein Script macht, aber
    titel = Online-Kaufhaus link = http://ebay.de
    und der andere macht es so
    titel = Online-Kaufhaus link = http://amazon.de


    Das sind ja zwei verschiedene Links.


    ja, aber ich will die Titel für Rewrite zu einer Einzel-Seite je Eintrag verwenden
    da kann ich keine zwei gleichen Titel gebrauchen, oder ich muss bei mehrfachen noch ne Art Zähler bauen

    geilerheiler schrieb:
    Ansonsten machste einfach so:
    "SELECT url,titel FROM tabelle WHERE url = '$url_user' AND titel = '$titel_user'"



    naja, dann ist aber die Bedingung AND so, dass nur bei titel UND url schon da
    es soll aber auch dann wenn nur eins von beiden schon da ist ein Ergebnis liefern
    also doch eher OR ...

    oder ichmach die Spalten mit UNIQUE Index und dann INSERT mit IGNORE ...
    macht das vielleicht mehr Sinn ?








    Wenn es schon nicht eintragen soll, wenn schon eins von beiden doppelt ist, dann natürlich OR.
    Normal sollte dein Problem dann gelöst sein, wenn du das mit "OR" machst, und die Abfrage von oben nimmst.

    Beitrag zuletzt geändert: 29.10.2011 19:41:49 von geilerheiler
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!