Redirection après erreur SQL pour données non trouvées.

Développement, conception de sites web, PHP, (X)HTML, ASP, Ajax, CSS, Javascript, Flash, MySQL, et autres ont leurs entrées dans cette section. On peut aussi parler d'hébergement, de maintenance, de sécurité...

Modérateur: Modérateurs

Redirection après erreur SQL pour données non trouvées.

Messagepar Dash22 » 24 Juin 2008 11:01

Bonjour,

Je gère un site qui comprend plus de 1400 Tv, que j'ajoute sur une base donnée MySQL via l'addon d'un cms.

A chaque nouvel ajout, l'url de ce type /modules.php?name=Video_Stream&page=watch&id=558 et incrémentée d'un. Donc 558, 559, 560

Le problème et que quand je supprime une tv, et qu'un visiteur veut acceder à la page ou se trouvait cette tv, il voit une erreur SQL.
Celle-là :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


Je cherche un moyen de remplacer ce texte par un message disant aux visiteurs que cette tv n'existe plus, ou simplement un moyen de les rediriger sur la page d'acceuil.

Quelle stratégie me conseillez-vous ? :roll:
Image
1700 TV Live Gratuite, dont 85 de langue française : FreeeTV.com
Avatar de l’utilisateur
Dash22
Libellulien
Libellulien
 
Messages: 65
Inscription: 25 Jan 2005 02:49
Localisation: Lausanne

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Falkra » 24 Juin 2008 11:06

Bonjour, il s'agit d'un problème de conception de l'addon, visiblement.

Si tu mets une valeur qui n'existe pas, par exemple 889, ça fait pareil ?

Une solution batarde consisterait à remplir une ficher vide pour la TV que tu supprimes, ou avec en descriptif "cette tv n'est plus disponible", plus de plantage et un message clair, mais ce n'est qu'un palliatif, ça.
Avatar de l’utilisateur
Falkra
Admin libellules.ch
Admin libellules.ch
 
Messages: 24424
Inscription: 30 Jan 2005 13:44
Localisation: 127.0.0.1

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Dash22 » 24 Juin 2008 11:12

Bonjour Falkra,

Oui avec une autre id qui n'existe pas c'est pareil. 50300 par ex.

Oui c'est une bonne idée à défaut d'autres choses.

J'en ai just pour 10 ou 20 heures à faire ça id vide apres id vide. depus 18 mois, j'ai effacé 700 tv :wink:

Merci!
Image
1700 TV Live Gratuite, dont 85 de langue française : FreeeTV.com
Avatar de l’utilisateur
Dash22
Libellulien
Libellulien
 
Messages: 65
Inscription: 25 Jan 2005 02:49
Localisation: Lausanne

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Falkra » 24 Juin 2008 11:16

Attends avant de te lancer là dedans, ça fait trop là.

La requête est mal conçue, si ça plante quand on met un mauvais chiffre, tu as le code de la requête sous la main ?
Avatar de l’utilisateur
Falkra
Admin libellules.ch
Admin libellules.ch
 
Messages: 24424
Inscription: 30 Jan 2005 13:44
Localisation: 127.0.0.1

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Dash22 » 24 Juin 2008 11:33

Je n'y connais pas grand chose et ne suis pas sûr de repérer quelle est cette requette.

Voici le fichier qui permet d'ajouter des tv. Il est assez long:

<?php
/************************************************************************/
/* PHP-NUKE: Advanced Content Management System */
/* ============================================ */
/* ADMIN SECTION */
/* Video Stream Module for PHP-Nuke with many features */
/* */
/* Copyright (c) 2006 by Scott Cariss (Brady) */
/* http://www.steezmatic-designs.com */
/* */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License. */
/************************************************************************/
LinkAdmin();
VideoStreamMenu();

if($_POST['ADDIT']) {
$T = $_POST['title']; $D = $_POST['description']; $DD = $_POST['description2']; $U = $_POST['url']; $C = $_POST['picurl'];
$SU = $_POST['siteurl'];$CA = $_POST['category']; $NCA = $_POST['newcategory'];
$W = $_POST['width']; $H = $_POST['height']; $P = $_POST['plugin']; $date = date("h:i A dS M Y"); $TI = $_POST['thumbimg'];
cookiedecode($user);
$username = $cookie[1];
if ($username == "") {
$username = "Anonymous";
}
OpenTable();
$result = $db->sql_query("INSERT INTO ".$prefix."_video_stream (vidname, flash, user, date, description, description2, url, imgurl, siteurl, thumbimg, width, height, category, newcategory, request) VALUES('$T', '$P', '$username', '$date', '$D', '$DD','$U', '$C', '$SU', '$TI', '$W', '$H', '$CA','$NCA', '0') ");
echo ""._VIDADDED."";
CloseTable();
echo "<br>";
}
OpenTable();
echo "<style type='text/css'> .redstar {color: #FF0000;} </style>\n"
."<form name='form1' method='post' action=''>\n"
."<table width='360' border='0' cellspacing='0' cellpadding='0'>\n"
." <tr>\n"
." <td colspan='3'><div align='center' class='title'>"._ADDVID."</div></td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>"._TITLE."<span class='redstar'>*</span></td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'><input type='text' name='title'></td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='1'>"._COUNTRY."</td>\n"
." <td colspan='2'>"._CATEGORY."</td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='1'>\n"
." <select name='category'>\n"
." <option value='0'>--"._NONE."--</option>\n";
$result9 = $db->sql_query("SELECT * FROM ".$prefix."_video_stream_categories");
while($row9 = $db->sql_fetchrow($result9)) {
$cid2 = intval($row9['id']);
$ctitle2 = $row9['name'];
$parentid2 = intval($row9['parent']);
if ($parentid2!=0) {
$ctitle2 = getparent($parentid2,$ctitle2);
}
echo " <option value='$cid2'>$ctitle2</option>\n";
}
echo " </select>\n"
." </td>\n"
// CC____
." <td colspan='2'>\n"
." <select name='newcategory'>\n"
." <option value='0'>--"._NONE."--</option>\n";
$result_cats = $db->sql_query("SELECT * FROM ".$prefix."_video_stream_categories_new");
while($newcats = $db->sql_fetchrow($result_cats)) {
$ncid2 = intval($newcats['id']);
$nctitle2 = $newcats['name'];
echo " <option value='$ncid2'>$nctitle2</option>\n";
}
echo " </select>\n"
." </td>\n"

//______CC
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td height='20' colspan='3'>"._DESCRIPTION."<span class='redstar'>*</span></td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'><textarea name='description' cols='35' rows='5'></textarea></td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td height='20' colspan='3'>"._DESCRIPTION."<span class='redstar'>*</span></td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'><textarea name='description2' cols='35' rows='5'></textarea></td>\n"
." </tr>\n"

." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td width='170'>"._EMBEDVIDURL."<span class='redstar'>*</span></td>\n"
." <td>"._PPURL."</td>\n"
." <td>"._SITEURL."</td>\n"." </tr>\n"
." <tr>\n"
." <td><input type='text' name='url'></td>\n"
." <td><input type='text' name='picurl'></td>\n"
." <td>&nbsp;<input type='text' name='siteurl'></td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td>"._PICTHUMB."</td>\n"
." <td>&nbsp;</td>\n"
." <td>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td><input type='text' name='thumbimg'></td>\n"
." <td>&nbsp;</td>\n"
." <td>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td>"._WIDTH."<span class='redstar'>*</span></td>\n"
." <td>"._HEIGHT."<span class='redstar'> *</span></td>\n"
." <td>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td><input name='width' type='text' value='350' maxlength='3'></td>\n"
." <td><input name='height' type='text' value='350' maxlength='3'></td>\n"
." <td>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>"._PLUGIN."<span class='redstar'>*</span></td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>\n";
// Show plugins available
include('modules/Video_Stream/plugins/index.php');
echo " <select name='plugin'>\n";
foreach($vs_plugins as $pid => $plugin_info) {
$plugin_info = explode('::', $plugin_info);
if ($pid == 0) {$selected = "selected";}
echo " <option value='".$pid."' ".$selected.">".$plugin_info[0]."</option>\n";
$selected = "";
}
echo " </select>\n"
." &nbsp;&nbsp;&nbsp;<span class='redstar'> *</span>"._REQUIRED."\n"
." </td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'>&nbsp;</td>\n"
." </tr>\n"
." <tr>\n"
." <td colspan='3'><input type='submit' name='ADDIT' value='"._ADDVID."'></td>\n"
." </tr>\n"
."</table>\n"
."</form>\n";
CloseTable();
?>


Pour info j'ai posé la même question sur le forum de webrankinfo et j'ai eu cette réponse si ça peut te donner une indication.
juste après ta première requête qui utilise l'id que tu passes en paramètres, tu testes si les données sont vides ou pas (le tableau construit avec mysql_fetch_assoc() ou mysql_fetch_array())


Ji'ai fait une recherche avec notepad ++ dans tout les fichiers du modules et dans d'autre dossier du csm sans trouver ces deux requètes :
mysql_fetch_assoc() ou mysql_fetch_array


J'ai aussi commencé par chercher le texte de l'erreur dans les fichier languages du modules et du cms en pensant le remplacer par un message d'avertissement, mais visibleblement ce texte doit venir de mysql et non d'un fichier du site. Je me trompe ?

Le problème vient peut-être aussi du fichier watch.php (celui qui affiche les pages de visionnement des tv)
Voici le début du code qui fait référence à l'id de la page.
$id = $_GET['id'];
$request = $_GET['request'];
if($id == "request") {
// Gets the data of request video **FOR ADMIN**
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$request'");
$row = $db->sql_fetchrow($result);
} else {
// Check if category is adult category and requires user to accept disclaimer or if required ofr the user to be registered
adultcategory($id);

// adds a view to the video
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$id'");
$row = $db->sql_fetchrow($result);
$v = $row['views'];
$v++;
$result = $db->sql_query("UPDATE ".$prefix."_video_stream SET views='$v' WHERE id='$id'");
// Gets the data of that video
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$id'");
$row = $db->sql_fetchrow($result);
}
Image
1700 TV Live Gratuite, dont 85 de langue française : FreeeTV.com
Avatar de l’utilisateur
Dash22
Libellulien
Libellulien
 
Messages: 65
Inscription: 25 Jan 2005 02:49
Localisation: Lausanne

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar BigZ » 24 Juin 2008 12:12

Dash22 a écrit:Le problème vient peut-être aussi du fichier watch.php (celui qui affiche les pages de visionnement des tv)
Voici le début du code qui fait référence à l'id de la page.
$id = $_GET['id'];
$request = $_GET['request'];
if($id == "request") {
// Gets the data of request video **FOR ADMIN**
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$request'");
$row = $db->sql_fetchrow($result);
} else {
// Check if category is adult category and requires user to accept disclaimer or if required ofr the user to be registered
adultcategory($id);

// adds a view to the video
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$id'");
$row = $db->sql_fetchrow($result);
$v = $row['views'];
$v++;
$result = $db->sql_query("UPDATE ".$prefix."_video_stream SET views='$v' WHERE id='$id'");
// Gets the data of that video
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$id'");
$row = $db->sql_fetchrow($result);
}


Hello,

Le problème vient bien du fichier watch à mon avis.

C'est assez dur de modifier un bout de code comme ça, sans avoir la totale...mais essaie cela :

Après
$row = $db->sql_fetchrow($result);

Ajoute :

$num_rows = mysql_num_rows($result);
if($num_rows=="") {
echo "Cette TV n'existe plus!";
}

Juste pour voir, et dit nous si tu vois "Cette TV n'existe plus!" sur les enregistrements que tu as supprimé
Avatar de l’utilisateur
BigZ
Libellulien Junior
Libellulien Junior
 
Messages: 496
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Dash22 » 24 Juin 2008 12:21

