kostenloser Webspace werbefrei: lima-city


Mysql Übertragungsfehler?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    goldschau

    goldschau hat kostenlosen Webspace.

    Hey,
    Ich habe folgeden code aus einem tutorial dabei wird über ajax der code aufgerufen und druchgeführt um verschiedene aktionene des codes zu überwachen bzw den Fehler zu finden habe ich verschieden variablen in textdatein ausgegeben Hier erstmal der code:
    <?php
    	$verbindung = mysql_connect("")
    	or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    	mysql_select_db("") or die ("Datenbank konnte nicht ausgewählt werden");
    
    	$uid=$_POST['name'];	
    	$varqty = count($_POST); // It counts how many info portlets are we passing
        $varnames = array_keys($_POST); // Obtains variable names
        $varvalues = array_values($_POST);// Obtains variable values;
    		$datei = fopen("counter.txt","r+");
    		$counterstand = fgets($datei, 10);
    		
    		   $counterstand=$uid;
    		   rewind($datei);
    		   fwrite($datei, $counterstand);
    	fclose($datei);	
    	for($i=0;$i<$varqty;$i++){  // For each variable
        $semivalue = explode("|", $varvalues[$i]);  // We break it when  �|� is found and saves it in $semivalur
    	$eintragen="UPDATE layouts SET `column`='$semivalue[0]' WHERE `header`='$varnames[$i]' AND `user` LIKE $uid";
        $eintrag=mysql_query($eintragen); // Saves each portlet column belongness
    	$eintragen2="UPDATE layouts SET `yindex`='$semivalue[1]' WHERE `header`='$varnames[$i]' AND `user` LIKE $uid";
        $eintrag2=mysql_query($eintragen2); // Saves each portlet �yindex�
    	if($eintrag==true && $eintrag2==true)
    	{$test=t;}
    	else
    	{$test=f;}
    			$datei = fopen("eintrag.txt","r+");
    		$counterstand = fgets($datei, 10);
    		
    		   $counterstand=$test;
    		   rewind($datei);
    		   fwrite($datei, $counterstand);
    	fclose($datei);	
    
        }
        ?>

    Nun bekomme ich in der eintrag.txt ein t für true was ja eigentlich bedeuten sollte das die änderung in der datenbank geamcht wurde allerdings ändert sich in der Datenbank nichts und ich weiss absolut nicht wo der Fehler liegt. Ich hoffe ihr könnt mir helfen.
    Danke im vorraus
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Wie währe es, wenn du mal eine Datenbankverbindung aufbauen würdest, und eine Datenbank auswählen würdest?
  4. Autor dieses Themas

    goldschau

    goldschau hat kostenlosen Webspace.

    tue ich habe es nur für den tread gelöscht wegen passwort hier so siehts aus hab jeztt mal nur das pw rausgenommen:
    $verbindung = mysql_connect("mysql.lima-city.de", "USER150760" , "")
    	or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    	mysql_select_db("db_150760_1") or die ("Datenbank konnte nicht ausgewählt werden");
  5. Ok, ich dachte du hättest den Code irgendwo her kopiert, und vergessen das auszufüllen. Dann schau ich mir den Code mal ein bisschen weiter an.

    1. Mach mal die Array-Elemente aus dem String raus, und dann beende das Querry mit ";". Dann musst die die Vergleichswerte in dem Querry auch in Anführungszeichen schreiben. Mach also z.B. aus
    $eintragen="UPDATE layouts SET `column`='$semivalue[0]' WHERE `header`='$varnames[$i]' AND `user` LIKE $uid";
    diesen Code:
    $eintragen="UPDATE layouts SET `column` = '".$semivalue[0]."' WHERE `header` = '".$varnames[$i]."' AND `user` LIKE '".$uid."';";


    2. Wenn man eine If-Bedingung hat, die aus mehreren Teilen besteht, dann schreibst mal die einzelnen Teile in Klammern.

    3. Man schreibt beim vergleichen nicht $var==true, sondern einfach nur $var.
  6. e********l

    drafed-map schrieb:
    3. Man schreibt beim vergleichen nicht $var==true, sondern einfach nur $var.

    Darauf würde ich mich nicht verlassen. Das kann im schlimmsten Fall zu schlimmen Fehlern führen. Im Idealfall nutzt man === um auf Typ und Inhalt zu prüfen. Vor allem entfällt dann intern ein Typcast was die Ausführungsgeschwindigkeit entsprechend erhöht.
  7. Autor dieses Themas

    goldschau

    goldschau hat kostenlosen Webspace.

    Ich habe den code jetzt wie folgt umgeschriebne ich hoffe ich habe deine Tips verstanden aber es gbit immer nocht true aus und die datenbank wird nicht geändert:
    <?php
    	$verbindung = mysql_connect("mysql.lima-city.de", "USER150760" , "")
    	or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    	mysql_select_db("db_150760_1") or die ("Datenbank konnte nicht ausgewählt werden");
    
    	$uid=$_POST[name];	
    	$varqty = count($_POST); // It counts how many info portlets are we passing
        $varnames = array_keys($_POST); // Obtains variable names
        $varvalues = array_values($_POST);// Obtains variable values;
    		$datei = fopen("counter.txt","r+");
    		$counterstand = fgets($datei, 10);
    		
    		   $counterstand=$uid;
    		   rewind($datei);
    		   fwrite($datei, $counterstand);
    	fclose($datei);	
    	for($i=0;$i<$varqty;$i++){  // For each variable
        $semivalue = explode("|", $varvalues[$i]);  // We break it when  ‘|’ is found and saves it in $semivalur
    	$eintragen="UPDATE layouts SET `column` = '".$semivalue[0]."' WHERE `header` = '".$varnames[$i]."' AND `user` LIKE '".$uid."';";
        $eintrag=mysql_query($eintragen); // Saves each portlet column belongness
    	$eintragen2="UPDATE layouts SET `column` = '".$semivalue[1]."' WHERE `header` = '".$varnames[$i]."' AND `user` LIKE '".$uid."';";
        $eintrag2=mysql_query($eintragen2); // Saves each portlet ‘yindex’
    	if(($eintrag) && ($eintrag2))
    	{$test=t;}
    	else
    	{$test=f;}
    			$datei = fopen("eintrag.txt","r+");
    		$counterstand = fgets($datei, 10);
    		
    		   $counterstand=$test;
    		   rewind($datei);
    		   fwrite($datei, $counterstand);
    	fclose($datei);	
    
        }
        ?>
  8. evil-devil schrieb:
    drafed-map schrieb:
    3. Man schreibt beim vergleichen nicht $var==true, sondern einfach nur $var.

    Darauf würde ich mich nicht verlassen. Das kann im schlimmsten Fall zu schlimmen Fehlern führen. Im Idealfall nutzt man === um auf Typ und Inhalt zu prüfen. Vor allem entfällt dann intern ein Typcast was die Ausführungsgeschwindigkeit entsprechend erhöht.

    In so einem kleinen Script gehe ich davon aus, dass eine Variable nur mit dem selben Typ definiert wird, und nicht schnell mal aus einem bool ein Array wird. Wenn das passiert, hat man sowieso schon verloren.


    Edit: Wenn ich mir das so anschaue, dann wundere ich mich sehr über diesen Codeausschnitt:

    if(($eintrag) && ($eintrag2))
    	{$test=t;}
    	else
    	{$test=f;}
    			$datei = fopen("eintrag.txt","r+");
    		$counterstand = fgets($datei, 10);
    		
    		   $counterstand=$test;
    		   rewind($datei);
    		   fwrite($datei, $counterstand);
    	fclose($datei);


    Könntest du das bitte mal erklären? Willst du den Inhalt von $test in die Datei schreiben? Wieso liest du das dann vorher überhaupt aus? Wie speicherst du denn $test? Mach doch true oder false draus. Sowieso verstehe ich den Sinn einfach nicht, also wie das überhaupt funktionieren soll. Willst du etwa den Inhalt von $test in eine Datei schreiben? Schau dir mal an, wie du $test definiert hast!




    Edit 2: Pack in die Querrys mal Beispielwerte, und gebe diese Werte phpMyAdmin, und schau was zurückgegeben wird.

    Beitrag zuletzt geändert: 21.9.2009 16:29:26 von drafed-map
  9. Autor dieses Themas

    goldschau

    goldschau hat kostenlosen Webspace.

    Also ich habe mich nochmal rnagesezt und mir ist dabei aufgefallen das ich euch eine kleinigkit verschweigne bzw nicht erwähnt habe bei meinem alten code ging es wenn ich die user id auf zb 3 festgestzt habe aber wenn ich die 3 über das post bekommen habe ging es nicht hier der code wie die übertragung funktionierd hat:
    <?php
    	$verbindung = mysql_connect("localhost", "root" , "")
    	or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    	mysql_select_db("deine_startseite") or die ("Datenbank konnte nicht ausgewählt werden");
    	
    	$uid=$_POST['name'];	
    	$varqty = count($_POST); // It counts how many info portlets are we passing
        $varnames = array_keys($_POST); // Obtains variable names
        $varvalues = array_values($_POST);// Obtains variable values;
    		$datei = fopen("counter.txt","r+");
    		$counterstand = fgets($datei, 10);
    		
    		   $counterstand=$uid;
    		   rewind($datei);
    		   fwrite($datei, $counterstand);
    	fclose($datei);
    	$uid='3';
        for($i=0;$i<$varqty;$i++){  // For each variable
        $semivalue = explode("|", $varvalues[$i]);  // We break it when  ‘|’ is found and saves it in $semivalur
        mysql_query("UPDATE layouts SET `column`='$semivalue[0]' WHERE `header`='$varnames[$i]' AND `user`='$uid'"); // Saves each portlet column belongness
        mysql_query("UPDATE layouts SET `yindex`='$semivalue[1]' WHERE `header`='$varnames[$i]' AND `user`='$uid'"); // Saves each portlet ‘yindex’
        }
        ?>


    Nun aber zu meinem neuen code und der arbiet mit Textdatein
    if(($eintrag) && ($eintrag2))
    	{$test=t;}
    	else
    	{$test=f;}
    			$datei = fopen("eintrag.txt","r+");
    		$counterstand = fgets($datei, 10);
    		
    		   $counterstand=$test;
    		   rewind($datei);
    		   fwrite($datei, $counterstand);
    	fclose($datei);


    Als erstes guck ich ob mir eintrag und eintrag 2 ein true zurückgeben wenn ja ist$test true wenn nicht false also t und f
    dann öffnen ich die textdatei eintrag und der counderstand erbibt sich aus den datein aus eintrag txt mit maximal 10 stellen so wie ich es verstanden habe counter.txt deswegne wiel das früher mal ein counter war.
    Dann wird die counderstand variable mit der test variable überschreiben also true oder flase und wird weider in die datei eintrag.txt geschrieben bzw die alte wird überschrieben. Naja der code dient eigl nur dazu damit ich das mal überprüfen konnte ob er eine übertragung macht bzw ob er dabei ein true oder flase zurück gbit auf dauer will ich das gar nicht im script einbinden. Also es sol eigl nur dazu diene die test variable in eine Datei zu schreiben naja test habe ich doch mit r oder f defeniert oder ?? SRY wenn ich jetzt was falsch sehe bin noch nicht so geübt in php bzw mysql.
  10. 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!