preg_match

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

  • preg_match

    Heyho,

    folgendes Problem:

    ich gebe mehrere Sachen auf einer Seite aus, zb:

    name britt endname alter 18 endalter ort berlin endort

    So, wie sich jeder denken kann, möchte ich nun die Werte "britt" "18" und "berlin" aus der Seite holen und in 3 Variablen speichern. Leider weiß ich grad nicht wie ich das anstellen soll.. mittels preg_match hab ich bisher immer nur 1 Wert geholt, und weiß leider nicht wie ich da weiterkomme, bzw mehrere Abfragen durchführe..

    Kann mir da wer helfen?

  • #2
    Hat sich im Grunde auch schon wieder erledigt..diente ursprünglich nur der Text Formatierung.. habs nu mit ereg_replace() gemacht..

    Thema geclosed... meinetwegen auch delete..

    Kommentar


    • #3
      pack ichs hier mal mit rein, möche nich extra n neuen Thread aufmachen, wirkt so nach spamming...

      Ich hab ein kleines Script gebastelt, welches 2 input felder beinhaltet. In das 1. wird der name geschrieben, in das 2. die Informationen.

      PHP-Code:
      <form action="form2.php" method="post">
      Name:
      <
      br>
      <
      input type="text" size="17" name="Name">
      <
      br>
      <
      textarea name="Inhalt" cols="50" rows="10"></textarea>

        <
      br><br>
        <
      center>
        <
      input type="submit" value="OK">
        </
      center>
        </
      form

      Die dort eingegebenen Daten werden nun an form2.php übergeben, diese sieht wie folgt aus:

      PHP-Code:
      <?
      $Inhalt = $HTTP_POST_VARS["Inhalt"];
      $Name = $HTTP_POST_VARS["Name"];
      $arrayname = explode("..::",$Inhalt); 




      $arrayname[1] = ereg_replace("::..",":",$arrayname[1]);
      $arrayname[2] = ereg_replace("::..",":",$arrayname[2]);
      $test = $arrayname[1];
      $test2 = $arrayname[2];


      mysql_connect("localhost",
        "Username","passwort") or die
        ("Keine Verbindung moeglich");
        mysql_select_db("db") or die
        ("Die Datenbank existiert nicht");  
      $eintrag = "INSERT INTO ust_unformated (name, sonden, barracuda) VALUES ('$Name', '$test',
        '$test2')";
      $eintragen = mysql_query($eintrag);


      echo "$arrayname[1]";
      echo "<br>$arrayname[2]";
      echo "<br>$Name";
      ?>
      (bis hierhin würde alles einwandfrei funktionieren)
      So, nun wird jedesmal, wenn ein User etwas übermittelt, in die db eingetragen. Ich wollte aber nun folgendes, das wenn ein user der bereits einmal einen Eintrag in die Datenbank vorgenommen hat, nun seinen Namen wieder in das vorgesehene InputFeld schreibt, der Eintrag nicht einfach in die Tabelle vorgenommen wird, und es dadurch zu zich Einträgen mit den gleichen Nicks kommt, dass mittels if-Abfrage vorher gefragt wird, ob der Nick im input Feld bereits in der db vorhanden ist, falls dies der fall ist, sollen diese Spalten ledeglich geupdated werden.

      Ich hatte da mal was probiert, die eigt Ifabfrage funktionierte auch, allerdings die Operation, nämlich das updaten der jeweiligen Spalte, nichtmehr.

      Sah wie folgt aus, keine Ahnung ob das richtig oder total falsch ist.. hab ich noch nich so oft gemacht...hier der update code, der nach der Abfrage eingefügt wird:


      PHP-Code:
      if($Name == $name2)
          {
           
      $aendern "UPDATE ust_unformated Set sonden = $test, barracuda = $test2";
      $update mysql_query($aendern);


      anschliessend wird dann mit "else" der Rest übergeben, falls der Username eben noch nciht vorhanden sein sollte, und somit ein normaler Eintrag möglich ist.


      Problem: Das Update funktioniert nicht. Es wird nichts in die db eingetragen, wenn dort massig Fehler sind, würde mich das nicht wundern.. also bitte schauts euch mal kurz an.


      Greetz

      Kommentar


      • #4
        mysql_error

        falls test und test2 string sind, solltest du sie in anführungszeichen setzen.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Hab "mysql error" mal eingebaut, test und test 2 in Anführungszeichen gesetzt, nun scheint er aber keine Übereinstimmung mehr bei der if Abfrage zu finden, da er direkt zum else springt und einen Doppeleintrag vornimmt.

          Gibt es denn irgendwas an der If Abfrage und update Funktion auszusetzen? Es wird der name, der im input Feld übergeben wird

          PHP-Code:
          $Name $HTTP_POST_VARS["Name"]; 
          mit der Spalte name in der tabelle abgeglichen,

          PHP-Code:
          $abfrage "SELECT name AS name2 FROM ust_unformated";
          $ergebnis mysql_query($abfrage);
          if(
          $Name == $name2
          Allderings macht er es ja nicht, und eine Error msg oder ähnliches gibt es auch nicht..

          Kommentar


          • #6
            Original geschrieben von Philbil
            PHP-Code:
            $abfrage "SELECT name AS name2 FROM ust_unformated";
            $ergebnis mysql_query($abfrage);
            if(
            $Name == $name2
            dir fehlt noch das absolute grundlagenwissen, wie man mit PHP das ergebnis einer mysql-abfrage auswertet - also mach dich ran:

            http://schattenbaum.net/php/mstart.php
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Peinlich sag ich da nur

              PHP-Code:
              $abfrage "SELECT name AS name2 FROM ust_unformated";
              $ergebnis mysql_query($abfrage);
               while(
              $row mysql_fetch_object($ergebnis))
                  {
                  if(
              $row->name2 == $Name)
                  {
                   
              $aendern "UPDATE ust_unformated Set sonden = '$test', barracuda = '$test2'";
              $update mysql_query($aendern);

              }
              else
              {
                 
              $eintrag "INSERT INTO ust_unformated (name, sonden, barracuda) VALUES ('$Name', '$test',
                '
              $test2')";
              $eintragen mysql_query($eintrag);
              }
                  } 

              Funktioniert einwandfrei.. danke für die etwas.. "peinliche" Hilfe

              Kommentar


              • #8
                Doch nochmal eine Frage zu der If Abfrage. Mit dieser will ich ja bezwecken das es keine Doppelposts gibt. So, wenn sich nun aber 10 User bereits eingetragen haben, stehen auch 10 Werte in der Spalte "name". Wenn ich nun einen Abgleich mache alla

                PHP-Code:
                 if($row->name2 == $Name
                Sieht das ja so aus, dass er bei "name2" sämtliche Werte auflistet, dies als einen Wert ansieht und mit der variable "$Name" abgleicht. Wenn nun zb der Nick Bernd bereits drinsteht, 9 andere User auch, und er sich wieder einträgt, sieht es ja so aus, dass die if abfrage folgenden Vergleich vornimmt: Berndname1name2Name3name4name5name6name7name8name9 = Bernd

                Da ist klar, das er keine Übereinstimmung findet und zu dem "else" überspringt, und so eben Doppelposts vornimmt.
                So, nun meine Frage da ich es nicht genau weiß, wie kann ich da einen vernünftigen Abgleich durchführen??

                Kommentar


                • #9
                  Original geschrieben von Philbil
                  Sieht das ja so aus, dass er bei "name2" sämtliche Werte auflistet
                  unsinn, wie kommst du denn darauf?

                  $row beinhaltet jeweils nur den aktuellen datensatz.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Ich hatte es getestet, sobald ich mehr als einen Eintrag in der Spalte hatte, sprang er mir sofort aufs else über.Als ich aber nur einen Eintrag drin hatte, und mit dem Namen der drin stand gepostet hatte, girff die If Abfrage.

                    Kommentar


                    • #11
                      schon mal per echo die beiden Werte ausgegeben?

                      Kommentar


                      • #12
                        Hab das problem schon, muss es nur noch lösen..

                        folgendes: wenn ich einen Eintrag vornehme, wird geprüft ob Username vorhanden ist, falls ja, editieren, falls nein, neuen eintrag, bei dem editieren ist nun das Problem, das er mir die komplette Spalte editiert und alle Werte mit dem neuen überschreibt.

                        Wegen der If-Abfrage, hatte zum test bei "true" einfach mal "echo vorhanden" beim false, also else, "echo nicht vorhanden" ausgeben lassen.
                        Sobald ich mehr als einen namen in der db hab, hatte ich bei der Ausgabe:

                        nicht vorhanden
                        nicht vorhanden
                        nicht vorhanden
                        vorhanden

                        er geht also jeden einzelnen namen durch macht seine Aktion und beginnt von neuem, wie kann ich das unterbinden, sprich das er wirklich nur auf den einen namen prüfen kann?


                        Obriges Problem hat sich erledigt, also das mit der if.abfrage. Allerdings, wenn die Bedingung nich "true" sein sollte, sollte er mir aufs else umspringen, macht er aber nicht.. warum?
                        Zuletzt geändert von Philbil; 08.02.2005, 15:18.

                        Kommentar

                        Lädt...
                        X