php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.04.2009, 14:26  
Neuer Benutzer
 
Registriert seit: 23.04.2009
Beiträge: 19
beneblack befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Variable von Javascript mit 1x1px-Bild an PHP übergeben

Es geht darum, dass ich bei der Registrierung folgendes erreichen möchte. Bei Eingabe des Benutzernamens soll direkt beim verlassen des Feldes (onblur) der Benutzername mit den vorhandenen Benutzernamen in der Datenbank abgeglichen werden. Wenn der Name schon vorhanden ist, soll rechts daneben ein Text ausgegeben werden, dass der Name nicht mehr gewählt werden kann, wenn er noch nicht drin steht, soll die Meldung erscheinen, dass der Name gewählt werden kann. Ich habe bereits verschiedene Lösungen dafür erarbeitet, aber zufrieden bin ich nicht. Hier eine Liste, was ich erreicht habe:
  • Übergabe des Benutzernamen an Javascript
    Übergabe des Arrays mit vorhandenen Benutzern aus PHP an Javascript
    Prüfung in Javascript, ob der Benutzer schon vorhanden ist
    Ausgabe der Meldung in einem input-text feld (funktioniert, aber das Feld ist anklickbar und editierbar, das ist doof) mit document.formular.feldname.value.
    Ausgabe der Meldung durch Übergabe der Werte mit einem Link, indem der Wert als bool an die URL gehängt und mit $_GET abgerufen wird (fast perfekt, aber jeder kann diesen Wert in der URL sehen)
Toll wäre etwas, wie die letzte Lösung, ohne Aufruf einer neuen Seite und unsichtbar. Jetzt habe ich gelesen, dass man die Werte einem (durchsichtigem?) 1x1 Pixel gif-Bild anhängen kann, das über ein php-Script eingebunden wird.
Realisierung sollte so aussehen:
getpixel.php
PHP-Code:
<?
echo "<img src='bilder/1x1px.gif' width='1' height='1'>";
?>
javascript-Teil
Code:
for (var i=0; i <= 5; ++i)	
		{
			if (user.value == a[i])         //Wenn Benutzer im Array
			{
				var regok = false;
				var user2 = a[i]	
			}
		}
		if (regok == false)
		{	
		dummy = new Image();
		dummy.src='getpixel.php?regok=' + regok + '&user2=' + user2;
		//document.Fehler.vorhanden.value = "Benutzername vergeben";
		return false;
		}
		else
		{
		regok = true;
		dummy = new Image();
		dummy.src='getpixel.php?regok=' + regok + '&user2=' + user2;
		//document.Fehler.vorhanden.value = "Benutzername verfügbar";
		return true;
		}
		return false;
PHP-Code:
<?php
    $regok
=$_GET["regok"];
    
$user2=$_GET["user2"];
    echo 
"regok: ".$regok."und user2: ".$user2;
?>
Von dummy.src kann ich den Inhalt an input-text übergeben. dummy.sry hat den richtigen Link, der zu dem Bild führt, wenn ich ihn in die URL einfüge. Auch die Werte regok und user2 werden richtig an den Link angehängt. Aber mit $_GET bekomme ich keine Werte (wohl, weil keine in der aktuellen URL hängen). Wie also komme ich an meine Variablen in JavaScript, ohne eine neue Seite aufrufen zu müssen? Ich habe oft was davon gelesen, dass manches PHP serverseitig und Javascript clientseitig läuft. Weiß aber nicht, ob das eine Rolle spielt. Ich hab vor ein bis zwei Wochen mit PHP angefangen und fast gar keine Ahnung von Javascript. Beides ist aber C++ nicht unähnlich, was ich in der Schule mal gelernt habe. Ich versuche jetzt möglichst viel darüber zu lernen und komme aber seit zwei Tagen an dieser Stelle nicht richtig weiter.

beneblack

Edith ist noch eingefallen, dass das Bild auf der Seite nicht angezeigt wird (getestet mit einem Bild, das größer als 1x1 pixel und nicht zu übersehen ist).

Geändert von beneblack (23.04.2009 um 14:41 Uhr). Grund: Noch eine (hoffentlich hilfreiche) Info beigefügt
beneblack ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.04.2009, 16:09  
Neuer Benutzer
 
Registriert seit: 23.04.2009
Beiträge: 3
naden befindet sich auf einem aufstrebenden Ast
Standard

