Sql inputs mit php in array's abfragen

bensky

Erfahrenes Mitglied
Hi Leute, ich glaub ich stehe heute auf dem Schlauch. Ich möchte aus ein Datenbank 2 Werte abfragen um damit 4 Statusbalken zu erzeugen. Allerdings bekomme ich die werte nicht aus der DB raus!?

Die werte stehen wir folgt in der Db: id - anz_suche - Name
1 33 Hanz

Der sinn dahinter ist das ich zeigen möchte nach welchem namen am häufigsten gesucht wurde. Hier mein verzweifelter versuch:

PHP:
$sql        = mysql_query("SELECT * FROM `global_mostsearch_name` ORDER BY `anz_search` DESC LIMIT 0 , 4");

$i = 0;
while($temp = mysql_fetch_array($sql))
{
//$su_name = $temp['name_name'];
$su_anz_search = $temp['anz_search'][0];

$su_anz_search[$i] = $su_anz_search;


echo $su_anz_search[$i];
echo "<br>";
$i++;
}

echo $su_anz_search[0];
echo $su_anz_search[1];
echo $su_anz_search[2];
echo $su_anz_search[3];


Wie bekomme ich das hin das ich auf die variablen zugreifen kann damit ich die 4 werte einzeln rausfiltern kann? Gruß und dank.
 
1. anz_suche oder anz_search?
2. greifst du in der While-Schleife mittels $temp['id'] $temp['anz_suche'] $temp['Name'] auf die Werte eines Datensatzes zu. diese kannst du dann weiter verarbeiten...
 
Bin kein Profi... Aber nimm doch mal noch die ID hinzu die ja eindeutig ist schreib diese auch in das Array. Oder du zählst bei den 4 Werten einen Counter hinauf und setzt diesen auch noch hinzu.

So würde bei den Auswertungen ähnliches stehen wie:

33 1
22 2
21 3

Wobei die erste Zahl die anz_search ist und die zweite Zahl deine ID oder dein Counter in meinem Beispiel. Jetzt kannst du nur den mit dem Counter 1 ausgeben oder nur den mit dem Counter 3.

Hilft dir das?
 
Bei Problemen mit MySQL-Abfragen und Eingaben empfiehl es sich immer zuerst die MySQL-Error-Meldung auszugeben:

PHP:
$sql = mysql_query("SELECT * FROM `global_mostsearch_name` ORDER BY `anz_search` DESC LIMIT 0 , 4") OR DIE(mysql_error());
 
Hallo ihr Beiden, erstmal danke aber das hilft mir leider "wie ich glaube" nicht weiter. Auch die idee mit der ID ist gut, allerdings stehen in der DB 120 Werte(namen) die ich mit der SQL abfrage der reihe nach ordne. Der erst "zuerst" ...."2" "3" und "4-der letzte".

Diese Werte will ich jetzt irgendwie in 4 Variablen schreiben, ich weiß nur nicht wie ;(

in der DB stehen jetz 20 40 60 80.. die möchte ich ein eigene vars haben.

$var1 = 40
$var2 = 60 etc? Ich weiß echt nicht mehr weiter ;=)
Aber trotzdem danke schon mal für eure Hilfe.


soyo: Hallo, also die sql Abgrage funktionier wunderbar
 
Ist leider ungetestet, müsste aber so laufen:
PHP:
  $aName = array();
  $aAnzahl = array();
  
  $sql = mysql_query("
    SELECT 
      * 
    FROM 
      `global_mostsearch_name` 
    ORDER BY 
      `anz_search` 
    DESC LIMIT 0 , 4") OR DIE(mysql_error());
    
  while($temp = mysql_fetch_array($sql, MYSQL_ASSOC)){
    array_push($aName,$temp['name_name']);
    array_push($aAnzahl,$temp['anz_search']);     
  }

$aName[0] wäre halt der meist gesuchte, $aAnzahl[0] dementsprechend seine Suchanzahl.

Dazu aber auch bitte die Manuals lesen ... array_push();
 
Zuletzt bearbeitet:
Äh, okay, funktioniert 1a, allerding sitz ich hier schon 30 minuten und versuch zu verstehen was du da geschieben hast!? Aber vielen dank, so wollte ich es haben ;))))



Ich wollte nochmal eben sagen das es schön ist das Ihr hier so super helft und wirklich immer eine lösung findet ;)
Hut ab Jungs ;)
 
Zuletzt bearbeitet:
PHP:
// ein Array für die Namen wird initialisiert
$aName = array();
// ein Array für die Anzahl der Suchanzahl wird initialisiert.
$aAnzahl = array(); 

/* Dein MySQL-Query, nur etwas übersichtlicher geschrieben, ich hoffe du verstehst es :). 
Mit OR DIE(mysql_error()) werden etwaige MySQL-Fehler ausgegeben. */
$sql = mysql_query(" 
    SELECT  
      *  
    FROM  
      `global_mostsearch_name`  
    ORDER BY  
      `anz_search`  
    DESC LIMIT 0 , 4") OR DIE(mysql_error());  

/* mysql_fetch_array hattest du ja schon genutzt, also gehe ich von aus das du 
das verstehst. Der optionale Parameter MYSQL_ASSOC, sagt der Funktion 
mysql_fetch_array das sie das Ergebnis als ein asoziatives Array zurückgeben 
soll. Das heißt das der ausgelesene Feldname als Schlüssel und der 
dementsprechende Wert aus der Datenbank als Wert in das Array eingetragen wird. 
Mit der Funktion array_push() fügt man zu dem bestehenden Array ein neues 
Element hinzu. */

while($temp = mysql_fetch_array($sql, MYSQL_ASSOC)){ 
    array_push($aName,$temp['name_name']); 
    array_push($aAnzahl,$temp['anz_search']);      
}

Wenn ich etwas habe, was ich noch nicht verstehe, such ich mir die jeweilige Funtkion auf http://de3.php.net/.
 
Zuletzt bearbeitet:
Zurück