News box avec une image, un texte et un timing simples

ViPHP
AB
ViPHP | 5818 Messages

24 mai 2010, 12:18

J'ai ajouté un champ image dans ta requête puisque tu voulais associer une image au message. Si ce n'est plus le cas enlèves ce champ.

Pour les dix dernières news :
<?php

$sql = 'SELECT auteur, titre, date, texte_news, image FROM news ORDER BY date DESC LIMIT 10';  

// on lance la requête (mysql_query)  
$req = mysql_query($sql) or die(mysql_error()) ;

// On construit le tableau $tab_temoignages qui sera repris par le code javascript pour le défilement
$tab_temoignages = array();

$i = 0;
while($resultat = mysql_fetch_assoc($req)) 
{
$tab_temoignages[$i]['image'] = $resultat['image'];
$tab_temoignages[$i]['text'] = $resultat['texte_news'];
$i++;
}
Note : si tu as mis tes vrais mots de passe de connexion dans ton message précédent, c'est très imprudent :x

Eléphant du PHP | 82 Messages

24 mai 2010, 13:55

Quel c** je suis, ça m'a obligé à changer le mdp, j'ai pas fait gaffe à force de rester derrière un PC... merci en tout cas.

Je vais essayer de modifier tout ça, merci encore AB =)

Eléphant du PHP | 82 Messages

25 mai 2010, 09:23

Là je suis un peu perdu, j'ai beau essayer de lire et d'arranger le code mais... tu me fais un mélange de tab_temoignages et du système de news...

Faut pas oublier que je distingue 2 choses : les témoignages et les news.

Pour les news, j'ai le système que j'ai trouvé sur le net. Faut que j'arrive à les faire changer maintenant comme pour les témoignages
Pour les témoignages, j'ai utilisé ce que tu m'as donné. Le problème c'est qu'il faut rentrer les témoignages dans le fichier source, et je dois faire une insertion par formulaire, comme pour les news, on écrit le témoignage, "insérer", puis le témoignage est inséré dans la BDD et défile, comme les news (ça aurait été moi je m'en fiche, mais c'est celui pour qui je dois le faire...) sans oublier la conversion de caractères spéciaux.

Donc dans le deuxième post précédant celui-ci (page 2), c'est le code php de mes news, tu l'as réutilisé ici pour les témoignages...

Désolé ça fait pas très malin mais j'ai la tête comme une pastèque avec tout ce code je vais devenir fou #-o

ViPHP
AB
ViPHP | 5818 Messages

25 mai 2010, 18:12

Oui enfin c'était pour te donner, à partir d'une requête, le principe de création du tableau avec une structure adaptée pour l'utilisation de la fonction javascript "Message"

Après tu adaptes comme tu veux.

D'ailleurs tu pourrais aussi bien faire afficher les news et les témoignages dans une même page en utilisant la même fonction ex :
<?php

$sql = 'SELECT auteur, titre, date, texte_news, image FROM news ORDER BY date ASC LIMIT 20';  

// on lance la requête (mysql_query)  
$req = mysql_query($sql) or die(mysql_error()) ;

// On construit le tableau $tab_news qui sera repris par le code javascript pour le défilement
$tab_news = array();

$i = 0;
while($resultat = mysql_fetch_assoc($req))
{
$tab_news[$i]['image'] = $resultat['image'];
$tab_news[$i]['text'] = $resultat['texte_news'];
$i++;
}


$sql = 'SELECT auteur, titre, date, texte_tem, image FROM temoignage ORDER BY date DESC LIMIT 10';  

// on lance la requête (mysql_query)  
$req = mysql_query($sql) or die(mysql_error()) ;

// On construit le tableau $tab_tem qui sera repris par le code javascript pour le défilement
$tab_tem = array();

