Abfrage ob Datensatz vorhanden,...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage ob Datensatz vorhanden,...

    Hallo Community,
    ich habe ein Formular erstellt mit dem ich logischerweise Daten in die Datenbank schreiben möchte.
    Nun das Formuar war sehr simple und der Eintrag findet in der DB auch perfekt statt.

    Php,MySql und Smarty

    Bevor nun die Daten in die Datenbank geschrieben werden, sollte geprüft werden ob der TITEL schon vorhanen ist in der DB.

    Vielleicht kann mir jemand mit einem Geistesblitz weiterhelfen?

    Bitte nicht lachen über das Html und Php bin ganz und gar Anfänger und arbeite nicht viel mit PHP und co.

    MfG Thomas


    Formular
    PHP-Code:
    {include file="header.tpl"
    <
    table align="center" width="872" border="0" cellpadding="0" cellspacing="0">
      <
    tr>
        <
    td height="19" colspan="7" valign="top" background="./templates/index/blanko_01.jpg">&nbsp;</td>
      </
    tr>
      <
    tr>
        <
    td width="20" rowspan="4" valign="top" background="./templates/index/blanko_02.jpg">&nbsp;</td>
        <
    td width="30" rowspan="4" valign="top" class="leerfelder_index">&nbsp;</td>
        <
    td width="20" height="20" valign="top"><img src="./templates/box/e_l_o.jpg" width="20" height="20" /></td>
        <
    td width="575" valign="top" background="./templates/box/b_o.jpg">&nbsp;</td>
        <
    td width="20" valign="top"><img src="./templates/box/e_r_o.jpg" width="20" height="20" /></td>
        <
    td width="30" rowspan="3" valign="top" class="leerfelder_index">&nbsp;</td>
        <
    td width="177" rowspan="4" valign="top" background="./templates/index/blanko_04.jpg">&nbsp;</td>
      </
    tr>
      
      <
    tr>
        <
    td height="164" valign="top" background="./templates/box/vertikal_links.jpg">&nbsp;</td>
      <
    td valign="top" class="textfeld_mitte">3Ds Max Wiki
        
    <hr />
        <
    form action="inhalt_eintragen.php" method="post" name="Eintrag">
          <
    p align="center"> <br />
            
    Willkommen<strong$username 
            
    </strong><br />
            <
    br />
            <
    strong>Tragen Sie hier Ihr Wissen zu verschiedenen Max Applicationen ein. </strong></p>
          <
    p>Selektiere hier den Bereich in dem du etwas eintragen m&ouml;chtest. <br />
                <
    select name="sektion" size="3" >
                  <
    option value="plugins">Plugins</option>
                  <
    option value="modfikatoren">Modifikatoren</option>
                  <
    option value="reactor">Reactor</option>
                </
    select>
                <
    br />
              <
    br />
              
    Hier bitte kurz und b&uuml;ndig den Titel eintragen &quot;z.BBoolean oder Biegen &quot;<br />
              <
    input type=text size=40 name="titel">
              <
    strong>Titel</strong><br />
            <
    br>
            
    Trage hier maximal 5 W&ouml;rter ein, die sich mit deinem Thema identifizieren <br />
            
    Das erleichtert sp&auml;ter, die Suche f&uuml;r andere User. <br />
            <
    input type=text size=40 name="suchwort">
            <
    strong>Suchw&ouml;rter</strong><br />
            <
    br />
            <
    strong>Inhalt </strong><br />
            
    Nun hast du die M&ouml;glichkeit deinen Text zu posten.<br />
          
    Dir stehen die Funktionen des BBcodes zur Verf&uuml;gung.</p>
          <
    p>
            <
    label>
            <
    textarea name="inhalt" cols="65" rows="10"></textarea>
            </
    label>
            <
    br />
            <
    br />
            <
    input type=submit value="Abschicken">
            
            <
    input type=reset value="Zurücksetzen">
          </
    p>
        </
    form>
        <
    br /></td>
        <
    td valign="top" background="./templates/box/vertikal_rechts.jpg">&nbsp;</td>
      </
    tr>
     <
    tr>
        <
    td height="20" valign="top"><img src="./templates/box/e_l_u.jpg" width="20" height="20" /></td>
      <
    td valign="top" background="./templates/box/b_u.jpg">&nbsp;</td>
        <
    td valign="top"><img src="./templates/box/e_r_u.jpg" width="20" height="20" /></td>
      </
    tr>
      
      <
    tr>
        <
    td height="19" colspan="4" valign="top" class="leerfelder_index">&nbsp;</td>
      </
    tr>
    </
    table>
    {include 
    file="footer.tpl"

    Die Datenverarbeiten und in DB schreiben
    PHP-Code:
    <?php

       error_reporting
    (E_ALL);    
       include 
    'config/config.php';
       
       
    // Konfigurationsdatei laden       
       
            
    if(empty($_POST['sektion'])) 
            {
                  
    header ("Location: error.php");EXIT;
            }

            if(empty(
    $_POST['titel'])) 
            {
            
    header ("Location: error.php");EXIT;
            }
             
            if(empty(
    $_POST['suchwort'])) 
            {
            
    header ("Location: error.php");EXIT;
            }

            if(empty(
    $_POST['inhalt'])) 
            {
            
    header ("Location: error.php");EXIT;
                } 


        
    $db_link mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
        
    $db_name =  "php";


        if ( ! 
    $db_link )
        die( 
    "Keine Verbindung zu MySQL" );
        
    mysql_select_db$db_name$db_link )
        or die ( 
    "Konnte $db_name nicht öffnen: ".mysql_error() );


           
        
    $anfrage "INSERT INTO lexikon (sektion, titel, suchwort, inhalt) values('".$_POST['sektion']."', '".$_POST['titel']."', '".$_POST['suchwort']."', '".$_POST['inhalt']."')";

             
    mysql_query$anfrage$db_link )
             or die ( 
    "Konnte Datensatz zu \"php\"-Tabelle".
             
    " nicht hinzufügen: ".mysql_error() );

    mysql_close$db_link );

    ?>


    <?php

        error_reporting
    (E_ALL);
        
            require 
    'libs/Smarty.class.php';
            
            
    $smarty = new Smarty;
        
        
    $smarty->display('eintrag_erfolg.tpl');

    ?>
    Zuletzt geändert von escape; 21.05.2006, 22:51.

  • #2
    Entweder du machst vor dem INSERT kurz SELECT mit "WHERE titel = '$titel'" um zu erfahren, ob es den Titel schon gibt oder du definierst die Spalte titel als unique und fängst ab, wenn INSERT fehlschlägt.

    Kommentar


    • #3
      So ich habe hier nun für Leute die die selben probs haben eine Funktionierende Lösung

      PHP-Code:
      <?php

         error_reporting
      (E_ALL);    
         include 
      'config/config.php';
         
         
      // Konfigurationsdatei laden       
         
              
      if(empty($_POST['sektion'])) 
              {
              
      header ("Location: eintrag_fehlerhaft.php");EXIT;
              }

              if(empty(
      $_POST['titel'])) 
              {
              
      header ("Location: eintrag_fehlerhaft.php");EXIT;
              }
               
              if(empty(
      $_POST['suchwort'])) 
              {
              
      header ("Location: eintrag_fehlerhaft.php");EXIT;
              }

              if(empty(
      $_POST['inhalt'])) 
              {
              
      header ("Location: eintrag_fehlerhaft.php");EXIT;
                  } 
               
               
      // Mit der Datenbank verbinden

          
      $db_link mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
          
      // Datenbankname auswählen
          
      $db_name =  "php";

      // Wenn Datenbank nicht verfügbar
          
      if ( ! $db_link )
          die( 
      "Keine Verbindung zu MySQL" );
          
      mysql_select_db$db_name$db_link )
          or die ( 
      "Konnte $db_name nicht öffnen: ".mysql_error() );

      // Datensatz überprüfen auf Doppelte Einträge

          
      $sql "SELECT count(*) AS anzahl FROM lexikon WHERE titel = '".$_POST['titel']."'";
          
      $query mysql_query($sql);
          
      $row mysql_fetch_object($query);
          if(
      $row->anzahl 0)
                  {
                  
      // Wenn doppelter Datensatz vorhanden ist leite weiter nach
              
      header ("Location: eintrag_vorhanden.php");
              
              EXIT;
              
                  } 
                  else
                          {

      // Wenn Datensatz nicht vorhanden ist schreibe in Datenbank den Datensatz
      $anfrage "INSERT INTO lexikon(sektion, titel, suchwort, inhalt) values('".$_POST['sektion']."', '".$_POST['titel']."', '".$_POST['suchwort']."', '".$_POST['inhalt']."')";

       
      mysql_query$anfrage$db_link )
               or die ( 
      "Konnte Datensatz zu \"php\"-Tabelle".
               
      " nicht hinzufügen: ".mysql_error() );
               
      mysql_close$db_link );
      }
              
      // Datensatz in Ordnung öffne die Weiterleitung    
      ?>


      <?php

          error_reporting
      (E_ALL);
          
              require 
      'libs/Smarty.class.php';
              
              
      $smarty = new Smarty;
          
          
      $smarty->display('eintrag_erfolgreich.tpl');

      ?>
      Vorlage

      PHP-Code:
      $sql "SELECT count(*) AS anzahl FROM tabelle WHERE E-Mail = '".$_POST['email']."'";
      $query mysql_query($sql);
      $row mysql_fetch_object($query);
      if(
      $row->anzahl 0)
      echo 
      "E-Mail-Adresse schon vorhanden";
      else
      {
      //es folgt der Eintrag in die Datenbank

      Ich hoffe es hilf auch anderen Usern weiter die die selben probleme wie ich haben/hatten

      MfG Thomas

      Kommentar

      Lädt...
      X