Mysqli (Opgelost)
Alexjeee - 15/10/2014 12:00
Lid
Beste,
Ik heb al van meerdere mensen gehoorkom d dat het beter was om aan Mysqli te beginnen en dat ben ik ook gaan doen. Alleen ik er toch nog niet helemaal uit, dus ik wilde vragen of iemand mij 2 voorbeelden kon geven:
Ik heb hier het config bestand (Die op elke pagina wordt geincludeerd) en een random stukje code uit een pagina die gegevens ophaalt. Zou iemand voor mij die zodanig kunnen aanpassen naar Mysqli en opmerkingen erbij kan zetten?
Alvast bedankt!
config:
<?php
error_reporting(E_ALL);
if(!defined('ALPHA') || ALPHA !== 1) {
die('Deze pagina is niet rechtstreeks aan roepbaar!');
}
if(!defined('BRAVO')) {
define('BRAVO', true);
}
include $_SERVER['DOCUMENT_ROOT'].'/conf/functions/datediff.php';
include $_SERVER['DOCUMENT_ROOT'].'/conf/functions/log.php';
include $_SERVER['DOCUMENT_ROOT'].'/conf/functions/ubb.php';
include $_SERVER['DOCUMENT_ROOT'].'/conf/classes/sidn_contract_gen.php';
include $_SERVER['DOCUMENT_ROOT'].'/conf/classes/package_contract_gen.php';
include $_SERVER['DOCUMENT_ROOT'].'/conf/classes/factuur_gen.php';
include $_SERVER['DOCUMENT_ROOT'].'/conf/classes/login.php';
include $_SERVER['DOCUMENT_ROOT'].'/conf/classes/httpsocket.php';
$mysqli = mysqli_connect("localhost", "Gebruikersnaam", "Wachtwoord", "Database");
$cron['logfile'] = 'crons/logs/log.%s.'.date('d-m-Y_H-i-s').'.txt';
$das['host'] = 'localhost';
$login = new Login();
$da = new HTTPSocket();
$server_ssl="Y";
?>
<?php
if ( ! defined ( 'ALPHA' ) || ALPHA
!== 1 ) { die ( 'Deze pagina is niet rechtstreeks aan roepbaar!' ) ; }
}
include $_SERVER [ 'DOCUMENT_ROOT' ] . '/conf/functions/datediff.php' ;
include $_SERVER [ 'DOCUMENT_ROOT' ] . '/conf/functions/log.php' ;
include $_SERVER [ 'DOCUMENT_ROOT' ] . '/conf/functions/ubb.php' ;
include $_SERVER [ 'DOCUMENT_ROOT' ] . '/conf/classes/sidn_contract_gen.php' ;
include $_SERVER [ 'DOCUMENT_ROOT' ] . '/conf/classes/package_contract_gen.php' ;
include $_SERVER [ 'DOCUMENT_ROOT' ] . '/conf/classes/factuur_gen.php' ;
include $_SERVER [ 'DOCUMENT_ROOT' ] . '/conf/classes/login.php' ;
include $_SERVER [ 'DOCUMENT_ROOT' ] . '/conf/classes/httpsocket.php' ;
$mysqli = mysqli_connect( "localhost" , "Gebruikersnaam" , "Wachtwoord" , "Database" ) ;
$cron [ 'logfile' ] = 'crons/logs/log.%s.' . date ( 'd-m-Y_H-i-s' ) . '.txt' ;
$das [ 'host' ] = 'localhost' ;
$login = new Login( ) ;
$da = new HTTPSocket( ) ;
$server_ssl = "Y" ;
?>
En een stukje random code:
Edit: Als ik het goed begrijp zou ik ook boven iedere query een datbase verbinding moeten maken. Maar dit lijkt me een beetje overbodig ?
<?php
$Asql = "SELECT tld, price, contract, actie, dns FROM domains";
$Aquery = mysql_query($Asql) or die(mysql_error());
if(mysql_num_rows($Aquery) >= 1) {
while(false !== ($Arow = mysql_fetch_assoc($Aquery))) {
?>
<div style="float: left; width: 20%;">
<?=$Arow['tld']; ?></div>
<div style="float: left; width: 20%;">
€<?=$Arow['price']; ?></div>
<div style="float: left; width: 20%;">
<?=$Arow['contract']; ?></div>
<div style="float: left; width: 20%;">
<?=$Arow['actie']; ?></div>
<div style="float: left; width: 20%;">
<?=$Arow['dns']; ?></div>
<div style="clear: left;"></div>
<?php
}
}else{
echo 'Momenteel zijn er nog geen domein extensies aanwezig. U kunt ze opvragen via!';
}
?>
<?php
$Asql = "SELECT tld, price, contract, actie, dns FROM domains" ;
?>
<div style="float: left; width: 20%;">
<?= $Arow [ 'tld' ] ; ?> </div>
<div style="float: left; width: 20%;">
€<?= $Arow [ 'price' ] ; ?> </div>
<div style="float: left; width: 20%;">
<?= $Arow [ 'contract' ] ; ?> </div>
<div style="float: left; width: 20%;">
<?= $Arow [ 'actie' ] ; ?> </div>
<div style="float: left; width: 20%;">
<?= $Arow [ 'dns' ] ; ?> </div>
<div style="clear: left;"></div>
<?php
}
} else {
echo 'Momenteel zijn er nog geen domein extensies aanwezig. U kunt ze opvragen via!' ; }
?>
Ik zou het zeer op prijs stellen
Ik hoop dat het me niet al te veel werk uiteindelijk gaat opleveren dat Mysql omzetten naar Mysqli, zijn dan aardig wat pagina's die ik moet gaan aanpakken. Maar ook weer een mooie kans om me code op te schonen.
9 antwoorden
Gesponsorde links
Alexjeee - 15/10/2014 12:47
Lid
Okee, maar nu heb ik dit stukje code:
<?php
if ($con->real_query(' SELECT * FROM news ORDER BY id DESC LIMIT 5 '));
$res = new mysqli_result($con); // of new MySQLi_Result($con)
// ophalen van resultaatrijen, gebruik je favoriete fetch functie
while ($row = $res->fetch_assoc()) {
$title = preg_replace('# #si', '_', $row['subject']);
$news = wordwrap($Arow['message'], 120, '<br />', true);
$news = substr($news, 0, 100).'...<br />';
}
?>
<b><font color="black"><div class="ititle">'.$row['subject'].'</div></font></b>
<div class="nitem">
'.ubb($news).'
<a href="/?p=news&part=view&id='.$row['id'].'&title='.$title.'" id="tooltip" class="a_p" title=" '.$row['message'].' ">Meer...</a>
</div><br />
<?php
}else{
echo 'Momenteel zijn er nog geen Updates/Storingen.!';
?>
<?php
if ( $con -> real_query ( ' SELECT * FROM news ORDER BY id DESC LIMIT 5 ' ) ) ;
$res = new mysqli_result( $con ) ; // of new MySQLi_Result($con)
// ophalen van resultaatrijen, gebruik je favoriete fetch functie
while ( $row = $res -> fetch_assoc ( ) ) {
$news = wordwrap ( $Arow [ 'message' ] , 120 , '<br />' , true ) ; $news = substr ( $news , 0 , 100 ) . '...<br />' ; }
?>
<b><font color="black"><div class="ititle">'.$row['subject'].'</div></font></b>
<div class="nitem">
'.ubb($news).'
<a href="/?p=news&part=view&id='.$row['id'].'&title='.$title.'" id="tooltip" class="a_p" title=" '.$row['message'].' ">Meer...</a>
</div><br />
<?php
} else {
echo 'Momenteel zijn er nog geen Updates/Storingen.!' ; ?>
Maar hij blijft maar aangeven unexpected } op lijn blabla
Op de lijne van }else{
wat doe ik fout dan?
Thomas - 15/10/2014 12:56
Moderator
<?php
if ($con->real_query(' SELECT * FROM news ORDER BY id DESC LIMIT 5 '));
?>
<?php
if ( $con -> real_query ( ' SELECT * FROM news ORDER BY id DESC LIMIT 5 ' ) ) ;
?>
... -_-
daarnaast: spring je code eens fatsoenlijk in, dan zie je waarschijnlijk ook sneller waar je de mist in gaat met je accolades.
Alexjeee - 15/10/2014 13:04
Lid
Wat bedoel je met die: ...-_-
Bij een andere page werkt dat gewoon hoor...
Dus snap niet wat de fout daar is...
Jointjeff - 15/10/2014 13:29 (laatste wijziging 15/10/2014 13:31)
HTML interesse
Je plaats een } else { terwijl er geen accolade geopend is bij de if-statement van je real_query.
Dus je werkt zo:
if ( $con->real_query(' SELECT * FROM news ORDER BY id DESC LIMIT 5 ') ) {
// query
} else {
// anders...
}
if ( $con -> real_query ( ' SELECT * FROM news ORDER BY id DESC LIMIT 5 ' ) ) {
// query
} else {
// anders...
}
Of zo:
if ( $con->real_query(' SELECT * FROM news ORDER BY id DESC LIMIT 5 ') ):
// query
else:
// anders
endif;
if ( $con -> real_query ( ' SELECT * FROM news ORDER BY id DESC LIMIT 5 ' ) ) :
// query
else :
// anders
endif ;
Bedankt door: Alexjeee
Alexjeee - 15/10/2014 13:34
Lid
dus als ik het goed begrijp zorgt mysqli ervoor dat je je html code wel tussen de echo '..' moet plaatsen. Om zo ook gebruik van de else te kunnen maken?
Jointjeff - 15/10/2014 13:43 (laatste wijziging 15/10/2014 14:21)
HTML interesse
Hier de code. Hopelijk zie je dan ook wat er mis ging in je eigen code.
-- edit --
De code die hier stond was fout. Als je uitgaat van FangorN's tutorial zie je tal van voorbeelden. Dit is er een waarbij de query is aangepast naar die uit jouw script.
<?php
$res = mysqli_query($con, ' SELECT * FROM news ORDER BY id DESC LIMIT 5 ');
if (mysqli_num_rows($res)) {
// $row = mysqli_fetch_assoc($res);
while ( $row = $res->fetch_assoc() ) {
$title = preg_replace('# #si', '_', $row['subject']);
$news = wordwrap($Arow['message'], 120, '<br />', true);
$news = substr($news, 0, 100).'...<br />';
?>
<b>
<font color="black">
<div class="ititle"><?php echo $row['subject']; ?></div>
</font>
</b>
<div class="nitem">
<?php ubb( $news ); ?>
<a href="/?p=news&part=view&id=<?php echo $row['id']; ?>&title='.$title.'" id="tooltip" class="a_p" title="<?php echo $row['message']; ?>">Meer...</a>
</div>
<br />
<?php
}
} else {
// toon een mededeling dat er geen resultaten gevonden zijn
// ...
}
mysqli_free_result($res);
<?php
$res = mysqli_query( $con , ' SELECT * FROM news ORDER BY id DESC LIMIT 5 ' ) ;
if ( mysqli_num_rows( $res ) ) {
// $row = mysqli_fetch_assoc($res);
while ( $row = $res -> fetch_assoc ( ) ) {
$news = wordwrap ( $Arow [ 'message' ] , 120 , '<br />' , true ) ; $news = substr ( $news , 0 , 100 ) . '...<br />' ;
?>
<b>
<font color="black">
<div class="ititle">
<?php echo $row [ 'subject' ] ; ?> </div>
</font>
</b>
<div class="nitem">
<?php ubb( $news ) ; ?>
<a href="/?p=news&part=view&id=
<?php echo $row [ 'id' ] ; ?> &title='.$title.'" id="tooltip" class="a_p" title="
<?php echo $row [ 'message' ] ; ?> ">Meer...</a>
</div>
<br />
<?php
}
} else {
// toon een mededeling dat er geen resultaten gevonden zijn
// ...
}
mysqli_free_result( $res ) ;
Alexjeee - 15/10/2014 13:54
Lid
Okee thanks! Dat werkt, alleen de else laat die nog steeds niet zien...
Heb hem aangepast, want als er geen nieuws items zijn zou die een bericht moeten tonen met "Er zijn geen Updates/Storingen"
Maar dat doet die niet:
<?php
if ( $con->real_query(' SELECT * FROM news ORDER BY id DESC LIMIT 5 ') ) {
$res = new mysqli_result( $con ); // of new MySQLi_Result($con)
// ophalen van resultaatrijen, gebruik je favoriete fetch functie
while ( $row = $res->fetch_assoc() ) {
$title = preg_replace('# #si', '_', $row['subject']);
$news = wordwrap($row['message'], 120, '<br />', true);
$news = substr($news, 0, 100).'...<br />';
?>
<b>
<font color="black">
<div class="ititle"><?php echo $row['subject']; ?></div>
</font>
</b>
<div class="nitem">
<?php echo ubb( $news ); ?>
<a href="/?p=news&part=view&id=<?php echo $row['id']; ?>&title=<?php echo $row['title']; ?>" id="tooltip" class="a_p" title="<?php echo $row['message']; ?>">Meer...</a>
</div>
<br />
<?php
}
} else {
echo('Er zijn geen domeinen gevonden');
}
?>
<?php
if ( $con -> real_query ( ' SELECT * FROM news ORDER BY id DESC LIMIT 5 ' ) ) {
$res = new mysqli_result( $con ) ; // of new MySQLi_Result($con)
// ophalen van resultaatrijen, gebruik je favoriete fetch functie
while ( $row = $res -> fetch_assoc ( ) ) {
$news = wordwrap ( $row [ 'message' ] , 120 , '<br />' , true ) ; $news = substr ( $news , 0 , 100 ) . '...<br />' ; ?>
<b>
<font color="black">
<div class="ititle">
<?php echo $row [ 'subject' ] ; ?> </div>
</font>
</b>
<div class="nitem">
<?php echo ubb
( $news ) ; ?> <a href="/?p=news&part=view&id=
<?php echo $row [ 'id' ] ; ?> &title=
<?php echo $row [ 'title' ] ; ?> " id="tooltip" class="a_p" title="
<?php echo $row [ 'message' ] ; ?> ">Meer...</a>
</div>
<br />
<?php
}
} else {
echo ( 'Er zijn geen domeinen gevonden' ) ;
}
?>
Thomas - 15/10/2014 14:12
Moderator
Je begint al met het ophalen van resultaten, zonder te controleren of er uberhaupt wel resultaten zijn...
Vaak is de structuur van een lap code met een query als volgt:
$res = <je query>;
if (<num_rows functie> > 0) {
while(<haal een resultaatrij op m.b.v. $res>) {
<doe zut met je resultaatrij>
}
} else {
<toon boodschap dat er geen resultaten zijn>
}
<geef je resultaat vrij>
$res = <je query> ;
if (<num_rows functie> > 0) {
while(<haal een resultaatrij op m.b.v. $res> ) {
<doe zut met je resultaatrij>
}
} else {
<toon boodschap dat er geen resultaten zijn>
}
<geef je resultaat vrij>
Zoveel staat ook in de tutorial.
Bedankt door: Jointjeff
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.