erreur connexion mysql

Petit nouveau ! | 3 Messages

06 juil. 2013, 13:03

Bonjour,

Je ne sais pas si je suis dans le bon topic sinon merci de le déplacer voila j'ai un site web, j'ai tenté de le relier à mon server de jeux mais sur le site j'ai plusieurs erreurs et sur le mysql je ne voit pas le site

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/filer-6/web/web583/htdocs/index.php:1) in /data/filer-6/web/web583/htdocs/index.php on line 2



Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /data/filer-6/web/web583/htdocs/compte.php on line 79

Merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 juil. 2013, 15:12

Salut,

Le premier message c'est parce que ligne 2 du fichier index.php tu utilise la fonction header et ligne tu affiche quelque chose.
Ce quelque chose peux être un caractère "blanc" genre saut de ligne espace etc AVANT le <?php
Cela peux aussi être du a un fichier encodé en utf-8 avec bom.
Solution encodage utf-8 sans BOM et suppression de tout affichage.

Le second c'est parce que tu a une requête foireuse et que tu ne traite pas le retour du mysql_query qui se trouve avant le mysql_num_rows.
Il fait toujours tester le retour de ce type de fonction et traiter l'erreur pour en voter d'autre (par exemple avec un mysql_fetch_* ensuite).

Exemple
<?php
$ret = mysql_query('.....');
If($ret === false){
Echo 'erreur SQL : '. mysql_error().'<br/>';
}else{
// traitement de la requête 
}
Dernière chose, l'extension mysql est dépréciée (donc vouée a disparaître) et non maintenue.
Il serait bon d'utiliser a la place l'extension mysqli pour préparer ton code pour l'avenir et pour pouvoir utiliser des fonctionnalités comme les requêtes préparées avec une extension a jour ;)

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 3 Messages

06 juil. 2013, 18:11

la ligne 75 c'est ça

Code : Tout sélectionner

if(mysql_num_rows($query))
Je ne m'y connais pas trop mais je l'ai testé en local il fonctionne parfaitement

Fichier index.php
<?php
session_start();
require_once("includes/config.php");
?>
<!DOCTYPE html>
<html lang="en">
<head>
 
<?php require_once("includes/version.php");?> 
 
<title>GTA Flics & Criminels</title>
 
<link rel="stylesheet" href="./style.css" />
	
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="./js/superfish.js"></script>
<script type="text/javascript" src="./js/mobilyslider.js"></script>
<script type="text/javascript" src="./js/init.js"></script>
<script type="text/javascript" src="./js/jquery.fancybox-1.3.4.pack.js"></script>
<script type="text/javascript" src="./js/jquery.scrollTo.js"></script>
<script type="text/javascript" src="./js/scripts.js"></script>
<script src="http://www.radionomy.com/Scripts/PlayerExtSmall.js" type="text/javascript"></script>
<script src="http://www.radionomy.com/Scripts/PlayerExtCommon.js" type="text/javascript"></script>

<script language="javascript" type="text/javascript">
	initMooTools();
	initJQuery();
	var _radUID = '41834565-c9ee-4a4b-bebc-d7533d2985c8';
	var _isMute = true;
</script>

<script> 
    $(document).ready(function() { 
        $('ul#navigation').superfish(); 
		$('ul#top-navigation').superfish(); 
    }); 
</script>
	
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>

