CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
15.02.2009, 14:16:36
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 109
|
|
array aus db auslesen und array_count
Hallo,
ich habe folgendes Problem:
In der DB speicher ich die Datensätze von einer Frage mit mehreren Antwortmöglichkeiten wie folgt:
id=1
q5=5,1
id=2
q5=1
id=3
q5=6,7
Nun möchte ich diese auslesen und und gleichzeitig zählen wie viel mal die 1 usw. vorkommt.
Mit einem SQL statement mit Count bekomme ich nur die ersten Werte zusammengerechnen
PHP-Code:
SELECT q5 , COUNT(q5)As summe , name_lamb AS name,id_lamb FROM opinions LEFT JOIN lamb ON q5=id_lamb GROUP BY id_lamb
Ergebnis
2x1 und nicht 3x1, also die Zahlen nach dem Komma werden nicht mitgerechnet.
Dann habe ich versucht alles mit php und array_merge, array_count_value auszulesen
PHP-Code:
<?php $array =array($row_rs_5['q5']);
$array2=array($row_rs_5['q5']);
$q5= implode(",", $array);
$result=array_merge($q5);
$zaehle = array_count_values ( $result);
while ( list ( $key, $val ) = each ( $zaehle ) )
{
echo $key . ' kommt ' . $val . ' mal vor.<br>';
}
?>
Ergebnis:
5,1 kommt 1 mal vor.
1 kommt 1 mal vor.
Was mache ich falsch? Hat Jemand eine Antwort?
Danke
|
15.02.2009, 14:32:30
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: array aus db auslesen und array_count
Du speicherst die Daten falsch oder müsstest erst die Werte zerlegen.
5,1 ist ja keine Zahl sondern ein String. Somit kann 5,1 nie =1 sein.
Du müsstest also entweder die Ergebnisse anders in der Tabelle abspeichern, damit dort jeder Wert für sich steht oder nach dem Auslesen per PHP anhand des "," den Wert in ein Array zerlegen. Dann wäre 1 oder auch 5 für sich allein vorhanden.
|
15.02.2009, 14:40:38
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 109
|
|
AW: array aus db auslesen und array_count
Hallo,
das Zerlegen habe ich versucht mit
PHP-Code:
$q5= implode(",", $array);
wird vollkommen ignoriert und auch mit
PHP-Code:
$q5= str_replace(",",'', $array);
Ergebnis:
51 kommt 1 mal vor.
1 kommt 1 mal vor.
also er liest dann 51 anstelle von 5 und 1
Hat jemand noch eine Idee?
Danke
|
15.02.2009, 14:43:25
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: array aus db auslesen und array_count
mit implode und in_array sollte es eigentlich gehen. str_replace ändert ja nichts an der Tatsache, daß auch 51 != 1 ist. :)
|
15.02.2009, 14:56:58
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: array aus db auslesen und array_count
Ok, explode() statt implode. Hab mich selbst ablenken lassen.
PHP-Code:
<?php
$test = array(array('id'=>'1','q5' => '5,1'),array('id'=>'2','q5' => '1'),array('id' => '3','q5'=>'6,7'));
echo '<pre>';
var_dump($test);
echo '</pre>';
$eins = '';
foreach($test as $val) {
$q5 = explode(',',$val['q5']);
if(in_array('1',$q5)) { $eins++;}
}
echo 'die 1 ist '.$eins.' mal vorhanden';
?>
Das Sollte vereinfacht dein gewünschtes Ergebnis bringen.
Geändert von urvater (15.02.2009 um 14:57:29 Uhr)
|
15.02.2009, 15:21:06
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 109
|
|
AW: array aus db auslesen und array_count
Hallo,
danke hab das gemacht, hab aber immer noch nicht das gewünschte Ergebnis. Und zwar läuft jetzt die Daten aus DB richtig bekommen nicht ok
PHP-Code:
<?php
$query = sprintf("SELECT q5 AS q5,id_opinion AS id FROM opinions ");
$result = mysql_query($query);
while ($zeile = mysql_fetch_object($result)) {
$q5_n = $zeile->q5; "<br>";
$id = $zeile->id; "<br>";
$test = array('id'=>'$id','q5' => '$q5_n');
echo '<pre>';
var_dump($test);
echo '</pre>';
$eins = '';
foreach($test as $val) {
$q5 = explode(',',$val['q5']);
if(in_array('1',$q5)) { $eins++;}
}
echo 'die 1 ist '.$eins.' mal vorhanden';
}
?>
Ergebnis mit Wiederholung:
array(2) {
["id"]=>
string(3) "$id"
["q5"]=>
string(5) "$q5_n"
}
die 1 ist mal vorhanden
Sieht Jemand meinen Fehler?
Danke
|
15.02.2009, 16:03:23
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: array aus db auslesen und array_count
Also ich habs schnell mal so getestet und es funktioniert.
PHP-Code:
/*function select($sqli="") {
if(empty($sqli)) { echo 'Falsche SQL-Anweisung!<br>'; return false; break;}
$result = mysql_query($sqli);
if(!$result) { return false; break;}
while($row = mysql_fetch_array($result)) {
$resultat[] = $row;
}
mysql_free_result($result);
return $resultat;
}*/
$query = sprintf("SELECT * FROM options ");
$result = $db->select($query);
echo '<pre>';
var_dump($result);
echo '</pre>';
$eins = '';
foreach($result as $val) {
$q5 = explode(',',$val['q5']);
if(in_array('1',$q5)) { $eins++;}
}
echo 'die 1 ist '.$eins.' mal vorhanden';
?>
Acvhtung: Hab die Tabelle als options angelegt!Müsstest du deinem Script also anpassen.
|
15.02.2009, 16:12:26
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: array aus db auslesen und array_count
Wenn ich nicht irre, dann müsste dies so bei dir funktionieren (ungetestet):
PHP-Code:
<?php
$query = sprintf("SELECT q5 AS q5,id_opinion AS id FROM opinions ");
$result = mysql_query($query);
while ($zeile = mysql_fetch_object($result)) {
$test[][q5] = $zeile->q5; "<br>";
$test[][id] = $zeile->id; "<br>";
}
echo '<pre>';
var_dump($test);
echo '</pre>';
$eins = '';
foreach($test as $val) {
$q5 = explode(',',$val['q5']);
if(in_array('1',$q5)) { $eins++;}
}
echo 'die 1 ist '.$eins.' mal vorhanden';
?>
Geändert von urvater (15.02.2009 um 16:14:12 Uhr)
|
15.02.2009, 16:33:59
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 109
|
|
AW: array aus db auslesen und array_count
Hallo,
danke für die viele Hilfe von dir und da ist bestimmt auch nur noch ein kleiner Fehler.
Ich habe deinen Code genommen und die DB Tabelle in meinen Tabellennamen geändert und anstelle von $db meinen DB namen genommen, bekomme nur leider immer noch eine Fehlermeldung:
PHP-Code:
$db=$database_my;
$query = sprintf("SELECT * FROM opinions ");
$result = $db->select($query);
Fatal error: Call to a member function on a non-object
Vielleicht noch einen Fehler gesehen?
|
15.02.2009, 16:37:26
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: array aus db auslesen und array_count
Zitat:
Zitat von Sandra
PHP-Code:
$db=$database_my;
$query = sprintf("SELECT * FROM opinions ");
$result = $db->select($query);
Fatal error: Call to a member function on a non-object
Vielleicht noch einen Fehler gesehen?
|
select() ist bei mir als Funktion innerhalb der Klasse $db. Ich hab sie dir nur mitgepostet, damit du das Ergebnis besser nachvollziehen kannst.
Sollte $db bei dir keine Klasse sein in der die Funktion select() vorhanden ist muß es zu einem Fehler kommen.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 05:10:59 Uhr.
|