$i = 0;
while($resultat = mysql_fetch_assoc($req))
{
$tab_tem[$i]['image'] = $resultat['image'];
$tab_tem[$i]['text'] = $resultat['texte_tem'];
$i++;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>


<script type="text/javascript">

function Message(tab,id_message,id_photo)
{

        var id_mes = document.getElementById(id_message);
        var id_pho = document.getElementById(id_photo);

       
        var tab_news_js = tab;
       
        // nombre d'éléments du tableau
        var nb_tab_news_js = tab_news_js.length;
       

        // Si les éléments cibles existent et le tableau a plus d'un élément
        if (id_mes && id_pho && nb_tab_news_js > 1)
                {
                       
                        var Img_preload_src = new Array();
                       
                        // préchargement des images
                        for (var i=0; i < nb_tab_news_js; i++)
                                {
                                        if (typeof tab_news_js[i]['image'] != 'undefined')
                                        {
                                                Img_preload_src[tab_news_js[i]['image']] = new Image();
                                                Img_preload_src[tab_news_js[i]['image']].src = tab_news_js[i]['image'];
                                        }
                                }
                               
                       
                        function Boucle(inc)
                                {
                                        //je défini l'indice en focntion de la position dans le tableau
                                        var inc = inc < nb_tab_news_js ? inc : 0;
                                       
                                        // Je nettoie l'élément cible du texte
                                        var noeuds = id_mes.childNodes.length;
                                        for (var i = 0; i < noeuds; i++)          
                                                {                                  
                                                        id_mes.removeChild(id_mes.firstChild);
                                                }
                               
                                                                               
                                        // Je prend l'adresse de la photo enregistrée dans le tableau; il faudrait remplacer adresse_image_vide.jpg par l'adresse d'une imaage transparente (au cas ou l'image ne serait pas renseignée dans le tableau php)
                                        var image = typeof tab_news_js[inc]['image'] != 'undefined' ? tab_news_js[inc]['image'] : 'adresse_image_vide.jpg' ;
                                       
                                        // Je cherche le texte enregistré dans le tableau
                                        var texte = typeof tab_news_js[inc]['text'] != 'undefined' ? tab_news_js[inc]['text'] : '';
                                        // je crée un noeud texte avec le texte  récupéré
                                        texte = document.createTextNode(texte);
       
                                        // J'insère la photo dans l'élément cible
                                        id_pho.src = image;
                                       
                                        // J'insère le noeud texte dans l'élément cible
                                        id_mes.appendChild(texte);
                                       
                                        //j'incrémente
                                        inc++;
                                       
                                        //J'appelle la fonction Boucle toutes les cinq secondes
                                        setTimeout(function(){Boucle(inc)},'5000');  
       
                                }
                       

                Boucle(0);
               
                }                      
}


// Fonction de chargement onload
function AddLoad_JS(func) {

                if (window.addEventListener)
                {
                        window.addEventListener("load", func, false);
                }
       else if (document.addEventListener)
                {
                        document.addEventListener("load", func, false);
                }
       else if (window.attachEvent)
                {
                        window.attachEvent("onload", func);
                }
}


// Chargement onload de la fonction Message avec ses paramètres tab_news, id news_texte, et id news_photo
AddLoad_JS(function(){Message(<?php  echo (isset($tab_news) && is_array($tab_news))? json_encode($tab_news) : 'new Array' ?>, 'news_texte', 'news_photo')});

// Chargement onload de la fonction Message avec ses paramètres tab_tem, id tem_texte, et id tem_photo
AddLoad_JS(function(){Message(<?php  echo (isset($tab_tem) && is_array($tab_tem))? json_encode($tab_tem) : 'new Array' ?>, 'tem_texte', 'tem_photo')});

</script>
<style type="text/css">
.conteneur td {
        width : 200px;
}
.conteneur {
        height : 100px;
        width : 400px;
        border : 3px solid black;
}
</style>
</head>
<body>

<table class = "conteneur">
<tr>
<td id = "news_texte">

      <?php if (isset($tab_news[0]['text'])) echo $tab_news[0]['text'];?>

</td>

<td>

        <img id = "news_photo" src="<?php if (isset($tab_news[0]['image'])) echo $tab_news[0]['image']; else echo 'adresse_image_vide.jpg'?>" />
   
</td>

</tr>
</table>


<table class = "conteneur">
<tr>
<td id = "tem_texte">

      <?php if (isset($tab_tem[0]['text'])) echo $tab_tem[0]['text'];?>

</td>

<td>

        <img id = "tem_photo" src="<?php if (isset($tab_tem[0]['image'])) echo $tab_tem[0]['image']; else echo 'adresse_image_vide.jpg'?>" />
   
</td>

</tr>
</table>

</body>
</html>

Eléphant du PHP | 82 Messages

28 mai 2010, 13:39

Petit up et récapitulatif : tout est presque ok.

Il manque l'affichage des news et des témoignages sur la page d'accueil.

J'ai remis des variables à jour car elles différaient parfois. Voici mon dernier code :
<?php

// On se connecte à notre base  
$base = mysql_connect ('***', '***', '***');  
mysql_select_db('***', $base);

// Lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)  
$sql = 'SELECT auteur, titre, date, image_news, texte_news FROM news ORDER BY date DESC LIMIT 10';  

// On lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  

// On construit le tableau $tab_news qui sera repris par le code javascript pour le défilement
$tab_news = array();

$i = 0;
while($resultat = mysql_fetch_assoc($req))
{
$tab_news[$i]['image_news'] = $resultat['image_news'];
$tab_news[$i]['texte_news'] = $resultat['texte_news'];
$i++;
}


$sql = 'SELECT image_tems, texte_tems FROM temoignages ORDER BY date DESC';  

// On lance la requête (mysql_query)  
$req = mysql_query($sql) or die(mysql_error()) ;

// On construit le tableau $tab_tems qui sera repris par le code javascript pour le défilement
$tab_tems = array();

$i = 0;
while($resultat = mysql_fetch_assoc($req))
{
$tab_tems[$i]['image_tems'] = $resultat['image_tems'];
$tab_tems[$i]['texte_tems'] = $resultat['texte_tems'];
$i++;
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>


<script type="text/javascript">

function Message(tab,id_message,id_photo)
{

        var id_mes = document.getElementById(id_message);
        var id_pho = document.getElementById(id_photo);


        var tab_news_js = tab;

        // Nombre d'éléments du tableau
        var nb_tab_news_js = tab_news_js.length;


        // Si les éléments cibles existent et le tableau a plus d'un élément
        if (id_mes && id_pho && nb_tab_news_js > 1)
                {

                        var Img_preload_src = new Array();

                        // Préchargement des images
                        for (var i=0; i < nb_tab_news_js; i++)
                                {
                                        if (typeof tab_news_js[i]['image'] != 'undefined')
                                        {
                                                Img_preload_src[tab_news_js[i]['image']] = new Image();
                                                Img_preload_src[tab_news_js[i]['image']].src = tab_news_js[i]['image'];
                                        }
                                }


                        function Boucle(inc)
                                {
                                        // Je définie l'indice en focntion de la position dans le tableau
                                        var inc = inc < nb_tab_news_js ? inc : 0;

                                        // Je nettoie l'élément cible du texte
                                        var noeuds = id_mes.childNodes.length;
                                        for (var i = 0; i < noeuds; i++)          
                                                {                                  
                                                        id_mes.removeChild(id_mes.firstChild);
                                                }


                                        // Je prend l'adresse de la photo enregistrée dans le tableau; au cas où l'image ne serait pas renseignée dans le tableau php, image "transparente" (empty)
                                        var image = typeof tab_news_js[inc]['image'] != 'undefined' ? tab_news_js[inc]['image'] : 'sites/all/images/cube1.jpg' ;
                                       
                                        // Je cherche le texte enregistré dans le tableau
                                        var texte = typeof tab_news_js[inc]['texte_news'] != 'undefined' ? tab_news_js[inc]['texte_news'] : '';
                                        // Je crée un noeud texte avec le texte récupéré
                                        texte = document.createTextNode(texte);
       
                                        // J'insère la photo dans l'élément cible
                                        id_pho.src = image;
                                       
                                        // J'insère le noeud texte dans l'élément cible
                                        id_mes.appendChild(texte);
                                       
                                        // J'incrémente
                                        inc++;
                                       
                                        // J'appelle la fonction Boucle toutes les sept secondes
                                        setTimeout(function(){Boucle(inc)},'7000');  
       
                                }
                       

                Boucle(0);
               
                }                      
}


// Fonction de chargement onload
function AddLoad_JS(func) {

                if (window.addEventListener)
                {
                        window.addEventListener("load", func, false);
                }
       else if (document.addEventListener)
                {
                        document.addEventListener("load", func, false);
                }
       else if (window.attachEvent)
                {
                        window.attachEvent("onload", func);
                }
}


// Chargement onload de la fonction Message avec ses paramètres tab_news, id texte_news, et id image_news
AddLoad_JS(function(){Message(<?php  echo (isset($tab_news) && is_array($tab_news))? json_encode($tab_news) : 'new Array' ?>, 'texte_news', 'image_news')});

// Chargement onload de la fonction Message avec ses paramètres tab_tems, id texte_tem, et id image_tems
AddLoad_JS(function(){Message(<?php  echo (isset($tab_tems) && is_array($tab_tems))? json_encode($tab_tems) : 'new Array' ?>, 'texte_tems', 'image_tems')});

</script>

<style type="text/css">
.conteneur td {
	padding : 10px;
}
.conteneur {
	height : 175px;
	width : 100%;
	border : 0px solid black;
}
</style>

</head>

<body>

<table class = "conteneur">
	<tr>
		<td>
			<img id = "image_news" src="<?php if (isset($tab_news[0]['image'])) echo $tab_news[0]['image']; else echo 'sites/all/images/cube1.jpg'?>" />
		</td>
		<td id = "texte_news">
			<?php if (isset($tab_news[0]['texte_news'])) echo $tab_news[0]['texte_news'];?>
		</td>
	</tr>
</table>

<table class = "conteneur">
	<tr>
		<td>
			<img id = "image_tems" src="<?php if (isset($tab_tems[0]['image'])) echo $tab_tems[0]['image']; else echo 'sites/all/images/cube2.jpg'?>" />
		</td>
		<td id = "texte_tems">
			<?php if (isset($tab_tems[0]['texte_tems'])) echo $tab_tems[0]['texte_tems'];?>
		</td>
	</tr>
</table>

</body>
</html>
Quant au formulaire :
<?php

	// on teste si le formulaire a été validé
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
   // on se connecte à notre base
	$base = mysql_connect ('***', '***', '***');
	mysql_select_db('***', $base);

   // on teste la déclaration de nos variables
   if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['texte_news'])) {
      $erreur = 'Les variables nécessaires au script ne sont pas définies.';
   }
   else {
      if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['texte_news'])) {
         $erreur = 'Au moins un des champs est vide.';
      }
      // si tout est bon, on peut commencer l'insertion dans la base
      else {
         // lancement de la requête d'insertion
         $sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string($_POST['image_news']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['texte_news']).'")';

         // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
         mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

         // on ferme la connexion à la base de données
         mysql_close();

         // on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez placé cette page dans un répertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'accès afin de retomber sur la page d'accueil du site. 
         header('Location: index.php');
         // on termine le script courant
         exit();
      }
   }
}

?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_news.php" method="post">
	<table>
		<tr>
			<td>
				<span class="gras">Auteur :</span>
			</td>
			<td>
				<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Titre :</span>
			</td>
			<td>
				<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Image</span>
				<input type="text" style="display:none" name="nbr_photo" value="0" id="nbr_photo" />
			</td>
			<td>
				<input type="file" name="image_news" id="image_news" value="image_news" />
			</td>	
		</tr>
		<tr>
			<td>
				<span class="gras">News :</span>
			</td>
			<td>
				<textarea name="texte_news" cols="50" rows="10"><?php if (isset($_POST['texte_news'])) echo htmlentities(trim($_POST['texte_news'])); ?></textarea>
			</td>
		</tr>
		<tr>
		<td>
			<td align="right">
				<input type="submit" name="go" value="Poster la news">
			</td>
		</tr>
	</table>
</form>
<?php
// on affiche les erreurs éventuelles  
if (isset($erreur)) echo '<br /><br />',$erreur;  
?>
</body>
</html>
Mon calvaire est presque fini, HELP please #-o

Rappel du site : http://www.i-mediaservices.com

Merci =)

ViPHP
AB
ViPHP | 5818 Messages

28 mai 2010, 20:09

Si tu veux faire afficher tes news normalement (sans passage par javascript) le code pour faire afficher tes news est plutôt de ce genre

Partie php
$sql = 'SELECT auteur, titre, date, image_news, texte_news FROM news ORDER BY date ASC LIMIT 10';  

// On lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
$req_news = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
Et dans ton code html
<table>
<tr>
<?php
while($resultat = mysql_fetch_assoc($req_news))
{
echo '<td>'.htmlspecialchars($resultat['auteur']).'</td>';

echo '<td>'.htmlspecialchars($resultat['titre']).'</td>';

echo '<td>'.htmlspecialchars($resultat['date']).'</td>';

//etc.
}?>
</tr>
</table>
Et comme tu ne l'utilise plus il faut enlever la ligne javascript AddLoad_JS qui servait pour charger tes news dans la fonction javascript.

Pour faire ses débuts et comprendre comment lister des requêtes il y a http://www.phpdebutant.org/ (colonne de droite).

Eléphant du PHP | 82 Messages

31 mai 2010, 11:05

Mais attends j'ai pas compris, ton code sert toujours à afficher les news une par une avec un timer ou pas ?

Edit : j'ai essayé, mais ça marche pas. Voici mon code actuellement :
<?php

// On se connecte à notre base  
$base = mysql_connect ('***', '***', '***');  
mysql_select_db('***', $base);

// Lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)  
$sql = 'SELECT auteur, titre, date, image_news, texte_news FROM news ORDER BY date ASC LIMIT 10';  

// On lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  

// On construit le tableau $tab_news qui sera repris par le code javascript pour le défilement
$tab_news = array();

$i = 0;
while($resultat = mysql_fetch_assoc($req))
{
$tab_news[$i]['image_news'] = $resultat['image_news'];
$tab_news[$i]['texte_news'] = $resultat['texte_news'];
$i++;
}


$sql = 'SELECT image_tems, texte_tems FROM temoignages ORDER BY date ASC';  

// On lance la requête (mysql_query)  
$req = mysql_query($sql) or die(mysql_error()) ;

// On construit le tableau $tab_tems qui sera repris par le code javascript pour le défilement
$tab_tems = array();

$i = 0;
while($resultat = mysql_fetch_assoc($req))
{
$tab_tems[$i]['image_tems'] = $resultat['image_tems'];
$tab_tems[$i]['texte_tems'] = $resultat['texte_tems'];
$i++;
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>


<script type="text/javascript">

function Message(tab,id_message,id_photo)
{

        var id_mes = document.getElementById(id_message);
        var id_pho = document.getElementById(id_photo);


        var tab_news_js = tab;

        // Nombre d'éléments du tableau
        var nb_tab_news_js = tab_news_js.length;


        // Si les éléments cibles existent et le tableau a plus d'un élément
        if (id_mes && id_pho && nb_tab_news_js > 1)
                {

                        var Img_preload_src = new Array();

                        // Préchargement des images
                        for (var i=0; i < nb_tab_news_js; i++)
                                {
                                        if (typeof tab_news_js[i]['image'] != 'undefined')
                                        {
                                                Img_preload_src[tab_news_js[i]['image']] = new Image();
                                                Img_preload_src[tab_news_js[i]['image']].src = tab_news_js[i]['image'];
                                        }
                                }


                        function Boucle(inc)
                                {
                                        // Je définie l'indice en focntion de la position dans le tableau
                                        var inc = inc < nb_tab_news_js ? inc : 0;

                                        // Je nettoie l'élément cible du texte
                                        var noeuds = id_mes.childNodes.length;
                                        for (var i = 0; i < noeuds; i++)          
                                                {                                  
                                                        id_mes.removeChild(id_mes.firstChild);
                                                }


                                        // Je prend l'adresse de la photo enregistrée dans le tableau; au cas où l'image ne serait pas renseignée dans le tableau php, image "transparente" (empty)
                                        var image = typeof tab_news_js[inc]['image'] != 'undefined' ? tab_news_js[inc]['image'] : 'sites/all/images/cube1.jpg' ;
                                       
                                        // Je cherche le texte enregistré dans le tableau
                                        var texte = typeof tab_news_js[inc]['texte_news'] != 'undefined' ? tab_news_js[inc]['texte_news'] : '';
                                        // Je crée un noeud texte avec le texte récupéré
                                        texte = document.createTextNode(texte);
       
                                        // J'insère la photo dans l'élément cible
                                        id_pho.src = image;
                                       
                                        // J'insère le noeud texte dans l'élément cible
                                        id_mes.appendChild(texte);
                                       
                                        // J'incrémente
                                        inc++;
                                       
                                        // J'appelle la fonction Boucle toutes les sept secondes
                                        setTimeout(function(){Boucle(inc)},'7000');  
       
                                }
                       

                Boucle(0);
               
                }                      
}
</script>

<style type="text/css">
.conteneur td {
	padding : 10px;
}
.conteneur {
	height : 175px;
	width : 100%;
	border : 0px solid black;
}
</style>

</head>

<body>

<table class = "conteneur">
	<tr>
		<?php
			while($resultat = mysql_fetch_assoc($req))
			{
				echo '<td>'.htmlspecialchars($resultat['image_news']).'</td>';
				echo '<td>'.htmlspecialchars($resultat['auteur']).'</td>';
				echo '<td>'.htmlspecialchars($resultat['titre']).'</td>';
				echo '<td>'.htmlspecialchars($resultat['date']).'</td>';
				echo '<td>'.htmlspecialchars($resultat['texte_news']).'</td>';
			}
		?>
		<td>
			<img id = "image_news" src="<?php if (isset($tab_news[0]['image_news'])) echo $tab_news[0]['image_news']; else echo 'sites/all/images/cube1.jpg'?>" />
		</td>
		<td id = "texte_news">
			<?php if (isset($tab_news[0]['texte_news'])) echo $tab_news[0]['texte_news'];?>
		</td>
	</tr>
</table>

<table class = "conteneur">
	<tr>
		<td>
			<img id = "image_tems" src="<?php if (isset($tab_tems[0]['image_tems'])) echo $tab_tems[0]['image_tems']; else echo 'sites/all/images/cube2.jpg'?>" />
		</td>
		<td id = "texte_tems">
			<?php if (isset($tab_tems[0]['texte_tems'])) echo $tab_tems[0]['texte_tems'];?>
		</td>
	</tr>
</table>

</body>
</html>
Dans le BODY, tu vois la boucle while avant le code d'avant, mais j'utilise soit l'un soit l'autre, pas les deux, j'ai essayé juste la boucle, rien ne s'affichait, et il y avait une erreur correspondant à mysql_fetch_assoc, si je mets le code du dessous, il y a l'image par défaut qui s'affiche seulement.

ViPHP
AB
ViPHP | 5818 Messages

31 mai 2010, 17:27

Mais attends j'ai pas compris, ton code sert toujours à afficher les news une par une avec un timer ou pas ?
Le dernier que j'ai donné c'est par 10 et évidemment sans passer par javascript et donc sans timer (je croyais que tu voulais ce comportement pour les news)

Et l'avant dernier c'était les news et les témoignages en passant par javascript et donc le timer qui permettait de les afficher successivement une par une sans rafraichissement de la page.

Avec ces deux exemples tu peux donc choisir l'un ou l'autre et même faire les deux en même temps.

Eléphant du PHP | 82 Messages

04 juin 2010, 00:31

J'ai abandonné tout ce qui touche au javascript, j'en ai marre je suis trop newbie en code j'ai décidé de faire simple car en plus je suis en retard dans ce que je dois finir.
Maintenant mon but est de faire un formulaire qui permette d'entrer une news comprenant un titre, un auteur, une image et un corps. La page d'accueil c'est ok, je fais une simple requête pour n'afficher que la dernière news parue, au lieu de faire défiler les X dernières.

Sauf que voilà, je suis confronté à des problèmes.

j'ai essayé avec ce tuto : http://antoine-herault.developpez.com/t ... hp/upload/

Voici mon code :
<?php

$dossier = 'sites/all/images';
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 2048;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.'); 
//D&eacute;but des v&eacute;rifications de s&eacute;curit&eacute;...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop lourd';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇ&egrave;&eacute;ÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåç&egrave;&eacute;êëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['image_news']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionn&eacute;
     {
          echo 'Upload effectu&eacute; avec succ&egrave;s !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo '&Eacute;chec de l\'upload !';
     }
}
else
{
     echo $erreur;
}

// MOVE UPLOADED FILE
if ((isset($_FILES['image_news']['fichier'])&&($_FILES['image_news']['error'] == UPLOAD_ERR_OK))) {
$chemin_destination = 'sites/all/images';
move_uploaded_file($_FILES['image_news']['tmp_name'], $chemin_destination.$_FILES['image_news']['name']);
}


// on teste si le formulaire a &eacute;t&eacute; valid&eacute;
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
// on se connecte à notre base
$base = mysql_connect ('***', '***', '***');
mysql_select_db('***', $base);

// on teste la d&eacute;claration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['texte_news'])) {
	$erreur = 'Les variables n&eacute;cessaires au script ne sont pas d&eacute;finies.';
}
else {
	if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['texte_news'])) {
		$erreur = 'Au moins un des champs est vide.';
	}
	// si tout est bon, on peut commencer l'insertion dans la base
	else {
		// lancement de la requête d'insertion
		$sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string($_POST['image_news']).'", "'.date("d-m-Y H:i:s").'", "'.mysql_escape_string($_POST['texte_news']).'")';
		// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
		// on ferme la connexion à la base de donn&eacute;es
		mysql_close();
		/* on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez plac&eacute; cette page dans un r&eacute;pertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'acc&egrave;s afin de retomber sur la page d'accueil du site. 
		header('Location: index.php'); */
		// on termine le script courant
		exit();
		}
	}
}

?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les donn&eacute;es -->
<form method="post" action="insert_news.php" enctype="multipart/form-data">
	<table>
		<tr>
			<td>
				<span class="gras">Auteur :</span>
			</td>
			<td>
				<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Titre :</span>
			</td>
			<td>
				<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Image</span>
				<input type="text" style="display:none" name="nbr_photo" value="0" id="nbr_photo" />
			</td>
			<td>
				<input type=hidden name=MAX_FILE_SIZE  value=2048>
				<input type="file" name="image_news" id="image_news" value="image_news" />
			</td>	
		</tr>
		<tr>
			<td>
				<span class="gras">News :</span>
			</td>
			<td>
				<textarea name="texte_news" cols="50" rows="10"><?php if (isset($_POST['texte_news'])) echo htmlentities(trim($_POST['texte_news'])); ?></textarea>
			</td>
		</tr>
		<tr>
		<td>
			<td align="right">
				<input type="submit" name="go" value="Poster la news">
			</td>
		</tr>
	</table>
</form>
<?php
// on affiche les erreurs &eacute;ventuelles  
if (isset($erreur)) echo '<br /><br />',$erreur;  
?>
</body>
</html>
ça renvoie l'erreur... quelqu'un voit pourquoi ?

Eléphant du PHP | 428 Messages

04 juin 2010, 00:38

Quel est l'erreur ????

Eléphant du PHP | 82 Messages

04 juin 2010, 10:20

Echec de l'upload

ViPHP
ViPHP | 5462 Messages

07 juin 2010, 10:02

Echec de l'upload
fais auy debut de ton code
print_r($_FILES); 
t'as la correspondance des erreurs ici : http://fr.php.net/manual/fr/features.fi ... errors.php

Eléphant du PHP | 82 Messages

07 juin 2010, 10:49

ça affiche ça :

Array ( [image_news] => Array ( [name] => cube2.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) ) Échec de l'upload !

ViPHP
ViPHP | 5462 Messages

07 juin 2010, 10:57

ça affiche ça :

Array ( [image_news] => Array ( [name] => cube2.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) ) Échec de l'upload !
erreur 2 :
Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.

Eléphant du PHP | 82 Messages

07 juin 2010, 11:07

Doit y avoir un autre problème... j'ai mis : $taille_maxi = 20480000; exprès pour tester... le fichier c'est une toute petite image jpeg du genre 50x50

Doit y avoir une autre erreur dans le code non ?