<body>

	<!-- BEGIN HEADER -->
	<?php require_once("includes/header.php");?>
	<!-- END HEADER -->
	
	<!-- BEGIN SLIDER -->
		<?php require_once("includes/slider.php");?>
	<!-- END SLIDER -->
		
	<!-- BEGIN MAIN WRAPPER -->
	<div id="main-wrapper">
	
		<!-- BEGIN MAIN -->
		<div id="main">
			
			<!-- BEGIN NEWS WRAPPER -->
			<div id="news-wrapper">
			<center><h3 class="section-title2">SA-MP : 213.246.38.140:3400 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="red">*</font> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEAMSPEAK : 213.246.38.140:9987</h3></center>
								
				<!-- BEGIN NEWS ITEM -->
				<div class="news-item">
				
					<div class="news-thumb-wrapper">
						<div class="shadows2">
							<object width="853" height="480"><param name="movie" value="http://www.youtube.com/v/2FI-NIDtlqk?version=3&hl=fr_FR&autoplay=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2FI-NIDtlqk?version=3&hl=fr_FR&autoplay=1" type="application/x-shockwave-flash" width="853" height="480" allowscriptaccess="always" allowfullscreen="true"></embed></object>
						</div>
					</div>
				</div>
				<!-- END NEWS ITEM -->
				
				<center><h3 class="section-title">Dernières news</h3></center>
				<?php
				$query = mysql_query("SELECT * FROM news");
				if(mysql_num_rows($query))
				{
					while($data = mysql_fetch_array($query))
					{?>
						<!-- BEGIN NEWS ITEM -->
						<div class="news-item">
						
							<div class="news-thumb-wrapper">
							
								<a href="./news-post.html"><img src="./images/newsthumb.jpg" alt="" /></a>
								
								<div class="news-arrows"></div>
								<h1><?php echo $data['Titre'];?></h1>
							
							</div>
							
							<div class="news-meta-wrapper">
								<span class="news-meta">Par <?php echo $data['Auteur'];?></span>
								<span class="news-cats">Le <?php echo $data['Date'];?></span>
							</div>
							
							<p><b>Bonsoir communauté de GTAFC, En ce dimanche soir nous annonçons l'ouverture officiel du nouveau site de GTA Flics & Criminels. Un nouveau design, de nouvelles fonctionnalités, optimisation de la sécurité, etc.. Le site sera amélioré au fil du temps avec des ajouts inédits. Nous vous remercions de soutenir GTAFC, bon jeu sur notre serveur.</b></p>
						
						</div>
						<!-- END NEWS ITEM -->
						<?php
					}
				}
				
				else
				{?>
						<!-- BEGIN NEWS ITEM -->
						<div class="news-item">
						
							<div class="news-thumb-wrapper">
							
								<a href="./news-post.html"><img src="./images/newsthumb.jpg" alt="" /></a>
								
								<div class="news-arrows"></div>
								<h1>Nouveau Site de GTAFC !</h1>
							
							</div>
							
							<div class="news-meta-wrapper">
								<span class="news-meta">Par Bryan & Vestax</span>
								<span class="news-cats"></span>
							</div>
							
							<p><h3 class="section-title3"><center>Bonsoir communauté de GTAFC, en ce dimanche soir nous annonçons l'ouverture officiel du nouveau site de GTA Flics & Criminels. Un nouveau design, de nouvelles fonctionnalités, optimisation de la sécurité, etc.. Le site sera amélioré au fil du temps avec des ajouts inédits. Nous vous remercions de soutenir GTAFC, bon jeu sur notre serveur.</center></h3></p>
						
						
						</div>
						<!-- END NEWS ITEM -->
						<?php
				}?>
			
			</div>
			<!-- END NEWS WRAPPER -->
			
		</div>
		<!-- END MAIN -->
		
		<!-- BEGIN SIDEBAR -->
				
			<?php require_once("includes/barre_droite.php");?>
				
	</div>
		<!-- END SIDEBAR -->

	<!-- END MAIN WRAPPER -->
	
	<!-- BEGIN FOOTER -->
		<?php require_once("includes/menu_bas.php");?>
	<!-- END FOOTER -->
	
	<!-- BEGIN FOOTER BOTTOM WRAPPER -->
		<?php require_once("includes/footer.php");?>
	<!-- END FOOTER BOTTOM WRAPPER -->
	
</body>
	
</html>

Eléphant du PHP | 79 Messages

07 juil. 2013, 14:27

Bonjour l'ami,

Pour tes connections aux bases de données utilise http://php.net/manual/fr/book.pdo.php (PDO) :

Exemple :

$dsn = "mysql:dbname=mabasededonnée;host=127.0.0.1;port=3306" ;

$db = new PDO( $dsn, 'root', null );

$sql = "SELECT * FROM matable" ;
$req = $db-> prepare( $sql );
$req-> execute();

$result = $req-> fetchAll( PDO::FETCH_ASSOC );

foreach( $result as $tuple )
{
   echo "{$tuple['id']} + {$tuple['monattribue']} + {$tuple['etc']}" ;
}

// Si tu utilises PDO::FETCH_OBJ à la place de PDO::FETCH_ASSOC, il te sera retourné un nouvel objet std qui possède des variables publique similaire à celle de tes attribues de ton tuple (ligne).

$result = $req-> fetchAll( PDO::FETCH_OBJ );

foreach( $result as $tuple )
{
    echo "{$tuple-> id} + {$tuple-> monattribue} + {$tuple-> etc}" ;
} 
Pour te simplifier la vie et progressé au niveau programmation, je t'invite fortement a réfléchir sur les éléments de ton site qui doivent s'inscrit dans le temps. Comme par exemple, je vois régulièrement NEW ITEM. Ces NEW items sont des éléments que tu va inscrit dans le temps, utilise donc la base de donnée pour les enregistrer dans un formulaire dans une page d'administration, et de les bouclés du coté visuel dans ta page clientèle.

je t'invite à aller voir ceci : php-oriente-objet/une-classe-vue-frame- ... 68544.html

C'est un classe de ma création qui te permettra de jouer avec des fichiers html très simplement.

Ciao

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 juil. 2013, 16:07

la ligne 75 c'est ça

Code : Tout sélectionner

if(mysql_num_rows($query))
Je ne m'y connais pas trop mais je l'ai testé en local il fonctionne parfaitement
Tu as surement testé en local mais si tu a cette erreur c'est que mysql_query retourne false et il n'y pas 3000 façon que cela arrive :
- requête foireuse (cela inclus le fait que la table "news" n'existe pas)
- pas de connexion sgbd

Comme déjà indiqué il te faut impérativement tester le retour de mysql_query sinon tu t'explose à cette erreur.

donc inclus les quelques lignes que je t'ai indiqué pour avoir un message d'erreur utilisable pour avancer.

quand à l'erreur du session_start() je penche pour l'utf-8 avec bom ?

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 3 Messages

07 juil. 2013, 17:29

merci pour tous vos renseignements c'est rentré dans l'ordre
C'étais une requête foireuse

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 juil. 2013, 17:44

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.
Il en faut peu pour être heureux ......