Maria: AJAX Datenbankabfrage

So, ich habe gerade ein Formular geschrieben. Der user hatt die Möglichkeit einen Namen und ein select über das Formular in die Datenbank zu speichern.

Via Javascript soll nun überprüft werden, während er seinen Namen tippt oder auf ein select clickt ob die Kombination aus Name+select bereits exisitert.

Ich habe nun die funktion so gebaut:

  
function exists(x){  
	var x = x;  
	var drop = document.getElementById("drop");  
	for(var i=0;i<drop.length;i++){  
		if(drop[i].selected){  
			var y = drop[i].value;  
		}  
	}  
	  
	var xmlhttp;  
	if (window.XMLHttpRequest) {//IE7+, Firefox, Chrome, Opera, Safari  
		xmlhttp=new XMLHttpRequest();  
	} else {// IE6, IE5  
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  
	}  
	xmlhttp.onreadystatechange=function() {  
	if (xmlhttp.readyState==4 && xmlhttp.status==200){  
		document.getElementById("existerror").innerHTML=xmlhttp.responseText;  
		}  
	}  
	xmlhttp.open("GET","jsexist.php?x="+x+"&y="+y,true);  
	xmlhttp.send();  
}  

  
	include('dbconnect.php');  
	  
	$x = $_GET["x"];  
	$y = $_GET["y"];  
	  
	$vorhanden = mysql_query("SELECT title,pid FROM xy WHERE xy.title = '".mysql_real_escape_string($x)."' AND xy.pid = ".mysql_real_escape_string($y).";");  
	  
	if(mysql_num_rows($vorhanden)==0){  
		$response = "nicht vorhanden!";  
	}else{  
		$response = "vorhanden!";  
	}  

Die Variablen ganz normal über javascript in ein div hinein schreiben klappt wunderbar.

Leider ersteint der responsetext aber nicht, allerdings kommt auch kein error. In der Error Console steht auch nicht.

Sieht jemand meinen Fehler?

  1. Moin!

    include('dbconnect.php');

    $x = $_GET["x"];
    $y = $_GET["y"];

    $vorhanden = mysql_query("SELECT title,pid FROM xy WHERE xy.title = '".mysql_real_escape_string($x)."' AND xy.pid = ".mysql_real_escape_string($y).";");

    if(mysql_num_rows($vorhanden)==0){
    $response = "nicht vorhanden!";
    }else{
    $response = "vorhanden!";
    }

      
      
    
    > Sieht jemand meinen Fehler?  
      
    Ganz schlicht und einfach: Wenn Du keine Ausgaben machst, dann kommt auch nichts raus.  
      
    `print $response`{:.language-php} wäre eine Lösung.  
    (Das Javascript-Geraffel habe ich nicht untersucht.)  
      
    MFFG (Mit freundlich- friedfertigem Grinsen)  
      
    fastix  
    
    -- 
    [Des fastix kleines CMS](http://www.fastix.org/fastix-cms/)
    
    1. Moin!

      include('dbconnect.php');  
      
      $x = $_GET["x"];  
      $y = $_GET["y"];  
      
      $vorhanden = mysql_query("SELECT title,pid FROM xy WHERE xy.title = '".mysql_real_escape_string($x)."' AND xy.pid = ".mysql_real_escape_string($y).";");  
      
      if(mysql_num_rows($vorhanden)==0){  
        $response = "nicht vorhanden!";  
      }else{  
        $response = "vorhanden!";  
      }  
      
      
      >   
      >   
      > > Sieht jemand meinen Fehler?  
      >   
      > Ganz schlicht und einfach: Wenn Du keine Ausgaben machst, dann kommt auch nichts raus.  
      >   
      > `print $response`{:.language-php} wäre eine Lösung.  
      > (Das Javascript-Geraffel habe ich nicht untersucht.)  
      >   
      > MFFG (Mit freundlich- friedfertigem Grinsen)  
      >   
      > fastix  
      >   
        
      Bin ich auch darauf gekommen vorhin. Habe unten ein echo $response hin gesetzt.  
        
      Leider besteht das Problem unverändert. Immernoch wedr error nocht sonst was.  
        
      Das Javscript sollte soweit funktionieren, wenn ich einfach in ein html div die beiden variablen per innerHTML reinsetze, sind die Werte korrekt und werden angezeigt.
      
      1. Moin!

        Das Javscript sollte soweit funktionieren, wenn ich einfach in ein html div die beiden variablen per innerHTML reinsetze, sind die Werte korrekt und werden angezeigt.

        Der PHP-Teil ist schon mal Schrott. Du hast auch nicht beachtet, was Dir vorher schon geschrieben wurde. Besser:

          
        include('../nicht_oeffentlich/dbconnect.php'); // liefert hoffentlich $DB (Verbindungskennung)  
        $sql='  
        SELECT  
            COUNT (`title`)  
        FROM  
            `xy`  
        WHERE  
            `title`  = ".mysql_real_escape_string($_GET['x'], $DB).'"  
            AND `pid` = "mysql_real_escape_string($_GET['y'], $DB).'"  
        ';  
          
        # Debug:  
        print '<pre>$sql=&quot;'.htmlentities($sql).'&quot;</pre>';  
          
        $result = mysql_query($sql, $DB) or die ('<pre>'.mysql_error($DB).'</pre>');  
        $row=mysql_fetch_array($result); // Es gibt nur eine Zeile  
        if(!$row[0]){  
            die ("nicht vorhanden!");  
        } else {  
            die ("vorhanden!");  
        }
        

        Was gibt Dein PHP-Skript aus, wenn Du es direkt im Browser aufrufst?
        Erst wenn Diese Ausgaben Deinen Erwartungen entsprechen prüfe Dein Javascript.

        Außerhalb des Debuggens wirst Du für das " or die ('<pre>'.mysql_error($DB).'</pre>')" eine bessere Lösung finden.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

  2. Hi!

    Wenn du versuchst, entgegen der hiesigen Spielregeln, Vorteile zu erlangen, musst du es schon deutlich cleverer anstellen. Die Gemeinsamkeiten zu https://forum.selfhtml.org/?t=206392&m=1400997 sind noch viel zu offensichtlich. Außerdem hast du noch nicht mal alle Hinweise dort abgearbeitet und krankst vermutlich immer noch am selben Problem.

    Lo!

    1. Hi!

      Wenn du versuchst, entgegen der hiesigen Spielregeln, Vorteile zu erlangen, musst du es schon deutlich cleverer anstellen. Die Gemeinsamkeiten zu https://forum.selfhtml.org/?t=206392&m=1400997 sind noch viel zu offensichtlich. Außerdem hast du noch nicht mal alle Hinweise dort abgearbeitet und krankst vermutlich immer noch am selben Problem.

      Lo!

      Hätte ich wert darauf gelegt hätte ich es wohl cleverer angestellt. Ich habe einfach einen Namen eingetippt, was kann ich dafür wenn das Forum kein Login hatt?

      Ausserdemm habe ich das Problem auf das du verlinkst gelöst sonst wäre ich wohl bestimmt nicht schon beim Ajax Part.

      Ausserdemm:

      Wenn die Beschreibung schlecht ist, wird nachgefragt. Und eventuell kommen vom Fragesteller dann noch weitere Informationen. Aber der ganze Prozess des "Würmer aus der Nase ziehens" kann durchaus so zäh und nervig werden, dass der Fragesteller sich wünscht, jemand würde einfach so direkt die Lösung für sein "doch offensichtliches Problem" schreiben. Und schickt nochmal einen zweiten Thread auf die Reise.

      -- Bei mir handelt es sich um ein komplett anderes Problem wie in dem anderen Thread

      »»Dieser zweite Thread hat jetzt ein Problem für Antwortende: Entweder ist er eine exakte Kopie des ersten Postings. Dann fehlen darin natürlich wieder alle Informationen, die im ersten Thread schon versucht wurden in Erfahrung zu bringen.

      --Ist keine exakte kopie, da anderes problem also auch kein fehlen der Informationen

      Tja, du kannst also aufhören dich stolz zu fühlen weil du mich "überführt" hast. Denn anhand des Artikels den du verlinkt hast ist klar zu erkennen dass der Thread hier kein Doppelposting ist da:

      ANDERES Problem
      ANDERE Programmiersprache/Technik

      Wenn du das als Doppelposting anschaust dürfte jeder user hier nur 1 Thread pro leben eröffnen?

      1. Hi!

        Hätte ich wert darauf gelegt hätte ich es wohl cleverer angestellt. Ich habe einfach einen Namen eingetippt, was kann ich dafür wenn das Forum kein Login hatt?

        Komisch. Bin isch eingelogt!

        --
        Signaturen sind blöd!
        1. Komisch. Bin isch eingelogt!

          Komisch. Muss man nicht sein...und wenn man nicht muss, warum sollte ich?

          1. Hallo,

            Komisch. Muss man nicht sein.

            natürlich nicht. Ein Forum, das eine Anmeldung zwingend erfordert, ist eine Frechheit.

            und wenn man nicht muss, warum sollte ich?

            Wegen der damit verbundenen Vorteile?
            Weitreichende benutzerspezifische Einstellungen, verschiedene Sortier- und Filtermöglichkeiten, Markierung gelesener Postings und Threads, ...

            Ciao,
             Martin

            --
            Kopflosigkeit schützt nicht vor Migräne.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. natürlich nicht. Ein Forum, das eine Anmeldung zwingend erfordert, ist eine Frechheit.

              So wie das Forum auf orf.at oder die Heise-Foren? Das ist das noch zu einem gewissen Grad nachvollziehbar, weil man dadurch hofft, dass man Trolle damit eher fernhält, wenn sie sich registrieren müssen und man greifbare Daten von ihnen in der Hand hat - funktionieren tut das freilich aber nicht.

              Ich oute mich mal: der ORF hat letztes Jahr die Forenregistrierung aufgrudn einer sehr absurden und zweifelhaften Gesetzesänderung auf eine Überprüfung mit echte Adresse und Klarnamen umgestellt. Ich konnte mir aber ohne Probleme für Testzwecke den Nick "pedobear" mit einer frei erfundenen Adresse und einer offensichtlichen Trashmail-Adresse eines Trashmail-Anbeiters sichern. Allein bei diesem Nick hätten bei dem "Freischalter" schon die Alarmglocken läuten müssen - das es Salzburg ziemlich sicher keine Examplestreet gibt ist da nur mehr nebensächlich traurig.

              Wegen der damit verbundenen Vorteile?
              Weitreichende benutzerspezifische Einstellungen, verschiedene Sortier- und Filtermöglichkeiten, Markierung gelesener Postings und Threads, ...

              Solche Vorteile gibt es beim ORF-Forum genau garnicht :) man kann nur posten und auf seiner Profilseite kann man eine süsse Spamschleuder einbauen

              1. Hi,

                Ein Forum, das eine Anmeldung zwingend erfordert, ist eine Frechheit.
                So wie das Forum auf orf.at oder die Heise-Foren?

                ich kenne weder das eine noch das andere - aber wenn ich mich in einem Forum erst registrieren muss, dann muss das Interesse schon *sehr* groß sein. Das war für mich bisher nur bei einem Forum der Fall.

                Ciao,
                 Martin

                --
                Alleine sind wir stark ...
                gemeinsam sind wir unausstehlich!
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              2. Hi.

                Solche Vorteile gibt es beim ORF-Forum genau garnicht :) man kann nur posten und auf seiner Profilseite kann man eine süsse Spamschleuder einbauen

                „Sie müssen sich bei ORF.at anmelden, um Ihre Meinung zu veröffentlichen. Wenn Sie noch keinen Nicknamen haben, können Sie sich hier registrieren.“

                Haha-haha … ;)

                Verrätst du uns bitte noch deine Login-Daten?

                Schönen Sonntag noch!
                O'Brien

                --
                Frank und Buster: "Heya, wir sind hier um zu helfen!"
          2. Das ist ein Themenwechsel.
            Ich sehe jedenfalls einen Unterschied zwischen "Das Forum hat kein Login" und "Wenn ich mich nicht einloggen muss, dann mach ich das auch nicht."

            Das von mir angesprochene Thema, eines angeblich fehlenden Logins, halte ich damit fuer beendet. Ich kann mich auch nicht erinnern, mich bezueglich der zweiten Sache geaeussert zu haben und erlaube mir also, nicht weiter auf diese Bemerkung einzugehen.

            Ich wuensche noch einen angenehmen Aufenthalt im SELFraum.

            --
            Signaturen sind blöd!
            1. Das ist ein Themenwechsel.
              Ich sehe jedenfalls einen Unterschied zwischen "Das Forum hat kein Login" und "Wenn ich mich nicht einloggen muss, dann mach ich das auch nicht."

              Das von mir angesprochene Thema, eines angeblich fehlenden Logins, halte ich damit fuer beendet. Ich kann mich auch nicht erinnern, mich bezueglich der zweiten Sache geaeussert zu haben und erlaube mir also, nicht weiter auf diese Bemerkung einzugehen.

              Ich wuensche noch einen angenehmen Aufenthalt im SELFraum.

              Ach verdammt. Ich les das grad und stelle fest: Meine Schwester koennte doch recht haben, wenn sie mich mit Sheldon Cooper (Big Bang Theory) vergleicht...

              --
              Signaturen sind blöd!
  3. Hi,

    So, ich habe gerade ein Formular geschrieben. Der user hatt die Möglichkeit einen Namen und ein select über das Formular in die Datenbank zu speichern.

    Via Javascript soll nun überprüft werden, während er seinen Namen tippt oder auf ein select clickt ob die Kombination aus Name+select bereits exisitert.

    [JavaScript- und PHP-Code]
    Leider ersteint der responsetext aber nicht, allerdings kommt auch kein error. In der Error Console steht auch nicht.

    Sieht jemand meinen Fehler?

    Nein, sehe ich nicht (wobei ich aber zugebe, nicht genau gesucht zu haben).

    Ich empfehle dir aber, die beiden Komponenten getrennt voneinander zu testen.
    Die erste Frage an dich lautet daher: wenn du die Server-Komponente im Browser (oder einem Äquivalent, etwa curl/wget/...) aufrufst, liefert sie dir das erwartete Ergebnis?

    Wenn ja, hast du einen Client-Fehler und PHP ist ab jetzt irrelevant.
    Wenn nein, hast du ein serverseitiges Problem und JavaScript ist erstmal außerhalb der Betrachtung des Problems.

    Ein kleiner Hinweis:
    »»~~~javascript

    »»function exists(x){

    var x = x;
    // ...

    »»}

      
    das "var x = x; " kannst du dir sparen. Zum einen ist die Variable x im Funktionsscope schon definiert (durch die Benennung in der Parameterliste der Funktion), zum anderen brauchst du diese dann nicht nochmal mit sich selbst überschreiben.  
      
    Bis die Tage,  
    Matti
    
    -- 
    [Webapplikationen in C++ entwickeln](http://tntnet.org/)
    
  4. hi,

    Sieht jemand meinen Fehler?

    nicht wirklich. Obwohl: Du nimmst einen Value aus einer DropDownListe und hängst den ohne Percent-Encoding an einen URI als Get-Parameter.

    Mache es besser so:
    "?parameter=" + encodeURIComponent(...);

    Hotti

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.