Benötige hilfe bei Formular und anzeige

mydoys.de

Well-known member
ID: 84968
L
20 April 2006
2.744
124
Der Titel ist bestimmt etwas falsch erklärht aber müsste jetzt nicht genau wie ich es sagen soll..
Und zwar geht es bei mir um Zielgruppen Targin (Zielgruppenanalyse)

Und zwar habe ich ein Script wo die user ihre Zielgruppe angeben können
min 2 Maximal 5

Diese auswertung Speicher ich jetzt in einer Datenbank.

Jetzt kommt es zum Anzeigen der user und zwar weiß ich da jetzt nicht weiter.
Ich habe ein Formular mit checkboxen die die Zielgruppen anzeigen wenn ich diese absende würde ich gerne danach anzeigen lassen wollen welche user alles die gesuchte Zielgruppe haben..

Weiß jetzt nur gerade nicht wie ich das am dumsten machen soll..


Edit:
In der Datenbank steht der Name der Zielgruppe als Feld und in dem FELD steht 1 für ja und 0 für nein
 
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] ....
[B][COLOR=#9932cc]FROM[/COLOR][/B] user
[B][COLOR=#9932cc]WHERE[/COLOR][/B] interesse = 42;[/FONT]
? :think:

Versteh das Problem nicht.

Edit:
@Edit: Wenn dein DB-Schema natürlich so bescheiden is, ... :LOL:
Mach das mal ordentlich, dann kannst du auch ordentlich die Daten abrufen und verarbeiten.
 
Edit:
@Edit: Wenn dein DB-Schema natürlich so bescheiden is, ... :LOL:
Mach das mal ordentlich, dann kannst du auch ordentlich die Daten abrufen und verarbeiten.

Jo und wie meinst soll ich das am besten machen..
Hm Stimmt eigentlich einfach ein FELD für alle Intresse und diese mit Hilfe von Zahlen einfügen... oder?

Heute ist irgendwie nicht mein Tag...


Edit:
so geändert..
das feld heißt jetzt interessen und jede Intresse hat jetzt eine zahl welche in diesem Feld gespeichert wird
 
Zuletzt bearbeitet:
so jetzt habe ich gerade 2 Probleme! ich Poste mal meine Codes...


Das Formular:
Code:
<FORM action="addon,zielgruppen-speichern.html" method="POST">
<table>
<tr>
<td style="width:165px;"><input type="checkbox" value="1" name="intresse">Autos</td>
<td style="width:165px;"><input type="checkbox" value="2" name="intresse">Internet</td>
<td style="width:165px;"><input type="checkbox" value="3" name="intresse">Technik</td>
</tr><tr>					
<td style="width:165px;"><input type="checkbox" value="4" name="intresse">Spiele</td>
<td style="width:165px;"><input type="checkbox" value="5" name="intresse">Veranstaltungen</td>
<td style="width:165px;"><input type="checkbox" value="6" name="intresse">Geldverdienen</td>
</tr><tr>
<td style="width:165px;"><input type="checkbox" value="7" name="intresse">Bauen / Wohnen</td>
<td style="width:165px;"><input type="checkbox" value="8" name="intresse">Musik</td>
<td style="width:165px;"><input type="checkbox" value="9" name="intresse">Gewinnspiele</td>
</tr><tr>
<td style="width:165px;"><input type="checkbox" value="10" name="intresse">Filme</td>
<td style="width:165px;"><input type="checkbox" value="11" name="intresse">Bücher</td>
<td style="width:165px;"><input type="checkbox" value="12" name="intresse">Sport</td>
</tr><tr>
<td style="width:165px;"><input type="checkbox" value="13" name="intresse">Ernährung</td>
<td style="width:165px;"><input type="checkbox" value="14" name="intresse">Kultur</td>
<td style="width:165px;"><input type="checkbox" value="15" name="intresse">Wellness</td>
</tr>
</table>
<input type="submit" value="Speichern">
</form>

addon,zielgruppen-speichern
PHP:
$teile = explode(" ",$_POST[intresse]);
echo"$teile[0] $teile[1] $teile[2] $teile[3] $teile[4] $teile[5] $teile[6] $teile[7] $teile[8] $teile[9] $teile[10] $teile[11] $teile[12] $teile[13] $teile[14]";

da wird mir aber nur eines Angezeigt
und nicht alle...
meine Vermundung explode ist die falsche Funktion..


Und das Problem was ich vorher hatte besteht aber weiterhin...
Erstmal geht es aber ums eintragen und dann ums anzeigen...


Ich möchte mir wenn ich das Gleiche Formular wie oben habe und auf ansehen klicke mir alle User anzeigen lassen welche die Intresse bei sich stehen habe
 
Zuletzt bearbeitet:
Lass mich raten. Du selektierst nun mit LIKE %zahl% ? Denk dran, dass das schief geht ohne Trenner. Denn wenn du auch ein Interesse 10 hast und selektierst nach %1% weil du Interesse 1 willst, dann wird das natürlich auch in der 10 gefunden...

Ich hoffe, du weißt was ich meine.

EDIT: Zu deinem letzten Post: Du hast zweimal $teile[1] im echo.
 
Zuletzt bearbeitet:
Lass mich raten. Du selektierst nun mit LIKE %zahl% ? Denk dran, dass das schief geht ohne Trenner. Denn wenn du auch ein Interesse 10 hast und selektierst nach %1% weil du Interesse 1 willst, dann wird das natürlich auch in der 10 gefunden...

Ich hoffe, du weißt was ich meine.

EDIT: Zu deinem letzten Post: Du hast zweimal $teile[1] im echo.

jo weiß was du meinst....
Derzeit habe ich noch garkeine Abfrage nur die Formular am rest hängt es derzeit..
Danke für den Hinweis
 
Mit Arrays kannst du aber umgehen? Wenn nicht, google hilft. ;)

Hier auf die schnelle ein Beispiel gefunden:
https://aktuell.de.selfhtml.org/artikel/php/checkboxen/

Man sollte aber schon auch mal selbst suchen und probieren und sich nicht alles vorkauen lassen. Das hat lerntechnisch keinen Sinn.

danke danke war gerade dabei es zu erstellen und zu testen..
So werde jetzt noch schnell was dazu basteln alles testen und hoffen das es geht!

Erstmal an alle ein fettes DANKE
 
So jetzt geht es ums anzeigen:

PHP:
<FORM action="?addon_jump=zielgruppen-zeigen" method="POST">
<table>
<tr>
<td style="width:165px;"><input type="checkbox" value="1" name="intresse[]">Autos</td>
<td style="width:165px;"><input type="checkbox" value="2" name="intresse[]">Internet</td>
<td style="width:165px;"><input type="checkbox" value="3" name="intresse[]">Technik</td>
</tr><tr>					
<td style="width:165px;"><input type="checkbox" value="4" name="intresse[]">Spiele</td>
<td style="width:165px;"><input type="checkbox" value="5" name="intresse[]">Veranstaltungen</td>
<td style="width:165px;"><input type="checkbox" value="6" name="intresse[]">Geldverdienen</td>
</tr><tr>
<td style="width:165px;"><input type="checkbox" value="7" name="intresse[]">Bauen / Wohnen</td>
<td style="width:165px;"><input type="checkbox" value="8" name="intresse[]">Musik</td>
<td style="width:165px;"><input type="checkbox" value="9" name="intresse[]">Gewinnspiele</td>
</tr><tr>
<td style="width:165px;"><input type="checkbox" value="10" name="intresse[]">Filme</td>
<td style="width:165px;"><input type="checkbox" value="11" name="intresse[]">Bücher</td>
<td style="width:165px;"><input type="checkbox" value="12" name="intresse[]">Sport</td>
</tr><tr>
<td style="width:165px;"><input type="checkbox" value="13" name="intresse[]">Ernährung</td>
<td style="width:165px;"><input type="checkbox" value="14" name="intresse[]">Kultur</td>
<td style="width:165px;"><input type="checkbox" value="15" name="intresse[]">Wellness</td>
</tr>
</table>
<input type="submit" value="Speichern">
</form>

<?php
include("../config.inc.php");

if($_GET['addon_jump']=="zielgruppen-zeigen")
{
$zielgruppen = implode(', ',$_POST[intresse]);


	$abfrage = "select * from mitglieder where interessen=$zielgruppen"; 
	$ergebnis = mysql_query($abfrage);
	
	if (mysql_num_rows($ergebnis) > 0) 
	{
	while($row = mysql_fetch_array($ergebnis))
	{
	echo "$row[username]";
	}
	}
	else
	{echo"Keine Gefunden";}
	}
?>


Wenn ich mehre auswähle kommt diese:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/web50/html/Cash4sms.net/acp/zeigen.php on line 40
Keine Gefunden

Wenn ich nur Autos wähle komme ich als User aber sobald ich was anderes nehme kommt Keine Gefunden

Info:
ich habe alle Intresse bei mir stehe zum Test (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
 
Wie übergibst du bitte nen String an MySQL?8O

In $zielgruppen steht ja drin "1, 2, 3, 4, 5" und du übergibst es so an MySQL, klar, dass es nicht funktioniert
 
Jo und wie meinst soll ich das am besten machen..
So wie es richtig ist: Normalformen einhalten!
M:N-Beziehung, also 3 Relationen, während der Primärschlüssel der dritten die Kombination der Fremdschlüssel zu den anderen beiden Relation ist.

users
user_id |username
42|theHacker
4711|mydoys.de

interessen
interesse_id |bezeichnung
2|Essen
7|Programmieren
8|Schlafen
25|Spielen

user_interessen
user_id | interesse_id
42|2
42|7
42|8
4711|2
4711|25
 
PHP:
$zielgruppen = implode(', ',$_POST[intresse]);


    $abfrage = "select * from mitglieder where interessen=$zielgruppen";

1. Anweisung: $zielgruppen enthält (string)"1, 2, 3, 4, 5"

2. Anweisung: $abfrage enthält (string)"select * from mitglieder where interessen=1, 2, 3, 4, 5"

=> 1, 2, 3, 4, 5 ist ein ungültiges Format, als was soll MySQL das behandeln?:ugly:

Abgesehen davon überdenke nochmal dein DB-Format, tH hats ja richtig gezeigt.
 
so habe das jetzt genau so gemacht wie theHacker das geschrieben hat.
2 Neue Tabellen erstellt also so wie es dasteht..

Jetzt muss ich aber das auch wieder anpassen...

ALT:
PHP:
$zielgruppen = implode(', ',$_POST[intresse]);
mysql_query("UPDATE mitglieder SET interessen = '$zielgruppen' where username = '$_SESSION[username]'"); echo mysql_error();

So müsste das neue ja jetzt aussehen:
PHP:
mysql_query("INSERT INTO `user_interessen` (`user_id`, `interessen_id`) VALUES ('$dbid', '$_POST[intresse]') ");

Aber da schreibt er ja nur einmal die Intresse rein
 
Aber da schreibt er ja nur einmal die Intresse rein
Fehler erkannt: Der Kandidat erhält 100 Punkte ;)

Wenn mehrere Interessen da sind, musst du auch mehrfach eintragen. Sei sozial und trag alles auf einmal ein, anstatt den anderen Kunden auf deinem Webspace die DB zu überlasten, indem du jedes Tuple einzeln sendest.

Und bitte :pray: Gewöhne dir endlich mal ab, undefinierte Konstanten zu verwenden.
PHP:
$foo[bar]
wirft eine Warnung - und wird in Zukunft vielleicht das Script sogar ganz zum Absturz bringen. Entweder definiere bar oder mach das, was du eigentlich willst, nämlich
PHP:
$foo['bar']
:wall: