php Array Problem

kekskruemel

Angesehenes Mitglied
Hallo,

ich versuce ein Array mit Zufallszahlen zu befüllen. Diese sollen dann abgeglichen werden und anschließend die herausgelöscht werden, welche doppelt sind. Dann soll es jeweils den entsprechenden Eintrag aus der Datenbank mit dieser ID heraussuchen und anzeigen.

Leider habe ich irgendwo einen Fehler drin. Kann mir wer helfen?
Danke!
CODE $vorschlaghead = "<h1 class='head'>".$lang['Vorschlag_Head']."</h1>";
$vorschlag = "";
$anz_sql = mysql_query("SELECT * FROM anzeige");
$anz_res = mysql_num_rows($anz_sql);
for($i=0; $i < 10; $i++)
}
$zufallszahl[] = rand(1,$anz_res);
}
$zufallszahl = array_unique($zufallszahl);
$anzahlarray = array_count_values($zufallszahl);
for($j=0; $j < $anzahlarray; $j++)
{
$vorschlagSQL = "SELECT * FROM anzeige WHERE anzeige_id = '".$zufallszahl[$j]."' ";
$vorschlagquery = mysql_query($vorschlagSQL);
while($vorschlag_ds = mysql_fetch_object($vorschlagquery))
{
$vorschlag .= "<p class=vorschlag><a href='anzeige.php?art=".$vorschlag_ds->anzeige_id."'>".$vorschlag_ds->head."</a></p>";
}
}



 
Du solltest eine Fehlermeldung wie "Parse error: syntax error, unexpected '}' in /var/www/web/html/deinedatei.php on line 6" erhalten.
Und die besagt: Du hast eine geschweifte Klammer falsch gesetzt.

Schau mal in zeile 6 und dreh die geschweifte Klammer dort um ;-)
 
Hallo,

wenn du einfach nur zufällige Einträge aus der Datenbank auslesen willst, dann kannst du das auch mit:

CODE SELECT * FROM anzeige ORDER BY RAND() LIMIT 0,10


das würde dir 10 zufällige Zeilen zurückgeben.

Grüße
Oli
 
ich hoffe das ist nicht der fertige Code, ansonsten bau bitte noch:

CODE
if(empty($vorschlagquery))



ein, sonst wirft er dir ja ne Fehlermeldung bei rows=0
 
QUOTE (nitrit @ Di 14.10.2008, 18:46)ich hoffe das ist nicht der fertige Code, ansonsten bau bitte noch:

ich hoffe das ist nicht der fertige Code, ansonsten bau bitte um

.....

Der orginalCode ist zwar eh hinfällig wegen dem Hinweis auf SQL-RAND ....
... aber, vielleicht für andere Fälle sehe ich mich gewzungen den Code zu kritisieren

CODE
for($j=0; $j < $anzahlarray; $j++)
{
$vorschlagSQL = "SELECT * FROM anzeige WHERE anzeige_id = '".$zufallszahl[$j]."' ";
$vorschlagquery = mysql_query($vorschlagSQL);
while($vorschlag_ds = mysql_fetch_object($vorschlagquery))


SQL auslesen in "while" wo doch immer nur ein datensatz rauskommt ....
... auslesen mit "if" .... bitte

CODE
if($vorschlag_ds = mysql_fetch_object($vorschlagquery))



bzw
es geht um IDs?
die ForSchleife weg und den WHERE auf einen IN

CODE
$vorschlagSQL = " SELECT * FROM anzeige ";
$vorschlagSQL.= " WHERE anzeige_id IN (1,2,3,4,5,6,7,8,9)";
$vorschlagquery = mysql_query($vorschlagSQL);
while($vorschlag_ds = mysql_fetch_object($vorschlagquery))



wie könnten die Daten dort reinkommen ... für den IN ... wenn der RAND nicht schon genutzt würde /vielleicht will man ja keinen Rand, in anderem Anwendungsfall)

Angenommen die QuellIDs kommen aus Anderer tabelle wie die spätere WHERE IN (1,2,3,4,5)

CODE
$KOMMA='';$WHERE='';// $WHERE = IDliste
$query = mysql_query("SELECT id FROM quelltabele");
$result = mysql_query($query) or die('<hr>'.$query.'<hr>'.mysql_error());
while( $line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$WHERE .= $KOMMA . $line['id']; $KOMMA=',';
}
// ups, das ist jetzt irgendwie etwas falsch ....
// wegen randomizer müße ich ja in Arry schreiben
// ok, mach ich einen explode und bau dann den STring wieder zurück
$WUERFELBECHER = explode(',',$WHERE);
$WUERFELcounter= count($WUERFELBECHER);
$WUERFELschuettel=100;
//noch eine kleine verschiebung ... weil Array bei 0 beginnt und Mensch ab 1 zählt
$WUERFELBECHER[$WUERFELcounter]=$WUERFELBECHER[0];
// [0] nutzen wir jetzt noch ab "buffer" ähm, "zwischenablage";
while( $WUERFELschuettel-- )
{
$zufall1 = mt_rand( 1, $WUERFELcounter );
$zufall2 = mt_rand( 1, $WUERFELcounter );
$WUERFELBECHER[ 0]=$WUERFELBECHER[$zufall1];
$WUERFELBECHER[$zufall1]=$WUERFELBECHER[$zufall2];
$WUERFELBECHER[$zufall2]=$WUERFELBECHER[ 0];
}
// und zurückbauen
$i=0; $KOMMA='';$WHERE='';// $WHERE = IDliste
while( $i++<$WUERFELcounter )
{
$WHERE .= $KOMMA . $WUERFELBECHER[$i]; $KOMMA=',';
}

$vorschlagSQL = " SELECT * FROM ergebnisslieferant ";
$vorschlagSQL.= " WHERE anzeige_id IN ($WHERE)";
$vorschlagquery = mysql_query($vorschlagSQL);
while($vorschlag_ds = mysql_fetch_object($vorschlagquery))
{
}




wenn die Daten für "WHERE IN" keine Zahlen sind ....

CODE
while( $line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$WHERE .= $KOMMA ."'". addslashes($line['textSpalte']) ."'"; $KOMMA=',';
}

 
Zurück
Oben