Das mit dem Image vergiss mal ganz schnell wieder. Was du suchst ist AJAX. Ich empfehle dir konkret jQuery zu nutzen. Main Page - jQuery JavaScript Library
naden ist offline  
Alt 23.04.2009, 16:17  
Neuer Benutzer
 
Registriert seit: 23.04.2009
Beiträge: 19
beneblack befindet sich auf einem aufstrebenden Ast
Standard

Uh - erst mal danke für deine Antwort.
Ich weiß nicht, ob ich es schaffe mich neben HTML, PHP, JavaScript und MySQL in noch ein neues Programmierfeld einzuarbeiten. Ich wollte schon JavaScript lassen, aber das geht ja noch halbwegs. jQuery hab ich noch nie gehört und von Ajax hab ich keinen Plan. Vielleicht werde ich es als Kür irgendwann einpflegen, aber wenn ich es mit dem Bild nicht machen kann, was sollte ich lieber nehmen? Die Übergabe mit der URL, die jeder lesen kann (dafür aber mit PHP und HTML universell einsetzbar), oder die Ausgabe von JavaScript an ein Formular (hier bräuchte ich aber noch was hübscheres als ein input-text-feld, wo jeder reinschreiben kann)?

beneblack
beneblack ist offline  
Alt 23.04.2009, 16:20  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

genaugenommen ist AJAX eine besondere Art von Javascript.
Dies wird deine einzige möglichkeit sein, und ganz ehrlich, den aufruf zu realsieren kostet wenn du dich in ajax einlesen musst maximal 1h. und die rentiert sich da ajax nicht selten vorkommt.
Screeze ist offline  
Alt 23.04.2009, 16:30  
Erfahrener Benutzer
 
Registriert seit: 18.04.2009
Beiträge: 126
ibeg befindet sich auf einem aufstrebenden Ast
Standard

Hab ne einfache function für das einbinden von AJAX...

