header qui pose problème

Eléphant du PHP | 70 Messages

28 févr. 2012, 22:51

Bonsoir à tous

Je suis face à un nouveau problème très étrange. L'effacement a bien lieu, le code fonctionne mais je pense que le problème vient du header.
J'ajoute que j'utilise un code "identique" pour une autre page et celui-ci ne pose aucun problème bizarrement.


message erreur:

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\EasyPHP-5.3.8.0\www\cms_garage\admin\_ajout_marques_modeles.php:122) in C:\Program Files\EasyPHP-5.3.8.0\www\cms_garage\admin\_listing_marques.php on line 31

Voici les pages en question:

Page _listing_marques.php
<?php
	//connection à la base de données
	require_once '../_inc/_connexion.php';
	if (isset($_GET['id_marque']))
		{
		// effacement de la marque et du modele
		$sql_delete = ('DELETE FROM marques, modeles 
						
						USING marques, modeles
						
						WHERE marques.id = '.$_GET['id_marque'].'
						
						AND id_marque = '.$_GET['id_marque'].'
						
						');
		$sql_suppr_marque = mysql_query($sql_delete) or die('Erreur SQL !<br />'.$sql_delete.'<br />'.mysql_error());
		
		echo '<div id="avertissement">Marques supprimer</div>';
		header('refresh:3;url=_gestion_marque.php');
		}	
	elseif (isset($_GET['id_modele']))
		{
		// effacement du modele
		$sql_delete = ('DELETE FROM modeles 
												
						WHERE modeles.id = '.$_GET['id_modele'].'
						');
		$sql_suppr_marque = mysql_query($sql_delete) or die('Erreur SQL !<br />'.$sql_delete.'<br />'.mysql_error());
		
		echo '<div id="avertissement">Modeles supprimer</div>';
		header('refresh:3;url=_gestion_marque.php');
		}	
	else
		{
		
		if (isset($_GET['tri']))
			{
			// listing des marques et modeles da la base de données
			$req_marque = ('SELECT R.id AS id_marque, SR.id AS id_modele, R.marque, SR.modele
							FROM marques AS R
							INNER JOIN modeles AS SR ON R.id = SR.id_marque
							WHERE marque LIKE "'.$_GET['tri'].'%"
							ORDER BY marque ASC ');
			
			$resu_marque = mysql_query($req_marque) or die("raté") ;
			$oldrub = "" ;
			
			echo '<p style="text-align:center;">Listes des marques qui commence par la lettre '.$_GET['tri'].'</p></br>';
			$i=0;
				while ($ligne_marque = mysql_fetch_array($resu_marque) ) 
                                {
                                if($i!=0 && $ligne_marque['marque'] != $oldrub) echo'</ul>';
                                if ($ligne_marque['marque'] != $oldrub) echo '<h4><a href="_gestion_marque.php?id_marque='.$ligne_marque['id_marque'].'">'.$ligne_marque['marque'].'</a></br></h4><ul class="option">' ;
                                echo '<li class="marque"><a href="_gestion_marque.php?id_modele='.$ligne_marque['id_modele'].'">'.$ligne_marque['modele'].'</a></li>' ;
                                $oldrub = $ligne_marque['marque'] ;
                                $i++;
                                }
                                echo '</ul>';
			}
		else
			{	
			$recherche_a = "A";
				// listing des marques et modeles da la base de données
			$req_marque = ('SELECT R.id AS id_marque, SR.id AS id_modele, R.marque, SR.modele
							FROM marques AS R
							INNER JOIN modeles AS SR ON R.id = SR.id_marque
							WHERE marque LIKE "'.$recherche_a.'%"
							ORDER BY marque ASC ');
			
			$resu_marque = mysql_query($req_marque) or die("raté") ;
			$oldrub = "" ;
			
			echo '<p style="text-align:center;">Listes des marques qui commence par la lettre '.$recherche_a.'</p></br>';
			$i=0;
				while ($ligne_marque = mysql_fetch_array($resu_marque) ) 
                                {
                                if($i!=0 && $ligne_marque['marque'] != $oldrub) echo'</ul>';
                                if ($ligne_marque['marque'] != $oldrub) echo '<h4><a href="_gestion_marque.php?id_marque='.$ligne_marque['id_marque'].'">'.$ligne_marque['marque'].'</a></br></h4><ul class="option">' ;
                                echo '<li class="marque"><a href="_gestion_marque.php?id_modele='.$ligne_marque['id_modele'].'">'.$ligne_marque['modele'].'</a></li>' ;
                                $oldrub = $ligne_marque['marque'] ;
                                $i++;
                                }
                                echo '</ul>';
			}
		}
?>

Page _ajout_marques_modeles.php
<?php
	//connection à la base de données
	require_once '../_inc/_connexion.php';
	
	$sql_recup_marque = ("SELECT * FROM marques ORDER BY marque ASC");
	$sql_query_marque = mysql_query($sql_recup_marque) or die('Erreur SQL !<br />'.$sql_recup_cat.'<br />'.mysql_error());
	
	if (isset($_POST['marque']) && isset($_FILES['avatar']))
		{
		$avatar = $_FILES['avatar'];
		$avatar_name = $avatar['name'];
		$ext = strtolower(substr(strrchr($avatar_name,'.'),1));
		$ext_aut = array('jpg','jpeg','png','gif');
									
		function check_extension($ext,$ext_aut)
			{
				if(in_array($ext,$ext_aut))
					{
					return true;
					}
			}
									
		$valid = (!check_extension($ext,$ext_aut)) ? false : true;
		$erreur = (!check_extension($ext,$ext_aut)) ? 'Veuillez charger une image' : '';
									
		if($valid)
			{
			$max_size = 20000000000;
			if($avatar['size']>$max_size)
				{
				$valid = false;
				$erreur = 'Fichier trop gros';
				}
			}
									
			if($valid)
				{
				if($avatar['error']>0)
					{
					$valid = false;
					$erreur = 'Erreur lors du transfert';
					}
				}
									
			if($valid)
				{
				$path_to_image = '../img_logos/';
				$path_to_min = '../img_logos/min/';
										
				$filename = sha1(uniqid($avatar_name));
										
				$source = $avatar['tmp_name'];
				$target = $path_to_image . $filename. '.'. $ext;
										
				move_uploaded_file($source,$target);
										
				if($ext == 'jpg' || $ext == 'jpeg') {$im = imagecreatefromjpeg($path_to_image.$filename.'.'.$ext);}
				if($ext == 'png') {$im = imagecreatefrompng($path_to_image.$filename.'.'.$ext);}
				if($ext == 'gif') { $im = imagecreatefromgif($path_to_image.$filename.'.'.$ext);}
										
				$ox = imagesx($im);
				$oy = imagesy($im);
										
				$nx = 400;
				$ny = floor($oy *($nx/$ox));
										
				$nm = imagecreatetruecolor($nx,$ny);
										
				imagecopyresized($nm, $im, 0,0,0,0, $nx,$ny,$ox,$oy);
										
				imagejpeg($nm, $path_to_min.$filename.'.'.$ext);
										
				$nom_image = $filename.'.'.$ext;
				
				//connection à la base de données
				require_once '../_inc/_connexion5.php';
										
				$success = 'Photo ajouter avec succès';
				$req_ajout_marque = ('INSERT INTO marques (
								`id` ,
								`marque` ,
								`img_marque` 
								)
								VALUES (NULL , "'.$_POST['marque'].'", "'.$nom_image.'")');
				mysql_query($req_ajout_marque) or die('Erreur SQL !'.$req_ajout_marque.'<br>'.mysql_error());
				
				$resultat_sql = "Marque ajouter avec succès";
				}
		}
	elseif (isset($_POST['modele']) && isset($_POST['marque']))
		{
		$req_ajout_option = ('INSERT INTO modeles (
						`id` ,
						`id_marque` ,
						`rappel_marque` ,
						`modele`						
						)
						VALUES (NULL , "'.$_POST['marque'].'" , NULL , "'.$_POST['modele'].'")');
		mysql_query($req_ajout_option) or die('Erreur SQL !'.$req_ajout_option.'<br>'.mysql_error());
		}
	else
		{
		$erreur = "Formulaire incomplet";
		}

?>

<div id="aj_marques">
	<form id="ajout_marques" name="ajout_marques" method="post" enctype="multipart/form-data"  action="_gestion_marque.php">
		Marques du véhicule: <input type="text" name="marque" id="marque">
		Charger un logo :<input type="file" name="avatar" />
		<input type="submit" name="button" id="button" value="Ajouter">
	</form>
</div>
<div id="aj_modeles">
	<form id="ajout_modeles" name="ajout_modeles" method="post" action="_gestion_marque.php">
		<select name="marque">
		<?php
		
		while ($row_marque = mysql_fetch_array($sql_query_marque))
										{
										echo '<option id="marque" value="'.$row_marque['id'].'">'.$row_marque['marque'].'</option>';
										}
										
		?>
		</select>
		Modèle du véhicule: <input type="text" name="modele" id="modele">
		<input type="submit" name="button" id="button" value="ajouter">
	</form>

</div>

Eléphanteau du PHP | 10 Messages

28 févr. 2012, 23:02

Bonsoir,

RTFM :D
http://php.net/manual/fr/function.header.php
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.

Eléphant du PHP | 70 Messages

29 févr. 2012, 09:01

Bonsoir,

RTFM :D
http://php.net/manual/fr/function.header.php
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.

D'accord mais que veulent t'ils dire par espace ou ligne vide ? je comprend pas car j'ai une autre page identique qui traite une autre table, celle-ci fonctionne parfaitement.

ViPHP
xTG
ViPHP | 7331 Messages

29 févr. 2012, 09:33

Tu n'as semble-t-il pas compris.
Par exemple ceci dans ton code :
echo '<div id="avertissement">Marques supprimer</div>';
header('refresh:3;url=_gestion_marque.php');
est incorrect, tu envoies quelque chose en sortie avant de faire un header.

Eléphant du PHP | 70 Messages

29 févr. 2012, 14:29

Oui ok je comprend le principe, mais alors comment je peux mettre une redirection " header('refresh:3;url=_gestion_marque.php'); " à la fin de ma condition sans avoir le message d'erreur ?

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

29 févr. 2012, 14:59

a tu essayé d'inverser les deux lignes ? ^^
Il en faut peu pour être heureux ......

Eléphant du PHP | 70 Messages

29 févr. 2012, 15:12

oui aucun changement ...

ViPHP
xTG
ViPHP | 7331 Messages

29 févr. 2012, 15:31

C'est que tu as un autre affichage.
Et le message d'erreur te l'indique : C:\Program Files\EasyPHP-5.3.8.0\www\cms_garage\admin\_ajout_marques_modeles.php à la ligne 122.