Ausgabe in einen Array speichern

Skala

Mitglied
Hallo zusammen

Ich versuche oft Datenbankausgaben in einem Array zu speicher aber das kommt nie richtig gut.

Ich mach das so:
PHP:
$abfrage = "SELECT * FROM spass";
$content = mysql_query($abfrage);
while ($row = mysql_fetch_array($content)) {
$save .= $row['zahl'];
}
echo $save 
//Ausgabe ist: 1 oder 12 oder 123

So erhalte ich jedoch eine Variable in welcher die Werte einfach aneinander hängen und fals die Ausgabe 2 Zahlen hat werden diese einfach zu einer verschmolzen (1 und 2 = 12).
Hat mir jemand ein Tipp? Wenn ich den Punkt vor dem = wegmache erhalte ich logischerweise einfach denn letzten Wert welches verständlicherweise auch nicht Sinn der Sache ist.

Gruss skala
 
Zuletzt bearbeitet:
Hi

Wieso speicherst du es nicht in einem Array?
PHP:
$abfrage = "SELECT * FROM spass"; 
$content = mysql_query($abfrage); 
while ($row = mysql_fetch_array($content)) { 
$save[] = $row['zahl']; 
} 
print_r($save);

Eine andere Möglichkeit währe

PHP:
$abfrage = "SELECT * FROM spass"; 
$content = mysql_query($abfrage); 
while ($row = mysql_fetch_array($content)) { 
$save .= "," . $row['zahl']; 
} 
$array = explode("," , $save);
print_r($array);

Das ist aber doppelt gemoppelt.

Mfg Akkie
 
Danke :)

Nur hab ich probleme damit.. :(

Kann ich diesen nun nicht wieder für eine Abfrage gebrauchen? Bei mir schaut das nun so aus:

PHP:
$a1 = mysql_query("SELECT event_fk FROM ver_id WHERE vertreter_fk = '$_POST[vertreter]'");
while ($a2 = mysql_fetch_array($a1)) {
$save .= "," . $a2['event_fk']; 
}
//$event_ids = explode("," , $save);
$abfrage = "SELECT event_id, datum, ort FROM event WHERE event_id ='$save'";

// nun die neue Abfrage:

$content = mysql_query($abfrage);
while ($row = mysql_fetch_array($content)) {

// welche aber nun so intepretiert wird:
//SELECT event_id, datum, ort FROM event WHERE event_id =',2,3,4'

:confused:

Danke fürs Helfen

edit: und wenn ich $save counte dann erhalte ich immer 1

also $anzahl = count($save);
echo ist 1
 
Zuletzt bearbeitet:
Hi

Das mach man auch nicht so

Bei deinem Beispiel ist es besser wann man eine JOIN über die 2 Tabellen macht.

SELECT t2.event_id, t2.datum, t2.ort
FROM vertreter t1
JOIN event t2 ON t1.vertreter_id=t2.vertreter_id
WHERE t1.vertreter_id = $_POST['vertreter']

Mann kann es auch so wie du machen. Du musst nur beachten das du mehrere unnötige Anfragen an die Datenbank hast. Und in der WHERE Klausel muss stehen WHERE event_id=1 OR event_id=2 OR event_id=3

Wenn du das mit dem 1.Vorschlag nicht hinbekommst, solltest du dein Datenbankdesign noch mal überdenken.

Mfg Akkie
 
Danke danke euch beiden :D

Zum Vorschlag Komma rausnehmen:
Das hab ich nun getan, jedoch wird einfach nur der Datensatz der ersten ID ausgegeben. Ich denke ich muss die Abfrage nun einfach so oft durchführen wie es unterschiedliche Datensätze (ids) in dem array gibt. Jedoch bleibt die Anzahl immer auf 1 wenn ich count $rest mache.

Oder wie kann ich es anstellen das auch wirklich alle ids abgefragt werden?

Das mit der Join Abfrage werde ich nun nochmal versuchen..
Mein erster Versuch versuchte ich folgendermassen durchzuführen:

PHP:
echo "<table border='1'><tr><td>Datum</td><td>ort</td><td>name</td>";
$sql = "SELECT orga_id.organisation_fk, orga_id.event_fk, event.ort, event.datum
		FROM 
			orga_id, event
		WHERE 
			orga_id.event_fk = event.event_id"; 
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {

echo "<tr><td>";
echo $row['datum'];
echo "</td>";
echo "<td>";
echo $row['ort'];
echo "</td>";
echo "<td>";
echo $row['organisation_fk'];
echo "</td>";


}
echo "</table>";

Leider war hier das Problem das zwei verschiedene Organisationen in einer einzelnen Spalte angezeigt werden. Eigentlich möchte ich für jedes Event eine Spalte und fals mehrere Organisationen vorhanden sind diese untereinandere auflisten.

Aber wie gesagt ich werde das Join mit deiner Anregung vergleichen und erst dann weiterheulen.

Danke danke :)
 
hmm ich verstehe nicht ganz.. :(

ich habe 3 tabellen

eine event dann eine organisation und eine welche die ids miteinander in verbindung bringt: orga_id

als variable vorhanden habe ich die id der organisation welche in der tabelle organisation (unter organisation_id) und in der tabelle orga_id (unter organisation_fk) gespeichert ist.

Anhand dieser Organisation_id will ich alle Events finden welche in Zusammenhang mit dieser Organisation stehen.

edit: so schaut es momentan aus (hab das noch nie gesehen ^^)
PHP:
$sql = "SELECT event.event_id, event.datum, event.ort, organisation.name, organisation.organisation_id, orga_id.organisation_fk, orga_id.event_fk, 
FROM organisation, event, orga_id
JOIN event orga_id ON event.event_id = orga_id.event_fk
WHERE orga_id.organisation_fk = $_POST['organisation']";
Gruss
Skala, welcher weiterhin am probieren ist.
 
Zuletzt bearbeitet:
Hi

Noch mal ne Frage.

Können zu einem Event auch mehrer Organisationen vorhanden sein oder ist du zu einem Event nur eine Organisation. Bei einer 1 zu 1 Verknüpfung brauchst du nämlich nur 2 Tabellen. Bei 1 zu N ist es richtig so.

Über welche Fremdschlüssel sind die Tabellen miteienader verknüpft?

Ich gebe dir mal ein Beispiel.

tabelle1: event
event_id, ort, zeit

tabelle2: veranstalter
veranst_id, firma, ansprechpartner

tabelle3: event_veranstalter
event_id, veranst_id

SELECT t2.ort, t2.zeit, t3.firma, t3.ansprechpartner
FROM event_veranstalter t1
JOIN event t2 ON t1.event_id=t2.event_id
JOIN veranstalter t3 ON t1.veranst_id=t3.veranst_id
WHERE t1.veranst_id=3

Vieleicht hilft dir das das ganze ein bissel zu verstehen.

Mfg Akkie
 
hii :)

danke, das war voll nett. nun verstehe ich es.

es sind alles 1:n verbindungen. ich will eine suchefunktion mit auswahlfelder in welchen die hauptattribute jeder tabelle zu finden sind. ausgegeben wird dann die haupttabelle, events.

ich werd die endgültige lösung noch posten, obwohl ich es anderes gemacht habe als eigentlich geplant *g*

thx 4 help
over and out :p
 
habs nun folgendermassen gemacht:
PHP:
function start() {
 if($_POST['Submit']) {
  Suchen();
 }
}

//Funktion: Kontrolle
function Suchen() {
 //var
 $vertreter = $_POST['vertreter'];
 $vortrag = $_POST['vortrag'];
 $organisation = $_POST['organisation'];
 
 //switch definiern
 /*----------Alle Felder sind gesetzt----------*/
 if($vertreter != 99999999 && $vortrag != 99999999 && $organisation != 99999999) {
  //vertreter
  $selVer = mysql_query(query1("ver_id","vertreter_fk",$vertreter)) or die(mysql_error());
  if(mysql_num_rows($selVer)) {
   //vertreter
   while($resVer = mysql_fetch_array($selVer)) {
    //vortrag
	$selVor = mysql_query(query2("vor_id","vortrag_fk",$vortrag,$resVer[0])) or die(mysql_error());
	if(mysql_num_rows($selVor)) {
	 //vortrag
	 while($resVor = mysql_fetch_array($selVor)) {
	  //Organisation
	  $selOrga = mysql_query(query2("orga_id","organisation_fk",$organisation,$resVor[0])) or die(mysql_error());
	  if(mysql_num_rows($selOrga)) {
	   //Ausgabe
	   CreateTable($selOrga);
	  } else {
	   return "Keine Daten vorhanden";
	  }
	 }
	} else {
	 return "Keine Daten vorhanden";
	}
   }
  } else {
   return "Keine Daten vorhanden";
  }
 /*----------Vertreter und Vortrag sind gesetzt----------*/
 } elseif($vertreter != 99999999 && $vortrag != 99999999 && $organisation == 99999999) {
  //vertreter
  $selVer = mysql_query(query1("ver_id","vertreter_fk",$vertreter)) or die(mysql_error());
  if(mysql_num_rows($selVer)) {
   //vertreter
   while($resVer = mysql_fetch_array($selVer)) {
    //vortrag
	$selVor = mysql_query(query2("vor_id","vortrag_fk",$vortrag,$resVer[0])) or die(mysql_error());
	if(mysql_num_rows($selVor)) {
	 //Ausgabe
	 CreateTable($selVor);
	} else {
	 return "Keine Daten vorhanden";
	}
   }
  } else {
   return "Keine Daten vorhanden";
  }
 /*----------Vertreter und Organisation sind gesetzt----------*/
 } elseif($vertreter != 99999999 && $vortrag == 99999999 && $organisation != 99999999) {
  //vertreter
  $selVer = mysql_query(query1("ver_id","vertreter_fk",$vertreter)) or die(mysql_error());
  if(mysql_num_rows($selVer)) {
   //vertreter
   while($resVer = mysql_fetch_array($selVer)) {
	//Organisation
	$selOrga = mysql_query(query2("orga_id","organisation_fk",$organisation,$resVer[0])) or die(mysql_error());
	if(mysql_num_rows($selOrga)) {
	 //Ausgabe
	 CreateTable($selOrga);
	} else {
	 return "Keine Daten vorhanden";
	}
   }
  } else {
   return "Keine Daten vorhanden";
  }
 /*----------Vortrag und Organisation sind gesetzt----------*/
 } elseif($vertreter == 99999999 && $vortrag != 99999999 && $organisation != 99999999) {
  //vortrag
  $selVor = mysql_query(query1("vor_id","vortrag_fk",$vortrag)) or die(mysql_error());
  if(mysql_num_rows($selVor)) {
   //vortrag
   while($resVor = mysql_fetch_array($selVor)) {
	//Organisation
	$selOrga = mysql_query(query2("orga_id","organisation_fk",$organisation,$resVor[0])) or die(mysql_error());
	if(mysql_num_rows($selOrga)) {
	 //Ausgabe
	 CreateTable($selOrga);
	} else {
	 return "Keine Daten vorhanden";
	}
   }
  } else {
   return "Keine Daten vorhanden";
  }
 /*----------Vertreter ist gesetzt----------*/
 } elseif($vertreter != 99999999 && $vortrag == 99999999 && $organisation == 99999999) {
  //vertreter
  $selVer = mysql_query(query1("ver_id","vertreter_fk",$vertreter)) or die(mysql_error());
  if(mysql_num_rows($selVer)) {
   //Ausgabe
   CreateTable($selVer);
  } else {
   return "Keine Daten vorhanden";
  }
 /*----------Vortrag ist gesetzt----------*/
 } elseif($vertreter == 99999999 && $vortrag != 99999999 && $organisation == 99999999) {
  //vortrag
  $selVor = mysql_query(query1("vor_id","vortrag_fk",$vortrag)) or die(mysql_error());
  if(mysql_num_rows($selVor)) {
   //Ausgabe
   CreateTable($selVor);
  } else {
   return "Keine Daten vorhanden";
  }
 /*----------Organisation ist gesetzt----------*/
 } elseif($vertreter == 99999999 && $vortrag == 99999999 && $organisation != 99999999) {
  //organisation
  $selOrga = mysql_query(query1("orga_id","organisation_fk",$organisation)) or die(mysql_error());
  if(mysql_num_rows($selOrga)) {
   //Ausgabe
   CreateTable($selOrga);
  } else {
   return "Keine Daten vorhanden";
  }
 /*----------Keine Auswahl ist gesetzt----------*/
 } elseif($vertreter == 99999999 && $vortrag == 99999999 && $organisation == 99999999) {
  return "Ungültige Suchanfrage";
 } 
}

Die Ausgabe enthält noch ein Bug beim ausgeben des Organisationsnames, aber denn find ich scho :D

thx nochma @ all
 
Zurück