PHP-Code:
////////////////////////////////////////////////////////////////////////////////
// AJAX ////////////////////////////////////////////////////////////////////////
function ajax_head($url,$ajax,$vars=false){
   
$out="
   <script type=\"text/javascript\">
    <!--
     "
.$vars."
     var request = false;
     // Request senden
     function setRequest(value) {
      // Request erzeugen
      if (window.XMLHttpRequest) {
       request = new XMLHttpRequest(); // Mozilla, Safari, Opera
      } else if (window.ActiveXObject) {
       try {
        request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
       } catch (e) {
        try {
         request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
        } catch (e) {}
       }
      }
      // überprüfen, ob Request erzeugt wurde
      if (!request) {
       alert(\"Kann keine XMLHTTP-Instanz erzeugen\");
       return false;
      } else {
       var url = \""
.$url."\";
       // Request öffnen
       request.open('post', url, true);
       // Requestheader senden
       request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
       // Request senden
       request.send('ajax="
.$ajax."'+value);
       // Request auswerten
       request.onreadystatechange = interpretRequest;
      }
     }

     // Request auswerten
     function interpretRequest() {
      switch (request.readyState) {
       case 0:
        document.getElementById('alert').innerHTML='uninitiElized';
       break;
       case 1:
        document.getElementById('alert').innerHTML='loading';
       break;
       case 2:
        document.getElementById('alert').innerHTML='loadet';
       break;
       case 3:
        document.getElementById('alert').innerHTML='interactiv';
       break;
       case 4:
        document.getElementById('alert').innerHTML='&nbsp;';
        if (request.status != 200) {
         alert('Der Request wurde abgeschlossen, ist aber nicht OK:<br>' + request.status);
        } else {
         // Antwort des Servers -> als XML-Dokument
         var xml= request.responseXML;
   "
;
   echo: 
$out;
}

function 
ajax_foot(){
   
$out="
        }
       break;
       default:
       break;
      }
     }
    //-->
   </script>
   "
;
   echo: 
$out;

so kannste es beim formular verwenden


PHP-Code:
 <?php

 
...

 
ajax_head("ajax.php","name_check");
 echo: 
"var name = xml.getElementsByTagName('name')[0].firstChild.nodeValue;
   if(name == 1) document.getElementByID('check').innerHTML='Name schon vergeben';
  else document.getElementById('check').innerHTML='Name kann verwendet werden';"
;
 
ajax_foot();

echo:
"bla... <input type='text' name='name' onchange=\"setRequest('&name='.this.value);\"> .... <div id='check'>&nbsp;</div> .... ";
 

....

 
?>
und nun noch ne eigene datei auf die ajax zugreift und sich die entsprechenden daten holt.


PHP-Code:
<?php
header
('Content-Type: text/xml; charset=utf-8'); // sorgt für die korrekte XML-Kodierung
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0'); // ist mal wieder wichtig wegen IE

$xmlerr=false;

$xml="<";
$xml.="?xml version=\"1.0\" encoding=\"utf-8\"?";
$xml.=">\n";
$xml.="<xml>";

switch(
$_POST['ajax']){
   case
"name_check":
      
//in der datenbank nach dem namen suchen...
      
if(mysql_num_rows($result)>0$xml.="<name>1</name>";
      else 
$xml.="<name>0</name>";
   break;
   default:
      
$xmlerr=true;
   break;   
}

if(
$xmlerr)$xml.="<err>err</err>";
$xml.="</xml>";
echo 
$xml;
?>

Geändert von ibeg (23.04.2009 um 16:34 Uhr).
ibeg ist offline  
Alt 23.04.2009, 16:34  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Das ist aber -- häßlich. Ich finde das ganze sehr unübersichtlich. Zumal man Javascriptcode wunderbar in einem externen .js File auslagern kann.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 23.04.2009, 16:46  
Erfahrener Benutzer
 
Registriert seit: 18.04.2009
Beiträge: 126
ibeg befindet sich auf einem aufstrebenden Ast
Standard

mir reichts und nem geschenkten gaul...
ibeg ist offline  
Alt 23.04.2009, 17:09  
Neuer Benutzer
 
Registriert seit: 23.04.2009
Beiträge: 19
beneblack befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank schon mal für die Antworten. Da ich Ajax vorhin das erste mal gehört habe und jetzt gerade dabei bin mir die Grundlagen von jQuery anzulesen (erst mal Wikipedia zu Ajax durchgelesen), überfordert mich das geschriebene von ibeg völlig. Ich verstehe die Syntax noch nicht richtig. Ich erahne etwa, was die Code-Daten bewirken, aber bin noch viel zu weit davon entfernt, um sie auf meinen Fall anwenden zu können. Aber ich mach das ganze ja, um etwas zu lernen. Also werde ich jetzt erst mal jQuery weiterlesen.

beneblack
beneblack ist offline  
Alt 23.04.2009, 19:51  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Kannst dir vielleicht auch mal quooxdo, extjs oder yui anschauen.

MfG
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist gerade online  
Alt 23.04.2009, 20:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ajax geht für einfache Anwendungen auch problemlos ohne JS-Framework.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable per Session übergeben? Spricht etwas dagegen? Lapje PHP Tipps 2008 6 20.10.2008 21:49
PHP-Variable an JavaScript übergeben moonshadow PHP Tipps 2008 6 21.03.2008 01:33
variable übergeben philips PHP Tipps 2006 6 08.01.2006 18:36
[Erledigt] variable ohne form mit submit übergeben PHP Tipps 2005-2 6 06.09.2005 20:34
variable übergeben PHP Tipps 2005-2 4 18.07.2005 19:12
sessionid per javascript übergeben PHP Tipps 2005-2 3 17.07.2005 20:49
bild na variable holen... md5hash PHP Tipps 2005-2 5 16.06.2005 01:07
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
1 Variable und 2 DB-Einträgen gleichzeitig übergeben PHP Tipps 2004-2 1 28.12.2004 17:24
Datensätze mysql zählen und an Variable übergeben. PHP Tipps 2004 5 06.10.2004 15:55
Varaible in Bild übergeben? PHP Tipps 2004 2 26.09.2004 10:48
variable an andere php datei übergeben PHP Tipps 2004 18 19.09.2004 10:09
mehrdimensionales JavaScript Array an php übergeben wurtzel HTML, Usability und Barrierefreiheit 2 17.09.2004 18:46
Variable übergeben me PHP Tipps 2004 14 31.08.2004 18:17
variable per link übergeben PHP Tipps 2004 22 25.06.2004 12:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
uninitielized, 1x1px, uninitielized ajax, request variable mehrdimensionales array php, javascript variable an php übergeben bild, javascript variable an php img übergeben, javascript variable fntion php aufrufen, bild 1x1px, php daten als bild übergeben, javascript id an bilddatei anhängen, out.php(1x1)-opera, html kann man mit einen bild einen wert übergeben, \javascript\ -canvas getpixel \new image()\, jquery bild als variable, script bild mit ling php, img von php nach javascript übergeben, inhalt einer js var nach php verschicken, jquery bilder in 2 dimensionales array laden, java script bild als variable wert, von javascript wert zu php

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum