Petit soucis "Comment faire une messageri interne" ...

Répondre
vipdev
le 28/09/2011 à 18:10
vipdev
Bonjour,

J'ai suivis le tutoriel a la lettre ! Et j'ai bien pris soins de modifier, dans la page membre.php j'ai tout bien mis et tout, tout fonctione, mais il y a un message d'erreur sur ma page =>

( ! ) Notice: Undefined index: id in XXXXXXX\membre.php on line 71
Call Stack
# Time Memory Function Location
1 0.0005 705480 {main}( ) ..\membre.php:0
Vous n'avez aucun message.


Et a cette ligne (71) il y a ce code =>
$sql = 'SELECT titre, date, account.username as expediteur, messages.id as id_message FROM messages, account WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=account.id ORDER BY date DESC';


account étant la table où sont ranger les comptes et id la colone... Je ne comprend pas...
Welcome to St tropez !
moogli
le 29/09/2011 à 00:44
moogli
salut,

Tu ne doit pas avoir mis 'id' en session d'ou le message d'erreur :)

celui ci est indiqué à la connexion :)

@+
Il en faut peu pour être heureux !!!!!
vipdev
le 29/09/2011 à 12:10
vipdev
Et comment mettre le 'id' en session ?
Welcome to St tropez !
vipdev
le 29/09/2011 à 13:15
vipdev
C'est bon j'ai trouver, tout marche bien enfin...
On peux envoyer des messages, ça marche, mais l'autre compte ne les recois pas... j'ai était voir dans la base de donnée, l'id de l'expediteur est 0 hors aucun compte a l'id 0 ! Et je l'ai changer avec l'id de mon compte... Rien a faire, j'ai beau actualiser, le compte qui devrais recevoir le message ne recois rien... "Vous n'avez aucun message. "
Welcome to St tropez !
moogli
le 30/09/2011 à 23:02
moogli
affiche ta requête avant insertion :)

fait voir le code (dans les balises code ou mieux sur le wall)

@+
Il en faut peu pour être heureux !!!!!
vipdev
le 02/10/2011 à 19:23
vipdev
Bonsoir,

J'ai retélécharger un nouveau code.
Celui-ci => http://damienalexandre.fr/share/upload-image.txt

Et j'ai modifier comme ceci =>
<?php

function get_extension($nom) {
$nom = explode(".", $nom);
$nb = count($nom);
return strtolower($nom[$nb-1]);
}

$extensions_ok = array('flv', 'mp4');
// MimeType autorisé
/* 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF (Ordre des octets Intel), 8 = TIFF (Ordre des octets Motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF */
$typeimages_ok = array(2);

$taille_ko = 5120; // Taille en kilo octect (ko)
$taille_max = $taille_ko*1024; // En octects
$dest_dossier = 'flv/'; // Creez ce dossier et chmoodez le !
if(isset($_FILES['photo'])) // Formulaire envoyé
{
// Les erreurs que PHP renvoi
if($_FILES['photo']['error'] !== "0") {
switch ($_FILES['photo']['error']) {
case 1:
$erreurs[] = "Votre vidéo doit faire moins de $taille_ko Ko !";
break;
case 2:
$erreurs[] = "Votre vidéo doit faire moins de $taille_ko Ko !";
break;
case 3:
$erreurs[] = "La vidéo n'a été que partiellement téléchargé.";
break;
case 4:
$erreurs[] = "Aucun fichier n'a été téléchargé.";
break; // Pas de 5, ne pas demander pourquoi ^^ (voir doc PHP)
case 6:
$erreur[] = "Un dossier temporaire est manquant.";
break;
case 7:
$erreurs[] = "èchec de l'écriture du fichier sur le disque.";
break;
}
}
// getimagesize arrive à traiter le fichier ?
if(!$getimagesize = getimagesize($_FILES['photo']['tmp_name'])) {
$erreurs[] = "Le fichier n'est pas une vidéo valide.";
}
// on vérifie le type de l'image
if( (!in_array( get_extension($_FILES['photo']['name']), $extensions_ok ))
or (!in_array($getimagesize[2], $typeimages_ok )))
{
foreach($extensions_ok as $text) { $extensions_string .= $text.', '; }
$erreurs[] = 'Veuillez sélectionner un fichier de type '.substr($extensions_string, 0, -2).' !';
}
// on vérifie le poids de l'image
if( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreurs[] = "Votre fichier doit faire moins de $taille_ko Ko !";
}

// copie du fichier si aucune erreur !
if(!isset($erreurs) or empty($erreurs))
{
$dest_fichier = basename($_FILES['photo']['name']);
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝà áâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// un chtit regex pour remplacer tous ce qui n'est ni chiffre ni lettre par "_"
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);

// pour ne pas ecraser un fichier existant
while(file_exists($dest_dossier . $dest_fichier)) {
$dest_fichier = rand().$dest_fichier;
}

// copie du fichier
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier)) {
$valid[] = "Image uploadé avec succés (<a href='".$dest_dossier . $dest_fichier."'>Voir</a>)";
} else {
$erreurs[] = "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dest_dossier." existe avec un chmod 755 (ou 777).";
}
}
}
?>

<form method="POST" action="" enctype="multipart/form-data">
<?php
if(!empty($erreurs)) {
echo '<ul class="erreur">';
foreach($erreurs as $erreur) {
echo '<li>'.$erreur.'</li>';
}
echo '</ul>';
}
if(!empty($valid)) {
echo '<ul class="validation">';
foreach($valid as $text) {
echo '<li>'.$text.'</li>';
}
echo '</ul>';
}

?>
<fieldset>
<legend>Envoi d'image</legend>
<p>
<label for="photo">Vidéo : </label>
<input type="file" name="photo" id="photo" />
</p>
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $taille_max; ?>" />
<input type="submit" name="envoi" value="Envoyer" />
</p>
</fieldset>
</form>


Et j'ai toujours des problèmes =>
- Les fichiers .FLV et .MP4 qui ont des espaces dans leur titre de fichier indique des erreurs.
- Les fichiers .FLV et .MP4 qui n'ont pas d'espaces dans leur titre de fichier n'indique pas d'erreur, mais rien ne ce passe, et il y a rien dans le dossier FLV...

Ps : J'ai Windows Vista, et j'ai lu sur des forums qu'il fallait mettre le dossier où attérrisser les fichier en CHMOD 755, hors, j'ai beau chercher [Le site est herberger sur mon ordi sous Wampserver 2.1], et je ne trouve pas comment mettre en CHMOD 755... Peut-être que l'erreur viendrais de là ?
Welcome to St tropez !
vipdev
le 03/10/2011 à 16:25
vipdev
Désoler, je me suis tromper, je suis actuellement entrain de coder un Uploader en même temps...

Donc j'ai fait un copier coller du tutorielle.. Donc pour les codes, go sur le "Comment faire une messagerie interne"
Welcome to St tropez !
moogli
le 04/10/2011 à 12:54
moogli
ton code a toi c'est mieux, simplement parce que, par exemple, ton 1er message d'erreur indique une erreur ligne 71 de membre.php alors que dans le tuto il n'y en a que 43 .....

a tu afficher la requete avant insertion ?
a tu vérifier le contenu de $_POST avant de l'utiliser ?

le tuto est fonctionnel, la globule l'a surement testé avant de le mettre en ligne et j'avais testé celui qui a donné a la globule de faire celui ci.

donc le mieux c'est debuguer envoyer.php avec un var_dump($_POST) en 1ère ligne et un var_dump($sql); avant le mysql_query().

sans ces infos on ne peux pas plus t'aider ;)

@+
Il en faut peu pour être heureux !!!!!
vipdev
le 04/10/2011 à 21:35
vipdev
Ok alors =>
Envoyer.php
<?php var_dump($_POST) ?>
<?php

if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') {
if (empty($_POST['destinataire']) || empty($_POST['titre']) || empty($_POST['message'])) {
$erreur = 'Au moins un des champs est vide.';
}
else {
$base = mysql_connect ('XXXXXX', 'XXXXXX', 'XXXXXXXX');
mysql_select_db ('XXXXXXX', $base);

$sql = 'INSERT INTO messages VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string($_POST['message']).'")';
var_dump($sql);
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

mysql_close();

header('Location: membre.php');
exit();
}
}
?>

<fieldset><legend>Envoyer un message</legend><br />

<?php
$base = mysql_connect ('XXXXXX', 'XXXXXX', 'XXXXXXXX');
mysql_select_db ('XXXXXXXX', $base);

$sql = 'SELECT account.username as nom_destinataire, account.id as id_destinataire FROM account WHERE id <> "'.$_SESSION['id'].'" ORDER BY username ASC';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows ($req);

if ($nb == 0) {
echo 'Vous ne pouvez pas envoyer de message !';
}
else {
?>
<form action="envoyer.php" method="post">
Pour : <select name="destinataire">
<?php
while ($data = mysql_fetch_array($req)) {
echo '<option value="' , $data['id_destinataire'] , '">' , stripslashes(htmlentities(trim($data['nom_destinataire']))) , '</option>';
}
?>
</select><br />
Titre : <input type="text" name="titre" value="<?php if (isset($_POST['titre'])) echo stripslashes(htmlentities(trim($_POST['titre']))); ?>"><br />
Message : <textarea name="message"><?php if (isset($_POST['message'])) echo stripslashes(htmlentities(trim($_POST['message']))); ?></textarea><br />
<input type="submit" name="go" value="Envoyer">
</form>
<?php
}
mysql_free_result($req);
mysql_close();
?>
</select>
</fieldset>


Voila.

La premiere ligne, correspond a la 58° ligne sur mon code [Avant c'est le haut de mon site (Menu et autre, rien a voir) ]
°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°

membre.php
<a href = "Envoyer.php"><br/><br/><hr/><br/>Envoyer un message</a>
<?php
$base = mysql_connect ('XXXXXXX', 'XXXXXXXX', 'XXXXXXXX');
mysql_select_db ('XXXXXXX', $base);

$sqlz = 'SELECT titre, date, account.username as expediteur, messages.id as id_message FROM messages, account WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=account.id ORDER BY date DESC';
$reqz = mysql_query($sqlz) or die('Erreur SQL !<br />'.$sqlz.'<br />'.mysql_error());
$nbz = mysql_num_rows($reqz);

if ($nbz == 0) {
echo '<br/>Vous n\'avez aucun message.';
}
else {
while ($dataz = mysql_fetch_array($reqz)) {
echo $dataz['date'] , ' - <a href="lire.php?id_message=' , $dataz['id_message'] , '">' , stripslashes(htmlentities(trim($dataz['titre']))) , '</a> [ Message de ' , stripslashes(htmlentities(trim($dataz['expediteur']))) , ' ]<br />';
}
}
mysql_free_result($reqz);
mysql_close();
?>


La premiere ligne correspond a la 66° lignes sur mon code, avant, c'est le menu et tout...
°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°

Et voila ;)
Welcome to St tropez !
vipdev
le 04/10/2011 à 21:39
vipdev
TABLE Messages =>
[URL=http://www.hostingpics.net/viewer.php?id=430319VIPDEV.jpg][IMG]http://img4.hostingpics.net/pics/430319VIPDEV.jpg[/IMG][/URL]
Welcome to St tropez !
Répondre
LoadingChargement en cours