$request = $_GET['request'];
if($id == "request") {
// Gets the data of request video **FOR ADMIN**
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$request'");
$row = $db->sql_fetchrow($result);
$num_rows = mysql_num_rows($result);
if($num_rows=="") {
echo "Cette TV n'existe plus!";
}


} else {
// Check if category is adult category and requires user to accept disclaimer or if required ofr the user to be registered
adultcategory($id);

// adds a view to the video
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$id'");
$row = $db->sql_fetchrow($result);
$num_rows = mysql_num_rows($result);
if($num_rows=="") {
echo "Cette TV n'existe plus!";
}

$v = $row['views'];
$v++;
$result = $db->sql_query("UPDATE ".$prefix."_video_stream SET views='$v' WHERE id='$id'");
// Gets the data of that video
$result = $db->sql_query("SELECT * FROM ".$prefix."_video_stream WHERE id='$id'");
$row = $db->sql_fetchrow($result);
$num_rows = mysql_num_rows($result);
if($num_rows=="") {
echo "Cette TV n'existe plus!";
}


Ok j'ai inséré après la ligne, et pour le code rouge rien n'apprait. Par contre les codes verts cela met le message "cette tv n'existe plus en haut de page(sur la bannière) mais n'enlève pas le message d'erreur sql.
Par contre rien n'apparait sur les tv fonctionelles :)

On avance ?


Si besoin vous pouvez télécharger le fichier watch.txt et le renomer en watch.php http://www.freeetv.com/forum/watch.txt Il est trop long pour être mis ici.

Ou carrément le dossier du module.
http://www.freeetv.com/forum/Video_Stream.rarhttp://www.freeetv.com/forum/Video_Stream.rar
Dernière édition par Dash22 le 24 Juin 2008 12:31, édité 3 fois.
Image
1700 TV Live Gratuite, dont 85 de langue française : FreeeTV.com
Avatar de l’utilisateur
Dash22
Libellulien
Libellulien
 
Messages: 65
Inscription: 25 Jan 2005 02:49
Localisation: Lausanne

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar BigZ » 24 Juin 2008 12:22

MDR, je ferai pas un bon créateur de MOD... :ptdr:

La dernière....tout a la fin...
Avatar de l’utilisateur
BigZ
Libellulien Junior
Libellulien Junior
 
Messages: 496
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Dash22 » 24 Juin 2008 12:27

Bonjour BigZ :-D

C'est dans le dernier emplacement ? et je fais quoi pour faire disparaitre l'erreur. Est-ce que je peux remplacer le message "cette tv n'existe plus" par une redirection vers la home page ?
Image
1700 TV Live Gratuite, dont 85 de langue française : FreeeTV.com
Avatar de l’utilisateur
Dash22
Libellulien
Libellulien
 
Messages: 65
Inscription: 25 Jan 2005 02:49
Localisation: Lausanne

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar BigZ » 24 Juin 2008 12:31

On avance clairement :supers:

plusieurs options :

1.
$num_rows = mysql_num_rows($result);
if($num_rows=="") {
echo "Cette TV n'existe plus!";
exit();
}
:arrow: Je pense que ça risque de faire des réaction étranges à ton design...

2.
$num_rows = mysql_num_rows($result);
if($num_rows=="") {
echo '<SCRIPT LANGUAGE="JavaScript">
alert ("Désolé cette TV n\'existe plus :(")
window.location.replace("http://www.google.com");
</SCRIPT>';
}
:arrow: remplace Google par l'adresse de ton site (ou de la redirection que tu veux)

Sinon moi c'est une solution que j'aime bien la 2 :crazy:
Avatar de l’utilisateur
BigZ
Libellulien Junior
Libellulien Junior
 
Messages: 496
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Dash22 » 24 Juin 2008 12:39

C'est excellent, j'ai pris la slution 2 et ça marche parfaitement avec en plus un joli message popup ^^

Voir l'exemple de cette url.

http://www.freeetv.com/modules.php?name=Video_Stream&page=watch&id=18492

Merci BigZ et Falkra :-D :-D
Image
1700 TV Live Gratuite, dont 85 de langue française : FreeeTV.com
Avatar de l’utilisateur
Dash22
Libellulien
Libellulien
 
Messages: 65
Inscription: 25 Jan 2005 02:49
Localisation: Lausanne

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar BigZ » 24 Juin 2008 12:42

Ravi que ça te convienne. :supers:

A bientôt.

BigZ
Avatar de l’utilisateur
BigZ
Libellulien Junior
Libellulien Junior
 
Messages: 496
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Dash22 » 24 Juin 2008 12:46

Oui c'est parfait!

Une toute dernière question, dans le message d'alerte les <br> ne fonctionnent pas, il y a une alternative ? :wink:

echo '<SCRIPT LANGUAGE="JavaScript">
alert ("Sorry this channel is not working. <br>Clic to ok to go in the FreeeTV Home page on watch on of the 1400 Free Channels. <br><br>Désolé cette TV n\'existe plus. <br>Cliquez sur ok pour allez sur la page d acceuil de FreeeTV et choissiez une des 1400 TV gratuite ")
window.location.replace("http://www.freeetv.com");
</SCRIPT>';


Bon soleil !
Image
1700 TV Live Gratuite, dont 85 de langue française : FreeeTV.com
Avatar de l’utilisateur
Dash22
Libellulien
Libellulien
 
Messages: 65
Inscription: 25 Jan 2005 02:49
Localisation: Lausanne

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar BigZ » 24 Juin 2008 12:53

Remplace les <br> par des \n

Code: Tout sélectionner
echo '<SCRIPT LANGUAGE="JavaScript">
alert ("Sorry this channel is not working. \nClic to ok to go in the FreeeTV Home page on watch on of the 1400 Free Channels. \n\nDésolé cette TV n\'existe plus. \nCliquez sur ok pour allez sur la page d acceuil de FreeeTV et choissiez une des 1400 TV gratuite ")
window.location.replace("http://www.freeetv.com");
</SCRIPT>';
Avatar de l’utilisateur
BigZ
Libellulien Junior
Libellulien Junior
 
Messages: 496
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Dash22 » 24 Juin 2008 12:57

Merci :supers:
Image
1700 TV Live Gratuite, dont 85 de langue française : FreeeTV.com
Avatar de l’utilisateur
Dash22
Libellulien
Libellulien
 
Messages: 65
Inscription: 25 Jan 2005 02:49
Localisation: Lausanne

Re: Redirection après erreur SQL pour données non trouvées.

Messagepar Falkra » 24 Juin 2008 12:58

Super ! :supers:
Avatar de l’utilisateur
Falkra
Admin libellules.ch
Admin libellules.ch
 
Messages: 24424
Inscription: 30 Jan 2005 13:44
Localisation: 127.0.0.1


Retourner vers Développement, conception de sites web

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités