* WyriHaximus pakt de kruip olie alvastquote:Op donderdag 26 juli 2007 15:48 schreef wonderer het volgende:
*probeert left join te snappen*
Serieus, volgens mij heb ik een redacteur nodig. Mijn SQL skills zitten al 8 jaar op hetzelfde niveauDat kan allemaal veel handiger volgens mij...
http://www.w3schools.com/sql/sql_join.aspquote:Op donderdag 26 juli 2007 15:48 schreef wonderer het volgende:
*probeert left join te snappen*
Serieus, volgens mij heb ik een redacteur nodig. Mijn SQL skills zitten al 8 jaar op hetzelfde niveauDat kan allemaal veel handiger volgens mij...
Vooral wanneer ik het moet gebruiken. De syntax is niet zo heel lastig, maar het nut. En werkt het alleen met twee verschillende tabellen?quote:Op donderdag 26 juli 2007 15:52 schreef WyriHaximus het volgende:
[..]
* WyriHaximus pakt de kruip olie alvast
Anyway vertel. Wat snap je niet?
In feite can kan oneindig aantal tabellen met left join koppelenquote:Op donderdag 26 juli 2007 16:03 schreef wonderer het volgende:
[..]
Vooral wanneer ik het moet gebruiken. De syntax is niet zo heel lastig, maar het nut. En werkt het alleen met twee verschillende tabellen?
Ik heb alle lagen forum (dus categorieen, subfora, startpost en replies) in dezelfde tabel staan en het level van elke entry geeft weer wat het is. Leek me handiger dan vier aparte tabellen met voornamelijk dezelfde velden. Zou ik daar eventueel (als ik erachter kom waar ik het voor kan gebruiken) gebruik kunnen maken van left join?
Dus eigenlijk vraag ik me af: welke situatie zal eerder om een left join vragen, dan bijvoorbeeld twee aparte queries.
Hm.quote:Op donderdag 26 juli 2007 15:52 schreef Geqxon het volgende:
[..]
http://www.w3schools.com/sql/sql_join.asp
1 2 3 4 5 6 7 8 9 10 11 12 13 | $result1=runquery("SELECT * FROM user_profile WHERE username=".quote_smart($user,$d),$d); $result2=runquery("SELECT * FROM user_data WHERE username=".quote_smart($user,$d),$d); $result3=runquery("SELECT * FROM user_prefs WHERE username=".quote_smart($user,$d),$d); $result4=runquery("SELECT * FROM users WHERE username=".quote_smart($user,$d),$d); $result5=runquery("SELECT * FROM user_extras WHERE username=".quote_smart($user,$d),$d); $row1=mysql_fetch_array($result1); $row2=mysql_fetch_array($result2); $row3=mysql_fetch_array($result3); $row4=mysql_fetch_array($result4); $row5=mysql_fetch_array($result5); ?> |
Ja.quote:Op donderdag 26 juli 2007 16:07 schreef wonderer het volgende:
[..]
Hm.
Dus iets als
[ code verwijderd ]
zou met een join kunnen? Met een query tegelijk alle noodzakelijke dingen uit meerdere tabellen halen?
hmz, pagina begint met wat php-errorsquote:Op donderdag 26 juli 2007 14:06 schreef WyriHaximus het volgende:
[..]
Kijk eens naar die van phpBB, zit redelijk netjes in elkaar. Komt zo ff link naar de source, upload is wat traag op me werk
. http://wyrihaximus.net/en(...)-n-sessions_php.html
Ik heb hier dus al enkele topics mee bevuild, maar om het dan toch een keertje op te takelen:quote:Op donderdag 26 juli 2007 16:03 schreef wonderer het volgende:
[..]
Vooral wanneer ik het moet gebruiken. De syntax is niet zo heel lastig, maar het nut. En werkt het alleen met twee verschillende tabellen?
Ik heb alle lagen forum (dus categorieen, subfora, startpost en replies) in dezelfde tabel staan en het level van elke entry geeft weer wat het is. Leek me handiger dan vier aparte tabellen met voornamelijk dezelfde velden. Zou ik daar eventueel (als ik erachter kom waar ik het voor kan gebruiken) gebruik kunnen maken van left join?
Dus eigenlijk vraag ik me af: welke situatie zal eerder om een left join vragen, dan bijvoorbeeld twee aparte queries.
Liep idd ff te kutten ja met de functie die voor de source parsing and highligthing zorgt aangezien de text van de code wat klein isquote:Op donderdag 26 juli 2007 16:11 schreef qu63 het volgende:
[..]
hmz, pagina begint met wat php-errors
verder ziet het wel ok uit
En dat kan ik dan met een enkele fetch_array ophalen? wordt het dan iets van $row["users.last_visit"] en $row["user_data.first_name"]?quote:
Ik wil in zoverre meer dan standaard dat geen enkel bestaand pakket alles heeftquote:Op donderdag 26 juli 2007 16:13 schreef Chandler het volgende:
Zo ie zo vind ik dat de meeste bulletinboards te veel mogelijkheden hebben. Een standaard forum is bijna niet meer te vinden.
Waar je simpel en alleen kunt registreren, posten enzo. Heb zelf ooit ook een forum geschreven (wie niet?) ennuh moet zeggen dat het niet echt heel moeilijk is hoor. Tenzij je meer wilt dan 'standaard'
Oh damn. Volgens mij moet ik echt alles wat ik tot nu toe heb omgooienquote:Op donderdag 26 juli 2007 16:13 schreef Geqxon het volgende:
[..]
Ik heb hier dus al enkele topics mee bevuild, maar om het dan toch een keertje op te takelen:
In het systeem dat ik aan het bouwen ben kunnen gebruikers een nieuwsartikel bookmarken. Ik plaats dan een record in de bookmark tabel met het userid en het nieuwsartikel-id.
In het nieuwsoverzicht wil ik dat de gebruikers bij elk nieuwsartikel zien of ze deze al gebookmarked hebben of niet. Nu kan ik bij elk nieuwsartikel het in de database opzoeken, maar ik maak gebruik van een left join. Als bij het nieuwsartikel-ID een bookmark is geplaatst (en dat dus in de bookmarktabel staat), dan komt hij er keurig bij te staan, en als die er niet is, staat er NULL.
Zo kan ik bijna de complete pagina in 1 query ophalen.
Jep, alles wordt in een array gestopt. :)quote:Op donderdag 26 juli 2007 16:14 schreef wonderer het volgende:
[..]
En dat kan ik dan met een enkele fetch_array ophalen? wordt het dan iets van $row["users.last_visit"] en $row["user_data.first_name"]?
1 2 3 | print_r($array); ?> |
Ja, maar je moet wel gaan specificeren welke velden je wiltquote:Op donderdag 26 juli 2007 16:14 schreef wonderer het volgende:
[..]
En dat kan ik dan met een enkele fetch_array ophalen? wordt het dan iets van $row["users.last_visit"] en $row["user_data.first_name"]?
dus users.* werkt niet?quote:Op donderdag 26 juli 2007 16:19 schreef WyriHaximus het volgende:
[..]
Ja, maar je moet wel gaan specificeren welke velden je wilt. En je kunt ook user_data.first_name AS firstname en dan zal die firstname in je $row heten
.
dat vond ik ook al jaquote:Op donderdag 26 juli 2007 16:13 schreef WyriHaximus het volgende:
[..]
Liep idd ff te kutten ja met de functie die voor de source parsing and highligthing zorgt aangezien de text van de code wat klein is![]()
quote:Thanks!
Word aan gewerktquote:
quote:
Jawel maar als je 2 keer de zelfde ga je errors krijgenquote:
You asked for it... :')quote:Op donderdag 26 juli 2007 16:31 schreef Geqxon het volgende:
wonderer, dump eens een lap code waarvan je denkt dat het korter kan. :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | function profile_form($user,$element) { global $days, $months; $d=connectDB(); $result1=runquery("SELECT * FROM user_profile WHERE username=".quote_smart($user,$d),$d); $result2=runquery("SELECT * FROM user_data WHERE username=".quote_smart($user,$d),$d); $result3=runquery("SELECT * FROM user_prefs WHERE username=".quote_smart($user,$d),$d); $result4=runquery("SELECT * FROM users WHERE username=".quote_smart($user,$d),$d); $result5=runquery("SELECT * FROM user_extras WHERE username=".quote_smart($user,$d),$d); $row1=mysql_fetch_array($result1); $row2=mysql_fetch_array($result2); $row3=mysql_fetch_array($result3); $row4=mysql_fetch_array($result4); $row5=mysql_fetch_array($result5); $bd=explode("-",$row2["birthday"]); $day=$bd[2]; $month=$bd[1]; $year=$bd[0]; $days=select_list('profileform[user_day]',$day,$days); $months=select_list('profileform[user_month]',$month,$months); if($row2["user_sex"]=="f"){$sf='checked';} elseif($row2["user_sex"]=="m"){$sm='checked';} elseif($row2["user_sex"]=="t"){$st='checked';} if($row3["email_public"]=='1'){ $pb=' checked'; } else{ $pv=' checked'; } if($row3["smilies"]=='1'){ $sb=' checked'; } else{ $sv=' checked'; } $res=runquery("SELECT * FROM user_avatars WHERE username=".quote_smart($user,$d),$d); while($av=mysql_fetch_array($res)){ $ava=$av["avatar_ID"].'.'.$av["extension"]; if($av["avatar_ID"]==$row2["user_avatar"]){ $checked=' selected'; } else{ $checked=''; } $select .= '<option value="'.$ava.'"'.$checked.'>'.$ava.'</option>'; } if(mysql_num_rows(runquery("SELECT * FROM user_inventory WHERE item_ID='3' AND username=".quote_smart($user,$d),$d))=='1'){ $fe_custom_color='<select name="profileform[custom_color]" id="kleur" style="background-color:#000000;color:#ffeeee;">'.generate_colors($row5["custom_color"]).'</select> Eigen kleurtje <br />'; } else{ $fe_custom_color='Eigen kleurtje: <span style="color:#'.$row5["custom_color"].'">'.$row5["custom_color"].' (<a href="shop.php">aanpassen</a>)</span><br />'; } if(mysql_num_rows(runquery("SELECT * FROM user_inventory WHERE item_ID='4' AND username=".quote_smart($user,$d),$d))=='1'){ $fe_custom_tag='<input type="text" class="text" name="profileform[custom_tag]"> Eigen tag <br />'; } else{ $fe_custom_tag='Eigen tag: '.$row5["custom_tag"].' (<a href="shop.php">aanpassen</a>)<br />'; } if(mysql_num_rows(runquery("SELECT * FROM user_inventory WHERE item_ID='7' AND username=".quote_smart($user,$d),$d))=='1'){ $fe_custom_sig='In je handtekening mogen plaatjes van maximaal 400 pixels breed en 60 pixels hoog. Het totaal aantal tekens mag de 250 niet overschrijden, inclusief BBCode. Op de inhoud zijn de algemene voorwaarden van toepassing. <br />'; $fe_custom_sig.='<textarea name="profileform[custom_sig]" style="width:285px;height:60px;" class="sig">'.stripslashes($row5["custom_sig"]).'</textarea>'; } else{ $fe_custom_sig='Je hebt geen handtekening. Ga naar de <a href="shop.php">shop</a> om deze mogelijkheid te benutten.<br />'; } if(mysql_num_rows(runquery("SELECT * FROM user_inventory WHERE item_ID='6' AND username=".quote_smart($user,$d),$d))=='1'){ $change_name='1'; } if($row2["user_alias"]==$user || $row2["user_alias"]==''){ $fe_alias='<input type="text" class="text" name="profileform[user_alias]" value="'.$user.'"> Chatnaam <br />'; } elseif($change_name=='1'){ $fe_alias='<input type="text" class="text" name="profileform[user_alias]" value="'.$row2["user_alias"].'"> Chatnaam <br />'; } else{ $fe_alias=format_username($user).' (Chatnaam <a href="">veranderen</a>)<br />'; } $fe_avatar='<select class="actielijst" name="profileform[user_avatar]"><option value="">Geen avatar</option> '.$select.'</select> <a href="members.php?c=avatars">Upload nieuwe avatar</a><br />'; $fe_color='<select name="profileform[user_color]" id="kleur" style="background-color:#000000;color:#ffeeee;">'.generate_colors($row2["user_color"]).'</select> Chatkleur <br />'; $fe_bio='Vertel hier iets over jezelf. Geen chatlogs, geen ASCII geknutsel, geen verhalen, gedichten, songteksten etc.<br />'; $fe_bio.=show_toolbar('user_bio'); $fe_bio.='<textarea id="user_bio" class="user_bio" name="profileform[user_bio]">'.stripslashes($row1["user_bio"]).'</textarea>'; $fe_bio.='<script>write_toolbar('user_bio');</script>'; $fe_homepage='<input type="text" class="text" name="profileform[user_page]" value="'.$row1["user_page"].'"> URL van je homepage <br />'; $fe_msn='<input type="text" class="text" name="profileform[user_msn]" value="'.$row1["user_msn"].'"> Je MSN-adres <br />'; $fe_wp='<input type="text" class="text" name="profileform[user_whatpulse]" value="'.$row1["user_whatpulse"].'"> Whatpulse username <br />'; $fe_email='<input type="text" class="text" name="profileform[email]" value="'.$row4["email"].'"> E-mailadres<br />'; $fe_first_name='<input type="text" class="text" name="profileform[first_name]" value="'.$row2["first_name"].'"> Voornaam<br />'; $fe_last_name='<input type="text" class="text" name="profileform[last_name]" value="'.$row2["last_name"].'"> Achternaam<br />'; $fe_location='<input type="text" class="text" name="profileform[location]" value="'.$row2["location"].'"> Woonplaats<br />'; $fe_country='<input type="text" class="text" name="profileform[country]" value="'.$row2["country"].'"> Land<br />'; $fe_birthday=$days.' - '.$months.' - <input type="text" class="text" size="4" maxlength="4" name=profileform[user_year]" value="'.$year.'"><br />'; $fe_sex='<input type="radio" name="profileform[user_sex]" value="m" '.$sm.'> Jongen <input type="radio" name="profileform[user_sex]" value="f" '.$sf.'> Meisje<br /><input type="radio" name="profileform[user_sex]" value="t" '.$st.' style="display:none;">'; $fe_prefs=' <table class="prefs"> <tr><td>Email-adres</td> <td><input type="radio" value="1" name="profileform[email_public]"'.$pb.'> Openbaar</td> <td><input type="radio" value="0" name="profileform[email_public]"'.$pv.'> Privé</td></tr> <tr><td>Smilies</td> <td><input type="radio" value="1" name="profileform[smilies]"'.$sb.'> Aan</td> <td><input type="radio" value="0" name="profileform[smilies]"'.$sv.'> Uit</td></tr> </table>'; $formheader='<form class="profile_form" method="post" action="?c=submit_profile">'; $submit='<input type="hidden" name="profileform[username]" value="'.$user.'"><input type="submit" class="submit" name="submit_profile" value="opslaan" accesskey="s">'; $formfooter='</form>'; $link='<a href="?c=profile&user='.$user.'">Bekijk je profiel</a>'; switch($element){ case '1': #bio $form=$formheader.$fe_bio.$submit.$formfooter; break; case '2': #contact $form=$formheader.$fe_homepage.$fe_msn.$fe_wp.$fe_email.$submit.$formfooter; break; case '3': #persoonlijk $form=$formheader.$fe_first_name.$fe_last_name.$fe_location.$fe_country.$submit.$formfooter; break; case '4': #geb. datum/sexe $form=$formheader.$fe_birthday.$fe_sex.$submit.$formfooter; break; case '5': #chatstuff $form=$formheader.$fe_alias.$fe_avatar.$fe_color.$submit.$formfooter; break; default: $form=$formheader.'<div class="prof_left"> <fieldset class="prof"><legend>Contactgegevens</legend>'.$fe_homepage.$fe_msn.$fe_wp.$fe_email.'</fieldset> <fieldset class="prof"><legend>Persoonlijk</legend>'.$fe_first_name.$fe_last_name.$fe_location.$fe_country.$fe_birthday.$fe_sex.'</fieldset> <fieldset class="prof"><legend>Chatstuff</legend>'.$fe_alias.$fe_avatar.$fe_color.'</fieldset> <fieldset class="prof"><legend>Instellingen</legend>'.$fe_prefs.'</fieldset> <fieldset class="prof"><legend>Extra's</legend>'.$fe_custom_tag.$fe_custom_color.$fe_custom_sig.'</fieldset> '.$submit.'</div> <div class="prof_right"><fieldset class="prof"><legend>Biografie</legend>'.$fe_bio.'</fieldset></div>'.$formfooter; break; } return $form; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function breadcrumb($id){ $d=connectDB(); $r1=runquery("SELECT forum_subject, parent_ID FROM forum WHERE ID='".$id."'",$d); $pid=mysql_result($r1,0,"parent_ID"); $topic=mysql_result($r1,0,"forum_subject"); $r2=runquery("SELECT forum_subject, parent_ID FROM forum WHERE ID='".$pid."'",$d); $pid2=mysql_result($r2,0,"parent_ID"); $subforum=mysql_result($r2,0,"forum_subject"); $r3=runquery("SELECT forum_subject FROM forum WHERE ID='".$pid2."'",$d); $forum=mysql_result($r3,0,"forum_subject"); $crumb='<a href="forum.php">Griezelforum</a> > '.$forum.': <a href="forum.php?c=forum&id='.$pid.'">'.$subforum.'</a> > '.stripslashes($topic); return $crumb; } ?> |
Dat blijf je altijd houdenquote:Op donderdag 26 juli 2007 16:38 schreef wonderer het volgende:
Dit voelt echt net als iemand een verhaal laten lezenBen echt bang dat er zometeen iemand komt die me keihard uitlacht omdat de code zo knullig is
Met dat verschil dat ik weet dat ik goed verhalen kan schrijven, maar dat mijn codeer-niveau nog in groep drie zit
opgelöst!quote:Op donderdag 26 juli 2007 16:36 schreef qu63 het volgende:
hmz, http://www.w3schools.com/php/php_sessions.asp helpt me wel een beetje verder, maar hoe zorg ik er voor dat ik dezelfde gegevens ook op andere pagina's kan gebruiken?
Pagina 1:quote:Op donderdag 26 juli 2007 16:36 schreef qu63 het volgende:
hmz, http://www.w3schools.com/php/php_sessions.asp helpt me wel een beetje verder, maar hoe zorg ik er voor dat ik dezelfde gegevens ook op andere pagina's kan gebruiken?
1 2 3 4 5 | session_start(); $_SESSION["Voornaam"] = "Dieter"; ?> |
1 2 3 4 5 6 | session_start(); echo $_SESSION["Voornaam"]; // Dieter ?> |
quote:Op donderdag 26 juli 2007 16:40 schreef wonderer het volgende:
Deze is ook wel leuk trouwens:
[ code verwijderd ]
Breadcrumb voor forum->subforum->topic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function breadcrumb($id){ $d = connectDB(); $result = runquery("SELECT forum_subject, parent_ID FROM forum WHERE ID = '" . mysql_real_escape_string($id) . "'"); $topic = mysql_fetch_assoc($result); $result = runquery("SELECT forum_ID, forum_subject, parent_ID FROM forum WHERE ID = '" . $topic['parent_ID'] . "'"); $subforum = mysql_fetch_assoc($result); $result = runquery("SELECT forum_subject FROM forum WHERE ID = '" . $subforum['parent_ID'] . "'"); $forum = mysql_fetch_assoc($result); $breadcrumb_html = '<a href="forum.php">Griezelforum</a> » ' . $forum['forum_subject'] . ': '; $breadcrumb_html .= '<a href="forum.php?c=forum&id='.$subforum['forum_ID'].'">'.$subforum['forum_subject'].'</a> » '; $breadcrumb_html .= stripslashes($topic['forum_subject']); return $breadcrumb_html; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function breadcrumb($id){ $d = connectDB(); $topic = mysql_fetch_assoc(runquery("SELECT forum_subject, parent_ID FROM forum WHERE ID = '" . mysql_real_escape_string($id) . "'",$d)); $subforum = mysql_fetch_assoc(runquery("SELECT forum_ID, forum_subject, parent_ID FROM forum WHERE ID = '" . $topic['parent_ID'] . "'",$d)); $forum = mysql_fetch_assoc(runquery("SELECT forum_subject FROM forum WHERE ID = '" . $subforum['parent_ID'] . "'",$d)); $breadcrumb_html = '<a href="forum.php">Griezelforum</a> » ' . $forum['forum_subject'] . ': '; $breadcrumb_html .= '<a href="forum.php?c=forum&id='.$subforum['forum_ID'].'">'.$subforum['forum_subject'].'</a> » '; $breadcrumb_html .= stripslashes($topic['forum_subject']); return $breadcrumb_html; } ?> |
1 2 3 4 | $format = '<a href="forum.php">Griezelforum</a> » %s <a href="forum.php?c=forum&id=%s">&s</a> » %s'; $breakcrumb_html = sprintf($format, $forum['forum_subject'], $subforum['forum_ID'], $subforum['forum_subject'], stripslashes($topic['forum_subject']);); ?> |
Dat is inderdaad een stuk netter.quote:Op donderdag 26 juli 2007 18:11 schreef super-muffin het volgende:
ik vind de html opbouwen met sprintf() netter dan dit.
[ code verwijderd ]
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |