Probleme mit MySQL Abfrage und Array

banshe

Mitglied
Hallo zusammen,

Ich hoffe - alle hatten schöne Ostern =)

Ich hänge immernoch an meinem Array problem... und bitte um Hilfe...

folgender ablauf muss passieren:

- Submit Button drücken
- alle usernamen + dname von der Tabelle "choice" auswählen
- dname überprüfen ob es der gleiche name ist wie $firstplace
- wenn ja -> in der Tabelle "ranklist" den username und die punkte $firstpoint hinzufügen/addieren.

Jetzt zum Code.

Die Usernamen von der tabelle "choice" auswählen:
PHP:
<?php
	$sock=mysql_connect ("localhost","blabla", "blabla");
	mysql_select_db ("blabla");

$urname=mysql_query("SELECT username FROM choice");
while($arr=mysql_fetch_assoc($urname)){
    $users[]=$arr['username'];
} 
?>

Jetzt den dname aus der Tabelle choice auswählen und als $choice speichern (Da ist was falsch, wenn ich mehrere usernamen habe, kann ich das ja nicht in eine variable $choice speichern):
PHP:
<?php
if($_POST['send'])
{
  $test=mysql_query("SELECT dname FROM choice WHERE username='$value'");
  if($arr=mysql_fetch_assoc($test));

$choice=$arr['dname'];

Jetzt den ausgewählten dnamen ($choice) mit dem namen $firstplace vergleichen, wenn dies richtig ist, die punkte $firstpoint und den usernamen in die Tabelle "ranklist" addieren/schreiben (wobei ich das mit dem addieren der Punkte noch nicht realisiert habe):
PHP:
foreach($users as $key => $value) {
    
if($choice == $firstplace){
	$sock=mysql_connect ("localhost","blabla", "blabla");
	mysql_select_db ("blabla");

        $result = mysql_query('INSERT INTO `ranklist` (`username`, `points`) VALUES ("'.$value.'", "'.$firstpoint.'")');
}


Eigentlich ist das ja garkein so schweres vorhaben, bekomme es aber wirklich nicht hin...

Grüsse
 
Hi,

bekommst du denn eine Fehlermeldung, oder ähnliches?
Oder sag doch mal, was genau passiert wenn du dein Script ausführst.


achja:
PHP:
<?php 
if($_POST['send']) 
{ 
  $test=mysql_query("SELECT dname FROM choice WHERE username='$value'"); 
  if($arr=mysql_fetch_assoc($test)); 

$choice=$arr['dname'];

Da fehlt doch sicher einfach nur der untere Teil oder?

Erstelle doch einfach auch $choice als Array und schreibe genau wie bei den usern alle Einträge in ein Array.
Das sollte doch gehen, oder irre ich mich?
 
bekommst du denn eine Fehlermeldung, oder ähnliches?
Oder sag doch mal, was genau passiert wenn du dein Script ausführst.

Nein, ich bekomme keine Fehlermeldung.
Es passiert beinahe garnichts. In der Tabelle "ranklist" wird kein Eintrag erstellt.


achja:
PHP:
<?php 
if($_POST['send']) 
{ 
  $test=mysql_query("SELECT dname FROM choice WHERE username='$value'"); 
  if($arr=mysql_fetch_assoc($test)); 

$choice=$arr['dname'];

Da fehlt doch sicher einfach nur der untere Teil oder?

Wie meinst du "der untere Teil"?

Erstelle doch einfach auch $choice als Array und schreibe genau wie bei den usern alle Einträge in ein Array.
Das sollte doch gehen, oder irre ich mich?

Das Choice ist ja eigentlich ein Array audas ich in eine Variable gepackt habe. Aber ich werd das nochmals überprüfen..
 
Aloha,

hast du denn auf deinem Server Performanceprobleme, oder warum machst du das so umständlich?

Ich gehe mal davon aus, dass das kein sensibler Login wird, deshalb kannst du username und dname sicher auch zusammenladen, etwa so:

PHP:
//Datenbankverbindung aubauen.. hast du ja schon gemacht...

//Nutzernamen und dnamen auswählen, falls nötig, sonst natürlich >> dname FROM choice WHERE username='$value' <<
$result = mysql_query("SELECT username, dname FROM  choice"); 

while($user = mysql_fetch_assoc($result)) { // Bau dir ein assoziatives Array...
    $choice[$user["username"]] = $user["dname"]; 
}

if ($choice[$value] == $firstplace)  { 
    // Warum baust du hier ne neue DB-Verbindung auf

    // Willst du jedes mal ne neue Zeile in die Tabelle schreiben? Wenn nein, update doch, das + sorgt dafür das gleich addiert wird.
    mysql_query("UPDATE choice SET points=points + $firstpoint WHERE username='$value'"); 
}

Wie du die Username am Anfang für eine Auswahlliste aus der DB liest sollte dir ja klar sein.. Hoffe das hilft...

viel Erfolg noch
 
Hallo TheBodo,

Danke für deine Hilfe. Ich habe es genauso gemacht wie du es geschrieben hast. Fehlermeldungen habe ich keine, aber in der Tabelle "Ranklist" tut sich nichts.

- Ich habe jeden Benutzernamen in die Tabelle "Ranklist" hinzugefügt (weil wir mit dem code ein Update machen) und bei "points" "0" geschrieben.
- In der Variablen "$firstplace" steht "Colin Edwards" (mit echo getestet)
- In der Variablen "$fistpoint" steht "5" (mit echo getestet)
- In der Tabelle "Choice" steht:
dname: Colin Edwards ¦ username: banshe
dname: Colin Edwards ¦ username: sadinsky

Also müsste er jetzt in der Tabelle "Ranklist" in der spalte "points" bei den usernamen "banshe" und "sadinsky" jeweils 5 Punkte addieren.
Passiert jedoch nicht.

Code sieht so aus:

PHP:
<?php
	$sock=mysql_connect ("localhost","blabla", "blabla");
	mysql_select_db ("blabla");

$result = mysql_query("SELECT username, dname FROM choice"); 

while($user = mysql_fetch_assoc($result)) { 
$choice[$user["username"]] = $user["dname"]; 
} 
?>

PHP:
<?php
if($_POST['send'])
{

if ($choice[$value] == $firstplace) { 
 
mysql_query("UPDATE choice SET points=points + $firstpoint WHERE username='$value'"); 
} 
}
?>

Warum klappt es denn nicht? was ist falsch?
Ich verzweifle langsam....
 
Lesen - und ggf die Resultate hier posten.

Gemacht, folgende fehlermeldung ist erschienen:

Code:
Notice: Undefined variable: value in /usr/export/www/hosting/motogp/admin.php on line 98

Notice: Undefined index: in /usr/export/www/hosting/motogp/admin.php on line 98


PHP:
<?php 
if($_POST['send']) 
{ 
//Line 98 ist die folgende:
if ($choice[$value] == $firstplace) {  
  
mysql_query("UPDATE choice SET points=points + $firstpoint WHERE username='$value'");  
}  
} 
?>


Danke für die Hilfe!
 
Zurück